[Resolu]boucle de recherche qui ne trouve pas la référence

Niquido

XLDnaute Junior
Bonjour à tous,

Voilà je suis nul avec les boucles et je me prend la tête pouvez-vous m'aider svp?

Je souhaiterais que mes références du tableau3 soient recherchées dans le tableau4 et si ces dernières y existe renvoyer dans mon tableau 3 les infos 1 & 2 et si la référence n'existe pas la mettre en évidence.

Attention il faut savoir qu'il peut y avoir un changement d'indice sur chaque références et il faudrait arriver à faire comme je le montre avec les flèches dans le fichier joint.
voici les différents cas pour moi:
  1. si les références sont de la forme : XXXXX-A, XXXXX-XXXXXX-B, XX-XXX-D il faudrait prendre seulement les digits à gauche du -A ou -B ou -C ect... pour les rechercher dans le tableau4. exemple : si je recherche la référence du tableau3 ABC-123456789-B dans le tableau4 qui lui à la référence ABC-123456789-A il est préférable de rechercher la référence ABC-123456789
  2. si la référence ne se termine pas par -X rechercher la référence tel quelle dans le tableau4
  3. si la référence n'est pas trouvée colorier la cellule par exemple
Le truc en plus normalement mes deux tableau sont dans des feuille différentes, mais là je pense pouvoir arriver à l'adapter, enfin j'espère. ;)

Vous verrez il y à 2 cas de beug quand on exécute la macro.

J'espère que j'ai tout bien expliqué ce que je souhaitais faire, et que si vous voyez une erreur dans mon code vous pourrez me le dire.
Si vous avez besoin de plus d'info n'hésitez par.
Merci d'avance.
 

Pièces jointes

  • besoin1.xlsm
    23.7 KB · Affichages: 50

Hieu

XLDnaute Impliqué
Salut,
je ne suis pas sûr de comprendre le "Else" de ta condition, mais une idée, déjà, pour corriger la formule de ligne ; perso, j'préfère utiliser la fonction equiv d'excel plutot qu'un ctrl+f :
VB:
Sub auto_clustering()
Set WF = WorksheetFunction
'il faut retrouver les cluster des issue précédentes avant de supprimer les lignes
    n = WF.CountA(Sheets("Feuil1").Columns(1))    ' compte le nombre de ligne
        For i = 2 To n
            valeur = Cells(i, 1).Value
            longueur = Len(valeur)
            issu = Right(valeur, 2)
                If Left(issu, 1) = "-" Then
                    issu_a_rechercher = Left(valeur, longueur - 2)
                    'BEUG A CAUSE DE L ISSU
                    Ligne = WF.Match(issu_a_rechercher & "*", Sheets("Feuil2").Range("a:a"), 0)
                    Sheets("Feuil1").Cells(i, 2).Value = Sheets("Feuil2").Cells(Ligne, 3).Value
                    Sheets("Feuil1").Cells(i, 3).Value = Sheets("Feuil2").Cells(Ligne, 4).Value
                  
                Else
                    's'il trouve la valeur il renseigne les champs Cluster et Ss-cluster
                    'Set
                    Ligne = WF.Match(issu_a_rechercher & "*", Sheets("Feuil2").Range("a:a"), 0)
                        'If Ligne Is Nothing Then
                            Sheets("Feuil1").Cells(i, 2).Value = Sheets("Feuil2").Cells(Ligne, 3).Value
                            Sheets("Feuil1").Cells(i, 3).Value = Sheets("Feuil2").Cells(Ligne, 4).Value
                        'Else
                         '   Workbooks("besoin1.xlsm").Worksheets("Feuil1").Cells(i, 2).Value = Workbooks("besoin1.xlsm").Worksheets("Feuil2").Cells(Ligne, 3).Value
                         '   Workbooks("besoin1.xlsm").Worksheets("Feuil1").Cells(i, 3).Value = Workbooks("besoin1.xlsm").Worksheets("Feuil2").Cells(Ligne, 4).Value
                       ' End If
                        'BEUG QUAND IL NE TROUVE PAS LA VALEUR
                End If
        Next i
          
End Sub
 

Discussions similaires

Réponses
5
Affichages
139