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

Turpinou Messages postés 442 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
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

--
S'il n'y pas de solution c'est parce qu'il n'y pas de problème  

3 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  2. Turpinou Messages postés 442 Statut Membre 36
     
    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
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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