Recherche correspondance multiple dans deux feuilles
Bonjour,
J'ai un petit soucis au boulot que je n'arrive pas à résoudre.
Mon cas est le suivant.
Dans un premier tableau j'ai une liste de référence. Dans mon deuxième tableau, j'ai une liste de références qui sont toutes contenues dans le premier tableau. Je voudrais pouvoir faire une correspondance dans le premier tableau.
Oui mais voilà, j'ai plusieurs problèmes auxquels je bute :
D'abord, pour une référence du premier tableau, j'ai plusieurs références similaires dans le second. J'aimerais donc créer des lignes à chaque fois qu'il trouve une occurence.
Ensuite, les références de mon second tableau présentent parfois des espaces à la fin, ce qui ne me permet pas de les identifier...
Voir l'exemple en pièce jointe.
J'ai tenté pleins de trucs avant mais je bloque tjs à un moment, là j'ai essayé un truc vite fait mais je bloque prq l'idée est trop compliquée
Sub test()
Dim row As Double
Dim srow As Double
Dim col As Double
Dim scol As Double
Dim Ref As String
Dim i As Double
Dim j As Double
row = 3
col = 5
srow = 3
scol = 5
i = 0
j = 0
Sheets(4).Select
While Rows < 28000
Ref = Cells(row + i, col).Value
Sheets(3).Select
While Rows < 17000
If Cells(srow + j, scol) = Ref Then
Sheets(4).Select
-> réécrire la valeur de search dans une 6ème colonne en face de la ref
J + 1
-> Si il trouve une deuxième correspondance, créer une nouvelle ligne et réécrire la valeur Ref dans la 6ème colonne en face de la ref correspondante
J'espère que vous pourrez m'aider sur ce sujet qui me bloque totalement.
Cordialement,
Bonjour,
Ton fichier doit correspondre, même s'il s'agit d'un exemple, à ton énoncé. Met les données dans chaque feuille comme tu nous a expliqué et retourne-nous le fichier.
Bonjour,
Le probleme, c'est que le résultat va modifier la liste de référence de la première feuille. J'ai mis le résultat attendu dans la troisième feuille, mais au final tout doit être dans la liste de référence de la première feuille.
J'ai tenté de faire qlqch de plus propre, mais ça ne marche toujours pas... J'étais pourtant assez content du code, qui me semblait clair. J'ai adapté le code à l'exemple :
Sub Test()
Dim row As Double
Dim srow As Double
Dim col As Double
Dim scol As Double
Dim search As String
Dim i As Double
Dim j As Double
Dim coln As Double
row = 2
col = 1
coln = 2
srow = 2
scol = 1
While row < 150
search = Sheets("Feuil1").Cells(row, col).Value
While srow < 17000
If Sheets("Feuil2").Cells(srow, scol) = search Then
Sheets("Feuil1").Cells(row, coln) = search
While i < 20
i = 1
If Sheets("Feuil2").Cells(srow + i, scol) = search Then
Sheets("Feuil1").Rows(row + i).Insert
Sheets("Feuil1").Cells(row + i, coln) = search
Else
End If
i = i + 1
Wend
Else
srow = srow + 1
End If
Wend
row = row + 1
Wend
End Sub
Merci,
Cordialement,
Bonsoir,
Essaye le code suivant :
Sub test()
Feuil1.Activate
Cells(2, 1).Select
derLig = Feuil2.Range("A" & Rows.Count).End(xlUp).Row
For Each cel In Feuil2.Range("A2:A" & derLig)
If ActiveCell = cel Then
ActiveCell.Offset(0, 1) = cel
ElseIf ActiveCell > cel Then
Rows(ActiveCell.Row).Insert
ActiveCell.Offset(0, 1) = cel
Else
Do Until ActiveCell = cel
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Offset(0, 1) = cel
End If
ActiveCell.Offset(1, 0).Select
Next cel
End SubBonjour,
le code fonctionne parfaitement pour l'exemple.
Pour mon cas cependant, il doit traiter quelques références, puis l'erreur 1004 apparait. Il a quand meme bien fait son travail pr les références qu'il a traité. Voici le code "modifié"
Sub test()
Sheets("Airbus Standards List for AH").Select
Cells(3, 5).Select
derLig = Sheets("Feuil1").Range("E" & Rows.Count).End(xlUp).Row
For Each cel In Sheets("Feuil1").Range("E3:E" & derLig)
If ActiveCell = cel Then
ActiveCell.Offset(0, 1) = cel
ElseIf ActiveCell > cel Then
Rows(ActiveCell.Row).Insert
ActiveCell.Offset(0, 1) = cel
Else
Do Until ActiveCell = cel
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Offset(0, 1) = cel
End If
ActiveCell.Offset(1, 0).Select
Next cel
End SubVoilà... Merci de votre aide
Bonjour,
le code fonctionne parfaitement pour l'exemple.
Pour mon cas cependant, il doit traiter quelques références, puis l'erreur 1004 apparait. Il a quand meme bien fait son travail pr les références qu'il a traité. Voici le code "modifié"
Sub test()
Sheets("Airbus Standards List for AH").Select
Cells(3, 5).Select
derLig = Sheets("Feuil1").Range("E" & Rows.Count).End(xlUp).Row
For Each cel In Sheets("Feuil1").Range("E3:E" & derLig)
If ActiveCell = cel Then
ActiveCell.Offset(0, 1) = cel
ElseIf ActiveCell > cel Then
Rows(ActiveCell.Row).Insert
ActiveCell.Offset(0, 1) = cel
Else
Do Until ActiveCell = cel
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Offset(0, 1) = cel
End If
ActiveCell.Offset(1, 0).Select
Next cel
End SubVoilà... Merci de votre aide