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
Sub AjoutUsers()
Application.ScreenUpdating = False
MsgBox ("Merci d'attendre la fin de la mise à jour")
Worksheets("Utilisateurs").Select
Selection.AutoFilter Field:=3 'Remettre le filtre auto à 0
Worksheets("Ajout Users").Select
Range("A5:O50").Select 'Sélectionner la plage maxi d'utilisateurs à ajouter
Selection.Copy
Worksheets("Utilisateurs").Activate
Range("A" & Range("A65535").End(xlUp).Row + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False 'Coller la sélection d'utilisateurs
'Vider les cellules renseignées
Worksheets("Ajout Users").Select
Range("C5:C50").Select
Selection.ClearContents
Range("G5:G50").Select
Selection.ClearContents
Range("H5:H50").Select
Selection.ClearContents
Range("I5:I50").Select
Selection.ClearContents
Range("J5:J50").Select
Selection.ClearContents
Range("K5:K50").Select
Selection.ClearContents
Range("M5:M50").Select
Selection.ClearContents
Range("N5:N50").Select
Selection.ClearContents
Range("A1").Select
MsgBox ("Utilisateur(s) ajouté(s)")
Application.ScreenUpdating = True
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