VBA: client blacklisté ? via un 2nd fichier

Fermé
Adeline - 22 déc. 2011 à 13:29
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 22 déc. 2011 à 18:43
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

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
22 déc. 2011 à 18:43
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

0