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 -
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
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
-
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 -
Bonjour
donne au moin un modele de ton fichier reduit
avec la liste des departement par groupe
A+
Maurice -
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é !!-
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 :-(
-
-
Bonjour
je pense a un truc comme ca
http://cjoint.com/?3Bkm0OR0nrn
a toi de voir si ca te va
A+
Maurice -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Merci pour le classeur :-(
et en + il faut recopier à la main tes 3 listes ?
Tu veux vraiment qu'on t'aide ou pas ?
-
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 -
Merci Maurice !
C'est vraiment super sympas de prendre le temps de faire ça, vraiment merci beaucoup !!! -
Excusez moi d'avoir dérangé