Option Explicit 'oblige à déclarer toutes les variables
Sub Macro1()
'**************************
'déclarations des variables
'**************************
Dim dc As Byte 'déclare la variable dc (Dernière Colonne)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim rl As Range 'déclare la variable rl (Recherche de la Ligne)
Dim li As Integer 'déclare la variable li (LIgne)
Dim i As Byte 'déclare la variable i (Incrément)
Dim rc As Range 'déclare la variable rc (Recherche de la Colonne)
Dim col As Byte 'déclare la variable col (COLonne)
'****************************
'efface les anciennes données
'****************************
With Sheets("Feuil2") 'prend en compte l'onglet "Feuil2"
Set pl = .Range("A1").CurrentRegion 'définit la plage pl
Set pl = pl.Offset(2, 1).Resize(pl.Rows.Count - 1, pl.Columns.Count - 1) 'redéfinit la plage pl (sans les étiquettes)
pl.ClearContents 'efface le contenu de la plage pl
End With 'fin de la prise en compte de l'onglet "Feuil2"
Set pl = Nothing 'réinitialise la variable pl
'*********************
'transfère les données
'*********************
With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
dc = .Cells(2, 256).End(xlToLeft).Column 'définit la dernière colonne éditée dc de la ligne 2
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la Colonne 1 (=A)
Set pl = .Range("A3:A" & dl) 'définit la plage pl
For Each cel In pl 'boucle 1 : sur toutes les cellules cel de la plage pl
'définit la recherche rl (recherche la valeur de la cellule cel dans la colonne 1 (=A) de l'onglet "Feuil2")
Set rl = Sheets("Feuil2").Columns(1).Find(cel.Value, , xlValues, xlWhole)
If Not rl Is Nothing Then 'condition : si il existe au moins une occurrence trouvée
li = rl.Row 'définit la ligne li
Else 'sinon
GoTo suite 'va à l'étiquette "suite"
End If 'fin de la condition
For i = 2 To dc 'boucle 2 : sur les colonnes 2 à dc
'définit la recherche rc (recherche l'etiquette (ligne 2) de la cellule de la ligne de cel, colonne i,
'dans la ligne 2 de l'onglet "Feuil2"
Set rc = Sheets("Feuil2").Rows(2).Find(.Cells(2, i), , xlValues, xlWhole)
If Not rc Is Nothing Then 'condition : si il existe au moins une occurrence trouvée
col = rc.Column 'définit la colonne col
Sheets("Feuil2").Cells(li, col).Value = .Cells(cel.Row, i) 'récupère la valeur du tableau 1 au tableau 2
End If 'fin de la condition
Next i 'prochaine colonne de la boucle 2
suite: 'étiquette
Next cel 'prochaine cellule de la boucle 1
End With 'fin de la prise en compte de l'onglet "Feuil1"
'***************************************
'affiche l'onglet des données transférées
'***************************************
Sheets("Feuil2").Activate 'active l'onglet "Feuil2"
End Sub