Sub SupprimerTrierColonnes()
Dim S1 As Worksheet
Dim S2 As Worksheet
Dim var1
Dim var2
Dim i&
Dim j&
Dim bool As Boolean
Dim cpt&
With ActiveWorkbook.Windows(1)
If .SelectedSheets.Count <> 2 Then
MsgBox "Veuillez sélectionner 2 feuilles." & vbCrLf & vbCrLf & _
"Sélectionnez en premier la feuille de référence."
Exit Sub
End If
Set S1 = .SelectedSheets(1)
MsgBox S1.Name
Set S2 = .SelectedSheets(2)
If S1.[a1] = "" Or S2.[a1] = "" Then
MsgBox "La cellule A1 doit être renseignée."
Exit Sub
End If
End With
var1 = S1.[a1].CurrentRegion
var2 = S2.[a1].CurrentRegion
'--- Supprime les colonnes sans correspondance ---
'°°° feuille1 vs feuille2 °°°
For i& = UBound(var2, 2) To 1 Step -1
bool = False
For j& = 1 To UBound(var1, 2)
If UCase(Trim(var2(1, i&))) = UCase(Trim(var1(1, j&))) Then
bool = True
Exit For
End If
Next j&
If Not bool Then S2.Columns(i&).Delete
Next i&
'°°° feuille2 vs feuille1 °°°
For i& = UBound(var1, 2) To 1 Step -1
bool = False
For j& = 1 To UBound(var2, 2)
If UCase(Trim(var1(1, i&))) = UCase(Trim(var2(1, j&))) Then
bool = True
Exit For
End If
Next j&
If Not bool Then S1.Columns(i&).Delete
Next i&
'--- Réorganiser les colonnes ---
var1 = S1.[a1].CurrentRegion
var2 = S2.[a1].CurrentRegion
cpt& = UBound(var1, 2) + 1
For i& = UBound(var1, 2) To 1 Step -1
For j& = 1 To UBound(var2, 2)
If UCase(Trim(var1(1, i&))) = UCase(Trim(var2(1, j&))) Then
If i& <> j& Then
S2.Columns(j&).Cut
S2.Columns(i& + 1).Insert
var2 = S2.[a1].CurrentRegion
End If
End If
Next j&
Next i&
End Sub