VBA : générer une liste selon le nom des employés
Turpinou
Messages postés
375
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 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
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
A voir également:
- VBA : générer une liste selon le nom des employés
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
3 réponses
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:
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
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.
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.
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
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
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