Se connecter avec
S'enregistrer | Connectez-vous

Macro Excel - Cellules "vides" et conditions

Dernière réponse : dans Programmation

Bonjour,

J'ai fait une macro basique via l'enregistreur pour ajouter un nouvel utilisateur dans une liste et changé qques petits trucs.

On doit renseigner 8 champs et 7 autres se font automatiquement avec des formules de recherchev et de si.

Mon problème vient d'une part que je sélectionne une plage maxi d'utilisateurs à rajouter (46) et cette plage contient les formules qui sont recopiées en valeur sur la liste des utilisateurs. De ce fait, même si il n'y a pas d'utilisateur à ajouter, il y a toujours des formules qui donnent des cases où il n'y a rien dans la liste, mais qui sont comptées comme des cellules non-vides.

Après ça, il serait peut-être judicieux de juste chercher les colonnes où on a rempli qqc pour éviter la recopie de toute les formules.

Comment puis-je faire ?
Voici déjà la mini-macro

  1. Sub AjoutUsers()
  2.  
  3. Application.ScreenUpdating = False
  4.  
  5. MsgBox ("Merci d'attendre la fin de la mise à jour")
  6. Worksheets("Utilisateurs").Select
  7. Selection.AutoFilter Field:=3 'Remettre le filtre auto à 0
  8. Worksheets("Ajout Users").Select
  9. Range("A5:O50").Select 'Sélectionner la plage maxi d'utilisateurs à ajouter
  10. Selection.Copy
  11. Worksheets("Utilisateurs").Activate
  12. Range("A" & Range("A65535").End(xlUp).Row + 1).Select
  13. Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  14. :=False, Transpose:=False 'Coller la sélection d'utilisateurs
  15. 'Vider les cellules renseignées
  16. Worksheets("Ajout Users").Select
  17. Range("C5:C50").Select
  18. Selection.ClearContents
  19. Range("G5:G50").Select
  20. Selection.ClearContents
  21. Range("H5:H50").Select
  22. Selection.ClearContents
  23. Range("I5:I50").Select
  24. Selection.ClearContents
  25. Range("J5:J50").Select
  26. Selection.ClearContents
  27. Range("K5:K50").Select
  28. Selection.ClearContents
  29. Range("M5:M50").Select
  30. Selection.ClearContents
  31. Range("N5:N50").Select
  32. Selection.ClearContents
  33. Range("A1").Select
  34. MsgBox ("Utilisateur(s) ajouté(s)")
  35.  
  36. Application.ScreenUpdating = True
  37.  
  38. End Sub



Question bonus :
Je souhaiterais appliquer une condition au rajout d'un utilisateur dans la liste (nom et matricule précisemment). Comment puis-je indiquer que la macro doit s'arrêter si matricule + nom sont retrouvés dans la liste ? Et est-il possible que nom+matricule s'affichent dans une msgbox ?


J'espère avoir été assez clair dans mes explications.
Merci d'avance pour vos réponses qui m'aideront beaucoup
Lassé par la pub ? Créez un compte
Lassé par la pub ? Créez un compte