Excel : Copier des lignes sous condition

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

Je suis débutant en VBA et je n'arrive pas à adapter les macros que j'ai pu trouver sur ce site.
Je travaille sur une feuille excel avec environ 10 000 lignes. Elles sont actuellement rangées par date. Dans la 3ème colonne ( positionnée en colonne E ), est renseigné le département. Je dois créer 3 nouveaux tableaux correspondants à 3 grands groupes de départements. Je donc veux copier toutes les lignes dont le département est 1,2,5,8...93 dans la feuille excel 1, les lignes dont le département est 3,9,...94 dans la feuille excel 2, les lignes dont le département est 4,6,7...95 dans la feuille excel 3.
Si je ne peux copier que les lignes correspondants à un département à la fois ce n'est pas grave, je peux le faire 95 fois. J'ai besoin d'une macro car je ne peux pas raisonnablement le faire pour chaque ligne à la main, soit plus de 10 000 fois...

Merci de votre aide !

Alex

8 réponses

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

    Il faudrait connaitre au minimum les listes complètes ds 3 groupes de départements

    et d'indiquer quelles colonnes on doit copier car copier toute une ligne encombre plus que bêtement la mémoire....

    Au besoin, mettre un extrait (env 1000 lignes)du classeur, et non un exemple, sans données confidentielles en pièce jointe sur https://www.cjoint.com/
    et coller le lien proposé dans le message de réponse
    Dans l'attente

    Michel
    0
  2. Maurice
     
    Bonjour

    donne au moin un modele de ton fichier reduit
    avec la liste des departement par groupe

    A+
    Maurice
    0
  3. Allllex Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
     
    Zone 1

    2
    8
    10
    14
    18
    27
    28
    45
    50
    51
    54
    57
    58
    59
    60
    61
    62
    75
    76
    77
    78
    80
    89
    91
    92
    93
    94
    95

    Zone 2
    1
    3
    5
    7
    13
    15
    20
    21
    25
    26
    38
    39
    42
    43
    52
    55
    63
    67
    68
    69
    70
    71
    73
    74
    88
    90

    Zone 3
    4
    6
    9
    11
    12
    16
    17
    19
    22
    23
    24
    29
    30
    31
    32
    33
    35
    36
    37
    40
    41
    44
    46
    47
    48
    49
    53
    56
    64
    65
    66
    72
    79
    81
    82
    83
    84
    85
    86
    87

    et voici l'extrait de mon fichier : https://www.cjoint.com/?3BklVeHwdom

    Je souhaiterais copier les toutes les colonnes (il y en a 5) à chaque fois.

    Merci pour votre rapidité !!
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Merci de mettre tes 3 listes dans ton classeur XL: évite moi le pensum de les recopîer à la main
      d'autre part il est important que que tu me livre au moins 1000 lignes car on code pas de la m^me manière avec > 1000 lignes
      A toi de voir mais Si ca te gène d'accèder à mes demandes pour t'aider, j'arr^te tout de suite :-(
      0
  4. Maurice
     
    Bonjour
    je pense a un truc comme ca

    http://cjoint.com/?3Bkm0OR0nrn

    a toi de voir si ca te va
    A+
    Maurice
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Merci pour le classeur :-(

    et en + il faut recopier à la main tes 3 listes ?
    Tu veux vraiment qu'on t'aide ou pas ?
    0
  7. Maurice
     
    Bonjour
    avec recupe des Zone

    Sub TestZone()
    Application.ScreenUpdating = False
       Feuil2.Cells.ClearContents
       Feuil3.Cells.ClearContents
       Feuil4.Cells.ClearContents
    L1 = 2
    L2 = 2
    L3 = 2
    R = 10
    For L = 9 To Range("C" & Rows.Count).End(xlUp).Row
       Select Case Cells(L, 5).Value
       'Zone 1
          Case 2, 8, 10, 14, 18, 27, 28, 45, 50, 51, 54, 57, 58, 59, 60, 61, 62, 75, 76, 77, 78, 80, 89, 91, 92, 93, 94, 95
             Cells(L, R).Value = "Zone1"
             Range("C" & L & ":G" & L).Copy
                Feuil2.Range("B" & L1).PasteSpecial xlPasteValues
                L1 = L1 + 1
       'Zone 2
          Case 1, 3, 5, 7, 13, 15, 20, 21, 25, 26, 38, 39, 42, 43, 52, 55, 63, 67, 68, 69, 70, 71, 73, 74, 88, 90
             Cells(L, R).Value = "Zone2"
             Range("C" & L & ":G" & L).Copy
                Feuil3.Range("B" & L2).PasteSpecial xlPasteValues
                L2 = L2 + 1
       'Zone 3
          Case 4, 6, 9, 11, 12, 16, 17, 19, 22, 23, 24, 29, 30, 31, 32, 33, 35, 36, 37, 40, 41, 44, 46, 47, 48, 49, 53, 56, 64, 65, 66, 72, 79, 81, 82, 83, 84, 85, 86, 87
             Cells(L, R).Value = "Zone3"
             Range("C" & L & ":G" & L).Copy
                Feuil4.Range("B" & L3).PasteSpecial xlPasteValues
                L3 = L3 + 1
          Case Else
             Cells(L, R).Value = ""
       End Select
    Next
    Application.CutCopyMode = False
    End Sub
    


    A+
    Maurice
    0
  8. Allllex Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci Maurice !
    C'est vraiment super sympas de prendre le temps de faire ça, vraiment merci beaucoup !!!
    0
  9. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Excusez moi d'avoir dérangé
    0