Merci,
J'ai réussit à modifier un peu le code pour l'adapter cependant il y a une partie que je ne sais pas comment écrire.
Voici le code ci- dessous.
La partie est celle ci :
Ws.Range(NbCl & NbLg).AdvancedFilter Action:=xlFilterCopy, criteriarange:=Sheets("recap").Range("F1:F2"), copytorange:=.Range("A1:C1")
Merci d'avance pour votre aide.
Cordialement,
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Mondico As Object
Dim J As Long, NbLg As Long, NbCl As Long, Crit As Long
Dim I As Integer
Dim Tablo
Dim Ws As Worksheet
If Not Intersect(Rows(1), Target) Is Nothing And Target <> "" Then
Application.ScreenUpdating = False
Cancel = True
Set Ws = ActiveSheet
NbLg = Range("A" & Rows.Count).End(xlUp).Row
NbCl = Cells(1, Columns.Count).End(xlToLeft).Column
' 1ère cellule de la zone de critères à inserer apres la derniere colonne, ligne 1
Crit = NbCl + 1
Cells(1, Crit) = Target
Set Mondico = CreateObject("Scripting.dictionary")
For J = 2 To NbLg
If Cells(J, Target.Column) <> "" Then
Mondico(Cells(J, Target.Column).Value) = ""
End If
Next J
If Mondico.Count = 0 Then Exit Sub
Tablo = Mondico.keys
For I = 0 To UBound(Tablo)
' 2ème cellule de la zone de critères à inserer apres la derniere colonne, ligne 2
Cells(2, Crit) = Tablo(I)
If FeuilleExiste(CStr(Tablo(I))) = False Then
Sheets.Add(after:=Sheets(Sheets.Count)).Name = Tablo(I)
End If
With Sheets(CStr(Tablo(I)))
.Cells.Clear
' criteriarange:=Sheets("recap").Range("F1:F2") ' zone des critères
Ws.Range(NbCl & NbLg).AdvancedFilter Action:=xlFilterCopy, criteriarange:=Sheets("recap").Range("F1:F2"), copytorange:=.Range("A1:C1")
End With
Next I
With Ws
.Range("F1:F2").ClearContents
.Select
End With
End If
End Sub
Function FeuilleExiste(Nom As String) As Boolean
On Error Resume Next
FeuilleExiste = Sheets(Nom).Name <> ""
On Error GoTo 0
End Function