VBA : générer une liste selon le nom des employés

Fermé
Turpinou Messages postés 375 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 17 décembre 2021 - 26 août 2021 à 14:28
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 27 août 2021 à 10:43
Bonjour à tous,

J'essaye de créer un petit code VBA afin d'obtenir à la clé une liste de mail selon les participants de l'exercice.

L'idée serait :

--> d'identifier le nom des personnes concernés inscrites à l'évènement en colonne A dans la liste globale de l'entreprise en colonne B.

--> Une fois les personnes identifiées, générer une liste des adresses mails associés à chaque personne de l'entreprise.

J'espère être clair, petit fichier joint pour illustrer mon propos.



Afin d'identifier les personnes (étape 1) il est possible de le faire très simplement avec une mise en forme conditionnelle. Mais qu'en est il en VBA ?

J'ai très peu de notion en VBA mais avec votre d'aide ça devrait le faire.

D'avance merci

3 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
26 août 2021 à 16:56
Bonjour,

une facon de faire.
Adaptez les lettres colonnes
l'adresse @mail apparaitra des que vous aurez valide le nom (entrer ou changement de cellule)

Code a mettre dans le VBA de la feuille:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    derlig = Range("C" & Rows.Count).End(xlUp).Row
    If Not Application.Intersect(Target, Range("A2:A" & derlig)) Is Nothing Then
        Lig = Target.Row
        Set trouv = Columns("C").Find(Target.Value, , , xlWhole)
        If Not trouv Is Nothing Then
            Range("F" & Lig) = trouv.Offset(, 1)
        Else
            Range("F" & Lig) = ""
        End If
    End If
End Sub
1
Turpinou Messages postés 375 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 17 décembre 2021 36
27 août 2021 à 09:55
Merci infiniment d'avoir codé l'engin. Maintenant j'avoue ne pas le comprendre : y aurait-il moyen d'expliquer les lignes s'il vous plait ?

En outre, je n'arrive pas à lancer la macro : en effet elle n'apparait pas dans la liste des macros. En enlevant le "private" rien n'y fait non plus. A moins que tout ne soit automatique et qu'il n'y est pas besoin de lancer manuellement la macro ?

Merci encore et navré pour mon retard en vba, j'y remédie actuellement.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
27 août 2021 à 10:43
Bonjour,

J'ai enleve la partie RAZ et surtout rectifie la mise en liste qui ne convenait pas.
Pour la partie RAZ sur cellule A vide ou contenu remplace par un autre, il faudrait avoir une liste supplementaire pour ecrire l'adresse au bon endroit a la place de la precedente
Mais ceci est une autre histoire

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub       'une seule cellule concernee
    derlig = Range("C" & Rows.Count).End(xlUp).Row      'derniere cellule non vide colonne B
    'changement pris en compte uniquement pour les cellules colonne A
    'de A2 a la cellule a hauteur de la derniere colonne B
    If Not Application.Intersect(Target, Range("A2:A" & derlig)) Is Nothing Then    'changement uniquement pour les cellules colonne A
        Lig = Target.Row        ' ligne de la cellule en cours
        If Target.Value <> "" Then  'cellule colonne A non vide
            Set trouv = Columns("C").Find(Target.Value, , , xlWhole)    'recherche dans colonne C le contenu de le cellule A
            If Not trouv Is Nothing Then    'si trouvee
                PCV = Range("F" & Rows.Count).End(xlUp).Row + 1   'derniere cellule non vide colonne F
                Range("F" & PCV) = trouv.Offset(, 1)    'ecriture de l'adresse @Mail colonne F (les unes en dessous des autres)
            End If
        End If
    End If
End Sub


Ce code est a mettre dans le VBA de la feuille ou vous avez vos donnees
Ouvrir votre fichier
Appuyez sur les touches alt+F11 pour ouvrir la fenetre VBA
Cote gauche de la fenetre VBA vous devez voir le nom de votre feuille
Double click sur cette feuille
Collez le code dans le fenetre qui s'est ouverte

N'oubliez pas d'enregistrer en xlsm si office 2007 et plus
0