VBA: client blacklisté ? via un 2nd fichier

Adeline -  
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

1 réponse

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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