Sub Macro1()
Dim g As Object 'déclare la variable g (onglet Général)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim s As Object 'déclare la variable s (onglet Service)
Dim r As Range 'déclare la variable r (Recherche)
Dim pa As String 'déclare la variable pa (Première Adresse)
Dim li As Integer 'déclare la variable li (LIgne)
Dim lim As Integer 'déclare la variable lim (LIgne Maximum)
Set g = Sheets("Général") 'définit l'onglet g
dl = g.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne B de l'onglet g
Set pl = g.Range("B7:B" & dl) 'définit la plage pl
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set s = Sheets(cel.Offset(0, -1).Value) 'définit l'onglet s (génère une erreur si cet onglet n'existe pas)
If Err <> 0 Then 'condition : si une erreur a été générée
Err = 0 'annule l'erreur
MsgBox "le texte en colonne A ne correspond pas à un onglet existant !" 'message
cel.Offset(0, -1).Select 'sélectionne la cellule contenant l'erreur
Exit Sub 'sort de la procédure
End If 'fin de la condition
On Error GoTo 0
lim = 0 'réinitialise la variable lim
'définit la recherche r (recherche cel dans la colonnne B de l'onglet s)
Set r = s.Columns(2).Find(cel.Value, , xlValues, xlWhole)
If Not r Is Nothing Then 'condition : si il existe au moins une occurence
pa = r.Address 'définit l'adresse de la première occurrence trouvé
Do 'exécute
li = r.Row 'définit la ligne li
If li > lim Then lim = r.Row 'si la ligne li est supérieure à la ligne maximum lim , redéfinit la ligne maximum lim
Set r = s.Columns(2).FindNext(r) 'redéfinit la recherche r (occurrence suivante)
Loop While Not r Is Nothing And r.Address <> pa 'boucle tant qu'il existe des occurrences ailleurs qu'en pa
End If 'fin de la condition
'récupère les données et les place dans la colonne E de l'onglet g
g.Cells(cel.Row, 5).Value = s.Cells(lim, 3).Value & " le " & s.Cells(lim, 9).Value
Next cel 'prochaine cellule de la boucle
End Sub