Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Copier des lignes non contigue

netparty

XLDnaute Occasionnel
Bonjour à tous

Je recherche de l'aide pour réaliser une macro.

Voici ce que cette macro doit faire :

Dans mon classeur j'ai 2 feuilles "Données 1" et "Données 2" et j'aimerai copier toutes les lignes qui contiennent un mot spécifique dans la colonne J (Mot à rechercher : INT58, Sanitaire, Divers-95, 01 Elec, TR.TRAVAUX) ensuite il faut coller les lignes trouvées dans la feuille "Rapport" en-dessous de la dernière ligne non vide.

Dans le fichier exemple les lignes à copier sont entres les lignes surlignée en jaune.

Merci d'avance

Bonne journée à tous
 

Pièces jointes

  • Copie de ligne.xlsm
    15.6 KB · Affichages: 8
Dernière édition:

job75

XLDnaute Barbatruc
Voyez le fichier joint et le code de la feuille "Rapport" :
VB:
Private Sub Worksheet_Activate()
Worksheet_Change [A1] 'lance la macro
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim w As Worksheet
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
Cells.Delete 'RAZ
For Each w In Sheets(Array("Données 1", "Données 2"))
    With w.UsedRange
        .AutoFilter 10, "*"
        .Copy Range("A" & Range("J" & Rows.Count).End(xlUp).Row + 1)
        .AutoFilter
    End With
Next
Rows(1).Delete 'supprime la 1ère ligne car elle est vide
Rows(1).Font.Bold = True 'gras
'UsedRange.RemoveDuplicates [COLUMNS(A:AI)], Header:=xlNo 'supprime les lignes en doublon
UsedRange.RemoveDuplicates Array(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), Header:=xlNo 'supprime les lignes en doublon
Columns.AutoFit 'ajuste les largeurs
Application.EnableEvents = True 'réactive les évènements
End Sub
La feuille est mise à jour quand on modifie ou valide une cellule quelconque ou quand on l'active.

Bien noter que les lignes en doublon sont supprimées.

Edit : [COLUMNS(A:AI)] ne va pas, j'ai corrigé.
 

Pièces jointes

  • Copie de ligne(1).xlsm
    28 KB · Affichages: 4
Dernière édition:

netparty

XLDnaute Occasionnel
Bonjour job75

Merci pour ton fichier, j'ai testé il fonctionne très bien mais j'ai quelques remarques.

Les doublon ne doivent pas être supprimés, il faut retranscrire les 2 feuilles dans rapport.
Si j'ai plus que 2 feuille de données y a t-il un moyen facile de les ajouter ?
Et est-il possible de commencer la copie a partir de la ligne 10?

Merci bonne journée
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour netparty, le forum,

Voyez ce fichier (2) :
VB:
Private Sub Worksheet_Activate()
Worksheet_Change [A1] 'lance la macro
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ligdeb&, w As Worksheet, P As Range
ligdeb = 9 '1ère ligne à copier
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
Cells.Delete 'RAZ
For Each w In Sheets(Array("Données 1", "Données 2", "Feuil4")) 'liste à adapter
    If w.Cells(ligdeb, 10) <> "" Then w.Rows(ligdeb).Copy Rows(1)
    Set P = Intersect(w.Rows(ligdeb & ":" & w.Rows.Count), w.UsedRange)
    If Not P Is Nothing Then
        P.AutoFilter 10, "*"
        With Range("A" & Range("J" & Rows.Count).End(xlUp).Row + 1) '1ère ligne vide
            P.Copy .Cells
            .EntireRow.Delete
        End With
        P.AutoFilter
    End If
Next
Rows(1).Font.Bold = True 'gras
UsedRange.Sort Columns(10), xlAscending, Columns(4), , xlAscending, Columns(12), xlAscending, Header:=True 'tri sur 3 colonnes
Columns.AutoFit 'ajuste les largeurs
Application.EnableEvents = True 'réactive les évènements
End Sub
Je vois qu'il n'y a pas de lignes en doublon et donc que la macro de mon post #4 est incorrecte.

C'est [COLUMNS(A:AI)] qui ne va pas, je vais corriger.

A+
 

Pièces jointes

  • Copie de ligne(2).xlsm
    29.8 KB · Affichages: 5
Dernière édition:

netparty

XLDnaute Occasionnel
Re job75

Top le fichier

Une dernière demande, est-il possible de ne pas trier les données exportée.

Merci
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…