VBA: client blacklisté ? via un 2nd fichier
Adeline
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour !
Je souhaiterais avoir une macro (excel 2007) dans mon fichier , qui lorsqu'elle est activée, ouvre le 2nd fichier "Blacklist.xls" (situé dans le même répertoire que le premier fichier) et scan la colonne A du fichier 2 (blacklist.xls).
Colonne A du fichier 2 (blacklist.xls) ( et sauf ligne 1 car entête de colonnes) ce sont des noms de clients (ou des noms de société). yen a 1500 lignes pour le moment mais c'est voué à augmenter
Le fichier 1 est une liste de dossiers avec en colonne G le nom des clients et en colonne H le nom de la société pour chaque ligne.
L'idée, c'est d'indiquer, en colonne AB du fichier 1 si le client ou sa société à demander à être blakclisté.
Pour résumer, si le nom du client (fichier 1 col G) ou sa société (fichier 1 col H) sont présent dans la colonne A de la blaclist.xls (fichier2), alors indiquer "Client Blacklisté" en colonne AB du fichier 1 (ou se situerait la macro).
D'une certaine façon, la macro serait un vlookup entre colonne G et H fichier 1 versus col A de la blacklist et qui mettent "client blacklisté" coll AB fichier 1 en tant que résultat quand ça match.
Laisser vide si le nom du client ou sa compagnie n'apparaissent pas dans la blacklist.
Les 2 fichiers ont 1 entête, donc les informations qui nous interressent commencent à partir de la ligne 2.
J'espère avoir été claire :)
MErci à vous !!!!
Adeline
Je souhaiterais avoir une macro (excel 2007) dans mon fichier , qui lorsqu'elle est activée, ouvre le 2nd fichier "Blacklist.xls" (situé dans le même répertoire que le premier fichier) et scan la colonne A du fichier 2 (blacklist.xls).
Colonne A du fichier 2 (blacklist.xls) ( et sauf ligne 1 car entête de colonnes) ce sont des noms de clients (ou des noms de société). yen a 1500 lignes pour le moment mais c'est voué à augmenter
Le fichier 1 est une liste de dossiers avec en colonne G le nom des clients et en colonne H le nom de la société pour chaque ligne.
L'idée, c'est d'indiquer, en colonne AB du fichier 1 si le client ou sa société à demander à être blakclisté.
Pour résumer, si le nom du client (fichier 1 col G) ou sa société (fichier 1 col H) sont présent dans la colonne A de la blaclist.xls (fichier2), alors indiquer "Client Blacklisté" en colonne AB du fichier 1 (ou se situerait la macro).
D'une certaine façon, la macro serait un vlookup entre colonne G et H fichier 1 versus col A de la blacklist et qui mettent "client blacklisté" coll AB fichier 1 en tant que résultat quand ça match.
Laisser vide si le nom du client ou sa compagnie n'apparaissent pas dans la blacklist.
Les 2 fichiers ont 1 entête, donc les informations qui nous interressent commencent à partir de la ligne 2.
J'espère avoir été claire :)
MErci à vous !!!!
Adeline
1 réponse
-
Bonjour
macro non testée: au besoin:
mettre un extrait (200 lignes) des classeurs sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
et faire un clic droit sur le lien proposé puis "copier l'adresse du lien" et coller dans le message de réponse
Const source As String = "feuil1" 'nom de l'onglet fichier blacklist à adapter Const cible As String = "feuil1" 'nom de l'onglet fichier maitre à adapter 'si le nom du client (fichier 1 col G) ou sa société (fichier 1 col H) sont présent _ dans la colonne A de la blaclist.xls (fichier2), alors indiquer "Client Blacklisté" en _ colonne AB du fichier 1 (ou se situerait la macro). Sub signaler_liste_noire() Dim Black As Object, Derlig As Integer, Cptr As Integer Dim T_out, T_cible ChDir ThisWorkbook.Path Workbooks.Open Filename:="blacklist.xls" Set Black = CreateObject("scripting.dictionary") With Sheets(source) Derlig = .Columns("A").Find("*", , , , , xlPrevious).Row For Cptr = 2 To Derlig ref = .Cells(Cptr, "A") If Not Black.exists(ref) Then Black.Add ref, "" Next End With ActiveWorkbook.Close With Sheets(cible) Derlig = .Columns("G").Find("*", , , , , xlPrevious).Row ReDim T_out(Derlig - 1) T_cible = (.Range("G2:H" & Derlig).Value) For Cptr = 1 To UBound(T_cible) If Black.exists(T_cible(Cptr, 1)) Or Black.exists(T_cible(Cptr, 2)) Then _ T_out(Cptr) = "client blacklisté" Next .Range("AB2").Resize(UBound(T_out), 1) = Application.Transpose(T_out) End With End Sub