Excel : Copier des lignes sous condition

Fermé
Allllex Messages postés 3 Date d'inscription mardi 10 février 2015 Statut Membre Dernière intervention 10 février 2015 - 10 févr. 2015 à 11:07
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 10 févr. 2015 à 15:26
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
A voir également:

8 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 10/02/2015 à 11:18
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
Bonjour

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

A+
Maurice
0
Allllex Messages postés 3 Date d'inscription mardi 10 février 2015 Statut Membre Dernière intervention 10 février 2015
10 févr. 2015 à 11:53
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 10/02/2015 à 13:48
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
Bonjour
je pense a un truc comme ca

http://cjoint.com/?3Bkm0OR0nrn

a toi de voir si ca te va
A+
Maurice
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
10 févr. 2015 à 13:40
Merci pour le classeur :-(

et en + il faut recopier à la main tes 3 listes ?
Tu veux vraiment qu'on t'aide ou pas ?
0
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
Allllex Messages postés 3 Date d'inscription mardi 10 février 2015 Statut Membre Dernière intervention 10 février 2015
10 févr. 2015 à 14:55
Merci Maurice !
C'est vraiment super sympas de prendre le temps de faire ça, vraiment merci beaucoup !!!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
10 févr. 2015 à 15:26
Excusez moi d'avoir dérangé
0