Sub Macro1()
Dim celb As Range 'déclare la variable celb (CELlule de la Base)
Dim cela As Range 'déclare la variable cela (CELlule des Appelations)
Dim a As Worksheet 'déclare la variable a (onglet des Appellations)
Dim b As Worksheet 'déclare la variable b (onglet de la Base de données)
Dim lg As Byte 'déclare la variable lg (LonGueur)
Set a = Sheets("Feuil2") 'définit l'onglet a
Set b = Sheets("Feuil1") 'définit l'onglet b
'boucle 1 : sur toutes les cellules de la base (onglet "Feuil1"), colonne A)
For Each celb In b.Range("A2:A" & b.Range("A65536").End(xlUp).Row)
celb = celb & " "
'boucle 2 : sur toutes les cellules des apellations (onglet "Feuil2"), colonne B)
For Each cela In a.Range("B2:B" & a.Range("B65536").End(xlUp).Row)
'définit la variable lg (position, en nombre de caractères, du texte de cela dans celb)
lg = InStrRev(celb.Value, cela.Value, -1, vbTextCompare)
If lg > 0 Then ' condition 1 : si lg est positif (donc si le texte de cela existe dans celb)
celb.Offset(0, 1).Value = Trim(Mid(celb.Value, 2, lg - 2)) 'place en colonne B le producteur
'condition 2 : si le nom du vin est précédé de "Rosé"
If Left(Mid(celb.Value, lg + Len(cela.Value)), 4) = "Rosé" Then
'place le nom du vin en supprimant "Rosé" en colonne C
celb.Offset(0, 2).Value = Trim(Mid(celb.Value, lg + Len(cela.Value) + 5))
Else ' sinon (condition 2)
'place le nom du vin en colonne C
celb.Offset(0, 2).Value = Trim(Mid(celb.Value, lg + Len(cela.Value)))
End If ' fin de la condition 2
celb.Offset(0, 3).Value = Trim(cela.Value) 'place l'appelation en colonne C
Exit For ' sort de la boucle 2
End If ' fin de la condition 1
Next cela 'prochaine cellule cela de la boucle 2
Next celb 'prochaine cellule celb de la boucle 1
End Sub