Bonjour à toutes et à tous,

Heureux de pouvoir enfin vous retrouver après une longue période de convalescence.
Voici mon problème : Avec le code ci-joint, je rapatrie des données venant d'un tableau général selon une lettre, pour ce code, c'est la lettre "P" inscrite dans la cellule A2 qui déclenche tout. Cependant je rencontre un petit soucis, après la dernière ligne, il m'inscrit le nombre de lignes rapatriées, comme avec un filtre automatique et ça je n'en veut pas. Le tableau doit se terminer par le dernier rapatriement trouvé, dans ce cas, la dernière ligne du tableau général comportant la lettre "P" dans la colonne "G".
J'espère avoir été clair dans mon explication, sinon n'hésitez pas à me le dire.
Merci par avance pour votre aide car je n'arrive pas à trouver la solution

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
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
         If LastLig < 4 Then
         If .Range("A3").AutoFilter = True Then .Range("A3").AutoFilter
         Exit Sub
         End If
         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("J").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("J").Sort.SortFields.Add Key:=Range("K4:K299"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("J").Sort.SortFields.Add Key:=Range("B4:B299"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("J").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
Bonjour,
Apparemment je n'inspire personne, peut-être me suis-je mal expliqué ???
Donc, j'ai une feuille dans laquelle se trouve un tableau de données saisies les unes à la suite des autres, cette feuille se nomme "Général". Ensuite, dans le même classeur j'ai d'autres feuilles dans lesquelles je rapatrie des données selon un critère précis saisi dans la cellule A2. Pour mon exemple, c'est la lettre P, et la feuille se nomme "P", lettre qui se trouve également dans le tableau de la feuille "Général" dans la colonne G. A partir de là, toutes les lignes où il y a un P sont copiées dans le tableau de la deuxième feuille, celle nommée "P". La macro devrait s'arrêter là, mais à la suite de la dernière ligne copiée, elle me met le nombre de ligne copiée et c'est ça que je souhaite supprimer.
Merci par avance pour vos réponse
Amicalement
René