Hpotter
XLDnaute Junior
Bonjour à tous,
Le code ci-dessous me permet lorsque je tape une lettre dans la cellule "A2" de la feuille de rapatrier toutes les données se trouvant dans la feuille "Général" et qui correspondent à la lettre située dans "A2".
Cependant je rencontre un problème. En effet, lorsque le tableau de la feuille "Général" est vide et que je tape une lettre dans "A2", alors il me recopie systématiquement l'en-tête de la feuille.
Par exemple : je tape "P" en A2 de la feuille "P", si le tableau "Général" est vide
, alors il me recopie l'en-tête du tableau de la feuille "P".
Pouvez-vous m'aider à trouver la solution car je cherche depuis un bon moment sans succès.
Je vous en remercie par avance
Le code ci-dessous me permet lorsque je tape une lettre dans la cellule "A2" de la feuille de rapatrier toutes les données se trouvant dans la feuille "Général" et qui correspondent à la lettre située dans "A2".
Cependant je rencontre un problème. En effet, lorsque le tableau de la feuille "Général" est vide et que je tape une lettre dans "A2", alors il me recopie systématiquement l'en-tête de la feuille.
Par exemple : je tape "P" en A2 de la feuille "P", si le tableau "Général" est vide
, alors il me recopie l'en-tête du tableau de la feuille "P".
Pouvez-vous m'aider à trouver la solution car je cherche depuis un bon moment sans succès.
Je vous en remercie par avance
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LastLig As Long, NewLig As Long, Nb As Long
If Target.Address = "$A$2" Then
Union(Range("A4:H" & Rows.Count), Range("J4:K" & Rows.Count), Range("M4:M" & Rows.Count)).ClearContents
If Target <> "" Then
With Sheets("Général")
.Range("A3").AutoFilter
LastLig = .Cells(Rows.Count, "G").End(xlUp).Row
With .Range("A3:N" & LastLig)
.AutoFilter
.AutoFilter field:=7, Criteria1:=Target
End With
Nb = .Range("A3:A" & LastLig).SpecialCells(xlCellTypeVisible).Count - 1
If Nb > 0 Then
Application.EnableEvents = False
.Range("A4:F" & LastLig).SpecialCells(xlCellTypeVisible).Copy Range("A4")
.Range("I4:J" & LastLig).SpecialCells(xlCellTypeVisible).Copy Range("G4")
.Range("L4:M" & LastLig).SpecialCells(xlCellTypeVisible).Copy
Range("J4").PasteSpecial xlPasteValues
Application.CutCopyMode = False
Application.EnableEvents = True
End If
.Range("A3").AutoFilter
Range("A3").Select
End With
Range("A3").Select
ActiveWorkbook.Worksheets("P").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("P").Sort.SortFields.Add Key:=Range("B4:B500" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("P").Sort
.SetRange Range("A3:L500")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A3").Select
End If
End If
AutoFitSheet
End Sub