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 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 - 27 août 2021 à 10:43
f894009 Messages postés 17239 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 10 février 2025 - 27 août 2021 à 10:43
A voir également:
- VBA : générer une liste selon le nom des employés
- Excel compter cellule couleur sans vba - Guide
- Mkdir vba ✓ - Forum VB / VBA
- Vba range avec variable ✓ - Forum VB / VBA
- L'indice n'appartient pas à la sélection vba ✓ - Forum Programmation
- Autofill vba ✓ - Forum Excel
3 réponses
f894009
Messages postés
17239
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
10 février 2025
1 713
26 août 2021 à 16:56
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:
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
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
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.
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.
f894009
Messages postés
17239
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
10 février 2025
1 713
27 août 2021 à 10:43
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
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