Copier des lignes avec condition vers une autre feuille

r4944 Messages postés 136 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour ,

je voudrais copier des ligne d'une feuille vers un autre classeur ,mais avec une condition ,( copier seulement les lignes qui ont ''XX'' a la colonne (AE)
voici le code que j'utilise pour le moment mais comme vous voyez il copie toute la feuille

Sub Importdata()

Dim classeurSource As Workbook, classeurDestination As Workbook

Set classeurSource = Application.Workbooks.Open("C:\Users\riadh.said@cic.gc.ca\Desktop\Updatev3.xlsm", , True)

Set classeurDestination = ThisWorkbook

classeurSource.Sheets("Workload - Charge de travail").Cells.Copy classeurDestination.Sheets("Sheet1").Range("A2")

classeurSource.Close False

End Sub

1 réponse

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    Merci d'envoyer le classeur source afin d'essayer d'être efficace
    pour cela
    Mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
    et coller le raccourci proposé (clic droit) dans le message de réponse
    Dans l'attente

    en attendant fait à l'aveugle en supposant que le point de départ dans la source est la colonne A et que l'on connait pas la dernière colonne (pourquoi transporter plus de 1000 cellules en copiant la ligne ?)
    donc ce code sera à simplifier et corriger car il faudrait connaitre le nombre de lignes (environ)
    Option Explicit
    Option Base 1
    '--------
    Sub Importdata()
    Dim Source As Workbook, Dercol As Integer
    Dim Nbre As Integer, Tablo, Cptr As Integer, Lig As Integer, Col As Integer

    Application.ScreenUpdating = False

    Set Source = Application.Workbooks.Open("C:\Users\riadh.said@cic.gc.ca\Desktop\Updatev3.xlsm", , True)
    With Sheets("Workload - Charge de travail")
    Dercol = .Rows(2).Find(what:="*", searchdirection:=xlPrevious).Column
    Nbre = Application.CountIf(.Columns("AE"), "XX")
    ReDim Tablo(Nbre, Dercol)
    Lig = 1
    For Cptr = 1 To Nbre
    Lig = .Columns("AE").Find("XX", .Cells(Lig, "AE"), xlValues).Row
    For Col = 1 To Dercol
    Tablo(Cptr, Col) = .Cells(Lig, Col)
    Next Col
    Next Cptr
    End With
    Source.Close False

    With ThisWorkbook.Sheets("Sheet1")
    .Range("A2").Resize(Cptr, Dercol) = Tablo
    .Activate
    End With

    End Sub


    Michel
    2
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      au fait,

      Tu peux aussi utiliser les filtres
      voir
      http://boisgontierjacques.free.fr/

      onglet VBA -filtres
      0
    2. r4944 Messages postés 136 Statut Membre
       
      https://www.cjoint.com/c/EJkuzb8Y2qi

      voici le fichier , je voulais juste copier les actions qui on été complétés vous trouveriez XX dans la colonne AE , j'ai essayé d'utiliser les use forms c'était trop dure :/

      merci pour votre aide
      0
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > r4944 Messages postés 136 Statut Membre
         
        pas vu de XX dans la colonne AE
        0
    3. r4944 Messages postés 136 Statut Membre
       
      excusez c'est dans la dernière colonne
      0
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > r4944 Messages postés 136 Statut Membre
         
        Pas sérieux !!! :-(

        Dans le code fourni, remplacer AE par Dercol
        Abandon du suivi, Bonne continuation
        0