Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans une cellule de l'onglet
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim LI As Integer 'déclare la variable LI (LIgne)
Dim COL As Byte 'déclare la variable COL (COLonne)
If Target.Address <> "$A$2" Then Exit Sub 'si le changement a lieu ailleurs qu'en A2, sort de la procédure
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Range("A1").CurrentRegion.Offset(1, 2).ClearContents 'efface d'éventuelles anciennes données
DL = Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière3 ligne éditée DL de la colonne 2 (=B)
Set PL = Range("B2:B" & DL) 'définit la plage PL
LI = Sheets("Feuil1").Columns(1).Find(Target.Value, , xlValues, xlWhole).Row 'définit la ligne du pays LI
For Each cel In PL 'boucle sur toutes les cellules CEL de la plage PL
COL = Sheets("Feuil1").Rows(1).Find(cel.Value, , xlValues, xlWhole).Column 'définit la colonne COL
cel.Offset(0, 1).Value = Sheets("Feuil1").Cells(LI, COL).Value 'récupère la valeur de la cellule LI, COL de l'onglet "Feuil1
cel.Offset(0, 2).Value = Sheets("Feuil1").Cells(LI + 1, COL).Value 'récupère la valeur de la cellule LI+1, COL de l'onglet "Feuil1
Next cel 'prochaine cellule de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub