Bonjour
Il faut penser
Modifier la zone de saisie
Modifier la zone de réception
Modifier (déplacer) la zone des critères
Modifier le nombre de colonnes
Et en plus j'en oublie peut-être mais une macro est assez rigide donc modifier n'est pas toujours des plus facile
Il faut que tu regardes chaque ligne de la macro et que tu te poses la question : Le fait d'avoir modifié telle donnée est ce que cela influe cette instruction ?
Rajouter une colonne
En surligné tout ce qui va changer et ce qui peut changer
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Integer
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("C4:F4")) Is Nothing Then
Application.ScreenUpdating = False
' Vérif si des données saisies dans la ligne 4
If Application.CountA(Range("C4:F4")) = 0 Then
' Aucune donnée
If Range("C8") <> "" Then ' Un résultat existe ?
Range("C8:F" & Range("C" & Rows.Count).End(xlUp).Row).ClearContents
End If
Exit Sub
End If
' Tout se passe dans cette page
With Sheets("liste client")
' Au cas ou on est en mode filtre
If .FilterMode = True Then .ShowAllData
' On copie la ligne de titre pour la zone de critères
.Range("A1:D1").Copy .Range([surligner=#FFFF80]"H1")
' Pour chaque colonne de la zone de critères
For I = 3 To 6
' On copie la recherche : les * remplacent tous les caractères
.Cells(2, [surligner=#FFFF80]5 + I) = "*" & Cells(4, I) & "*"
Next I
' On filtre avec la copie dans la page "résultat"
.Range("A1:D" & .Range("A" & Rows.Count).End(xlUp).Row).AdvancedFilter action:=xlFilterCopy, CriteriaRange:=.Range("H1:K2"), CopyToRange:=Range("C7:F7")
' On efface le filtre
.Range("H1:K2").ClearContents
End With
End If
End Sub
Si tu as des difficultés joins ton fichier avec les nouvelles colonnes