Programmation d'une macro compliquée
Bonjour à tous,
J'essaierai d'être le plus clair possible dans ma requête (ce qui n'est pas gagné). Je travaille sous EXCEL.
Je m'explique,
Je dois créer une macro qui me permette de :
- Mettre à jour une base de donnée gigantesque (fichier EXCEL1) une fois par mois à partir d'une autre base de données gigantesque (fichier EXCEL2).
===> Mon problème : EXCEL1 ne doit récupérer qu'une partie des données de EXCEL2.
===> Ma question : Est-il possible de créer une macro qui peut mettre a jour EXCEL1 (qui ne représente qu'une partie des données de EXCEL2 ?
C'est tordu, je sais ^^
Je vous remercie d'avance pour vos aides et reste à disposition si vous avez besoin de précisions.
Cordialement,
Etienne
[Pour des raisons de confidentialité des données que je manipule, je ne peux joindre aucun fichier excel]
niay a écrit :[Pour des raisons de confidentialité des données que je manipule, je ne peux joindre aucun fichier excel]
Bonjour,
[Pour des raisons d'incompréhension totale, notamment concernant la structure de tes fichiers, nous ne pouvons t'aider plus avant....]
C'est pas dur, de faire 2 fichiers bidons, mais avec la structure EXACTE des fichiers, et des données bidons.....
M'enfin....
Tant pis
Au temps pour moi, l'option "fichier bidon" m'avait échappée :] , en voici un :
https://www.excel-pratique.com/~files/doc2/TESTMACRO.xls
Merci pour ton aide
Crdlt,
Etienne
Re-,
à première vue, pas l'air trop compliqué...
Cependant, quelques précisions....
Je suppose que les données que tu rapatries, sont celles du mois précédent (ou du mois en cours, si on est le 31...)
Comment peut-on le déterminer?
Est-il possible qu'il y ait plusieurs mises à jour par mois?
Est-ce que les deux fichiers sont dans le même répertoire?
Est-ce que les onglets concernés portent des noms d'onglets spécifiques?
Qu'appelles tu base de donnée gigantesque? (combien de lignes, approximativement?)
Et question subsidiaire :
Pourquoi n'aimes-tu pas les sports d'hiver?
A te relire
Re-,
et question supplémentaire..
Est-ce que ta base est créée au 01 janvier, où elle est à suivre, sur plusieurs années?
Bonjour niay,
Je reformule histoire que tu voie si je t'ai bien compris.
tu souhaite rajouter dans excel2 les données se trouvant dans excel1
dans l'exemple du fichier cela rajoutera deux lignes dans excel2 uniquement avec des données uniquement dans les colonnes : Groupe Mois RA CA réalisé NBjT Type Country Produit Prix moyen
si c'est bien de cela qu'il s'agit et que ton fichier excel1 ne contient systématiquement que des nouvelles données que tu souhaite importer, tu simplement lancer l'enregistrement d'une macro dans excel1et manipuler les colonnes (couper, coller, insertion) de manière à avoir la même config que dans excel2.
Ceci fait stop l'enregistrement, on utilisera ce code dans une petite macro qui à partir de excel2 ouvert :
- ouvrira ecxel 1
- exécutera ta macro afin de mettre excel1 en forme
- sélectionnera l'ensemble des lignes
- les collera à la suite de tes données
voici une possibilité, essaie l'enregistrement de la macro et tiens nous au courant
a+
edit :
il serait préférables d'éclaircir les questions de cousinhub au préalable
RE,
1- Les données que je rapporte sont celles du mois en cours (EXCEL2 est manuellement mis à jour).
2- En effet, la maj est faite de manière continue. A terme, il semble préférable d'actualiser les données en temps réel.
3- Non, ils ne sont pas dans le même répertoire.
4- L'onglet de EXCEL1 se nomme : "Base de données 2009" ; tandis que l'onglet de EXCEL2 se nommne : "MASTER".
5- Gigantesque = 13000 lignes sur 29 colonnes.
6*- J'adore les sports d'hiver, il s'agit juste d'un tuto pour macro que j'ai effectué juste avant :O .
J'ai également une question subsidiaire :
Que gagnez-vous à aider en permanence des gens paumés à part de la satisfaction personnelle? :]
Sinon, Merci pour ton aide (même si c'est un moyen de nourrir son égo que d'aider les autres ^^ )
Re-,
zut,
Sinon, Merci pour ton aide (même si c'est un moyen de nourrir son égo que d'aider les autres ^^ )
Je suis très susceptible....
Bonne chance
pophop a écrit :Bonjour niay,
Je reformule histoire que tu voie si je t'ai bien compris.
tu souhaite rajouter dans excel2 les données se trouvant dans excel1
Bonjour pophop,
Merci pour ton aide, je ne pourrais essayer ta proposition que demain, en attendant bonne soirée à toi et cousinhub, je vous tiens au courant.
Cordlt,
Etienne
Re cousinhub,
Mon intention n'était en aucun cas de t'offusquer :[
Je suis fan de cynisme et c'est difficile de le faire ressortir en postant.
Je comprends ta réaction et m'excuse.
Merci tout de même pour l'intérêt que tu as pû porter à ma requête.
Je respecte ce que vous faites.
Bonne continuation
niay a écrit :Que gagnez-vous à aider en permanence des gens paumés à part de la satisfaction personnelle? :]
Sinon, Merci pour ton aide (même si c'est un moyen de nourrir son égo que d'aider les autres ^^ )
C'est un peu là même chose que faire des casses têtes, ça occupe...
En plus le fait de plancher à plusieurs sur un même problème permet de confronter différentes approches et solutions et d'améliorer tes connaissances.
D'ici que tout ça te parle, je te souhaite bon courage avec cette ENORME base...
Bonjour pophop,
J'ai effectué la première macro que tu m as conseillé (à savoir la mise en forme de EXCEL2 - supression des colonnes inutiles), voila ce que ça donne :
Sub Miseenforme()
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Columns("C:C").Select
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Columns("E:E").Select
Selection.Delete Shift:=xlToLeft
Columns("G:G").Select
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Columns("I:I").Select
Selection.Delete Shift:=xlToLeft
Columns("J:J").Select
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
End Sub
SI j'ai bien compris, la suite consistera à intégrer cette macro dans une macro plus complète.
Il semble que tu m'aies indiqué la bonne voie, je vais essayer quelques trucs et je te tiens au courant.
Cordlt,
Etienne
RE,
Quelques précisions qui permettront peut etre de faciliter l'opération :
- EXCEL2 représente la base de données la plus complète ( je dois extraire les données nécessaires et les exporter vers EXCEL1).
- Chaque mois, EXCEL2 est mis à jour.
- Je dois juste exporter une partie de la Mise à jour de EXCEL2 (uniquement les variables concernées) à chaque début de mois.
Ce n'est surement pas très compliqué mais je cherche et me perds dans la multitude de forums dédiés aux commandes macros sans trouver ce qui m'intéresse.
Merci d'avance pour vos lumières.
Cordlt,
Etienne.
Si quelqu'un a une idée, mes oreilles sont grandes ouvertes, je dois boucler le fichier rapidement.
Merci pour vos aides,
Etienne
Bonjour Niay
ta macro fonctionne mais elle ne met pas les colonnes dans le bon ordre.
Une fois ta première macro exécutée, enregistre une seconde dans laquelle tu va classer tes colonnes dans le même ordre que excel1.
Ensuite il te suffit de coller ce code généré à la suite de ta macro "Miseenforme" avant l'instruction "end sub" (attention à ne pas copier les instructions "sub blabla" et "end sub")
Une fois que c'est fait et que ça fonctionne.
tu enregistre une nouvelle macro où tu fera les opérations suivantes :
- selection des lignes à copier (de la ligne 2 à la ligne X)
pour X estime le nombre maximal de données à copier chaque mois et prends une bonne marge, attention à ce que ta marge + tes donnés n'excède pas les 65536 lignes dispos dans excel.
- copie des lignes
- selection du classeur destination
- selection de la cellule "a1"
- Ctrrl + flèche bas (de manière à te trouver sur la dernière ligne où tu a des données
- coller
- arrêt de la macro
Afin que tout s'execute d'une traite, tu recommence l'opération de copier/coller du code ou tu rajoute une ligne à la fin de "Miseenforme" :
Call LeNomDeCetteMacro
je jetterai un oeil à tes avancées jeudi
bon courage
Bonjour pophop,
Je touche au but mais il y a un hic,
Tout d'abord, voila mon code (dsl pour les lignes jle mets en petit) :
Sub Miseenforme()
Range("A:A,B:B,E:E,F:F,G:G,H:H").Select
Range("H1").Activate
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 7
Range("A:A,B:B,E:E,F:F,G:G,H:H,K:K,N:N,O:O,P:P,Q:Q,R:R").Select
Range("R1").Activate
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 10
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 14
Range("A:A,B:B,E:E,F:F,G:G,H:H,K:K,N:N,O:O,P:P,Q:Q,R:R,S:S,T:T,U:U,V:V,W:W,X:X" _
).Select
Range("X1").Activate
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 18
Range( _
"A:A,B:B,E:E,F:F,G:G,H:H,K:K,N:N,O:O,P:P,Q:Q,R:R,S:S,T:T,U:U,V:V,W:W,X:X,AA:AA,AC:AC" _
).Select
Range("AC1").Activate
Selection.Delete Shift:=xlToLeft
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 10
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("A1").Select
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
Columns("C:C").Select
Selection.Cut Destination:=Columns("A:A")
Columns("G:G").Select
Selection.Cut Destination:=Columns("C:C")
Columns("D:D").Select
Selection.Cut Destination:=Columns("G:G")
Columns("I:I").Select
Selection.Cut Destination:=Columns("D:D")
Columns("E:E").Select
Selection.Cut Destination:=Columns("I:I")
Columns("H:H").Select
Selection.Cut Destination:=Columns("E:E")
Columns("F:F").Select
Selection.Cut Destination:=Columns("H:H")
Columns("I:I").Select
Selection.Cut Destination:=Columns("F:F")
Columns("G:G").Select
Selection.Cut Destination:=Columns("I:I")
Columns("H:H").Select
Selection.Cut Destination:=Columns("G:G")
Columns("I:I").Select
Selection.Cut Destination:=Columns("H:H")
Columns("J:J").Select
Selection.Cut Destination:=Columns("I:I")
Columns("I:I").Select
Rows("2:2").Select
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 3
ActiveWindow.SmallScroll Down:=40705
ActiveWindow.ScrollRow = -24971
ActiveWindow.ScrollRow = -25042
ActiveWindow.ScrollRow = -25113
ActiveWindow.ScrollRow = -25256
ActiveWindow.ScrollRow = -25327
ActiveWindow.ScrollRow = -25398
ActiveWindow.ScrollRow = -25470
ActiveWindow.ScrollRow = -25541
ActiveWindow.ScrollRow = -25612
ActiveWindow.ScrollRow = -25683
ActiveWindow.ScrollRow = -25755
ActiveWindow.ScrollRow = -25897
ActiveWindow.ScrollRow = -25969
ActiveWindow.ScrollRow = -26040
ActiveWindow.ScrollRow = -26111
ActiveWindow.ScrollRow = -26183
ActiveWindow.ScrollRow = -26325
ActiveWindow.ScrollRow = -26396
ActiveWindow.ScrollRow = -26468
ActiveWindow.ScrollRow = -26539
ActiveWindow.ScrollRow = -26682
ActiveWindow.ScrollRow = -26753
ActiveWindow.ScrollRow = -26967
ActiveWindow.ScrollRow = -27038
ActiveWindow.ScrollRow = -27252
ActiveWindow.ScrollRow = -27466
ActiveWindow.ScrollRow = -27608
ActiveWindow.ScrollRow = -27680
ActiveWindow.ScrollRow = -27751
ActiveWindow.ScrollRow = -27822
ActiveWindow.ScrollRow = -27894
ActiveWindow.ScrollRow = -28036
ActiveWindow.ScrollRow = -28107
ActiveWindow.ScrollRow = -28179
ActiveWindow.ScrollRow = -28250
ActiveWindow.ScrollRow = -28393
ActiveWindow.ScrollRow = -28464
ActiveWindow.ScrollRow = -28535
ActiveWindow.ScrollRow = -28678
ActiveWindow.ScrollRow = -28749
ActiveWindow.ScrollRow = -28820
ActiveWindow.ScrollRow = -28892
ActiveWindow.ScrollRow = -29034
ActiveWindow.ScrollRow = -29105
ActiveWindow.ScrollRow = -29177
ActiveWindow.ScrollRow = -29319
ActiveWindow.ScrollRow = -29391
ActiveWindow.ScrollRow = -29462
ActiveWindow.ScrollRow = -29533
ActiveWindow.ScrollRow = -29676
ActiveWindow.ScrollRow = -29747
ActiveWindow.ScrollRow = -29818
ActiveWindow.ScrollRow = -29890
ActiveWindow.ScrollRow = -30032
ActiveWindow.ScrollRow = -30104
ActiveWindow.ScrollRow = -30175
ActiveWindow.ScrollRow = -30317
ActiveWindow.ScrollRow = -30389
ActiveWindow.ScrollRow = -30460
ActiveWindow.ScrollRow = -30531
ActiveWindow.ScrollRow = -30674
ActiveWindow.ScrollRow = -30745
ActiveWindow.ScrollRow = -30816
ActiveWindow.ScrollRow = -30959
ActiveWindow.ScrollRow = -31030
ActiveWindow.ScrollRow = -31102
ActiveWindow.ScrollRow = -31173
ActiveWindow.ScrollRow = -31244
ActiveWindow.ScrollRow = -31315
ActiveWindow.ScrollRow = -31387
ActiveWindow.ScrollRow = -31458
ActiveWindow.ScrollRow = -31529
ActiveWindow.ScrollRow = -31672
ActiveWindow.ScrollRow = -31743
ActiveWindow.ScrollRow = -31814
ActiveWindow.ScrollRow = -31886
ActiveWindow.ScrollRow = -32028
ActiveWindow.ScrollRow = -32100
ActiveWindow.ScrollRow = -32171
ActiveWindow.ScrollRow = -32314
ActiveWindow.ScrollRow = -32385
ActiveWindow.ScrollRow = -32456
ActiveWindow.ScrollRow = -32527
ActiveWindow.ScrollRow = -32670
ActiveWindow.ScrollRow = -32741
ActiveWindow.ScrollRow = 32723
ActiveWindow.ScrollRow = 32581
ActiveWindow.ScrollRow = 32510
ActiveWindow.ScrollRow = 32438
ActiveWindow.ScrollRow = 32367
ActiveWindow.ScrollRow = 32224
ActiveWindow.ScrollRow = 32153
ActiveWindow.ScrollRow = 32082
ActiveWindow.ScrollRow = 32011
ActiveWindow.ScrollRow = 31868
ActiveWindow.ScrollRow = 31797
ActiveWindow.ScrollRow = 31725
ActiveWindow.ScrollRow = 31583
ActiveWindow.ScrollRow = 31511
ActiveWindow.ScrollRow = 31440
ActiveWindow.ScrollRow = 31369
ActiveWindow.ScrollRow = 31226
ActiveWindow.ScrollRow = 31155
ActiveWindow.ScrollRow = 31084
ActiveWindow.ScrollRow = 31012
ActiveWindow.ScrollRow = 30870
ActiveWindow.ScrollRow = 30799
ActiveWindow.ScrollRow = 30727
ActiveWindow.ScrollRow = 30656
ActiveWindow.ScrollRow = 30513
ActiveWindow.ScrollRow = 30442
ActiveWindow.ScrollRow = 30371
ActiveWindow.ScrollRow = 30228
ActiveWindow.ScrollRow = 30157
ActiveWindow.ScrollRow = 30086
ActiveWindow.ScrollRow = 30014
ActiveWindow.ScrollRow = 29872
ActiveWindow.ScrollRow = 29801
ActiveWindow.ScrollRow = 29729
ActiveWindow.ScrollRow = 29587
ActiveWindow.ScrollRow = 29515
ActiveWindow.ScrollRow = 29444
ActiveWindow.ScrollRow = 29373
ActiveWindow.ScrollRow = 29230
ActiveWindow.ScrollRow = 29159
ActiveWindow.ScrollRow = 29088
ActiveWindow.ScrollRow = 29016
ActiveWindow.ScrollRow = 28874
ActiveWindow.ScrollRow = 28802
ActiveWindow.ScrollRow = 28731
ActiveWindow.ScrollRow = 28660
ActiveWindow.ScrollRow = 28517
ActiveWindow.ScrollRow = 28446
ActiveWindow.ScrollRow = 28375
ActiveWindow.ScrollRow = 28303
ActiveWindow.ScrollRow = 28161
ActiveWindow.ScrollRow = 28090
ActiveWindow.ScrollRow = 28018
ActiveWindow.ScrollRow = 27947
ActiveWindow.ScrollRow = 27876
ActiveWindow.ScrollRow = 27804
ActiveWindow.ScrollRow = 27733
ActiveWindow.ScrollRow = 27662
ActiveWindow.ScrollRow = 27591
ActiveWindow.ScrollRow = 27519
ActiveWindow.ScrollRow = 27377
ActiveWindow.ScrollRow = 27305
ActiveWindow.ScrollRow = 27234
ActiveWindow.ScrollRow = 27163
ActiveWindow.ScrollRow = 27020
ActiveWindow.ScrollRow = 26949
ActiveWindow.ScrollRow = 26878
ActiveWindow.ScrollRow = 26806
ActiveWindow.ScrollRow = 26735
ActiveWindow.ScrollRow = 26307
ActiveWindow.ScrollRow = 26093
ActiveWindow.ScrollRow = 25880
ActiveWindow.ScrollRow = 25666
ActiveWindow.ScrollRow = 25452
ActiveWindow.ScrollRow = 25380
ActiveWindow.ScrollRow = 25238
ActiveWindow.ScrollRow = 25167
ActiveWindow.ScrollRow = 25095
ActiveWindow.ScrollRow = 24953
ActiveWindow.ScrollRow = 24881
ActiveWindow.ScrollRow = 24810
ActiveWindow.ScrollRow = 24739
ActiveWindow.ScrollRow = 24596
ActiveWindow.ScrollRow = 24525
ActiveWindow.ScrollRow = 24454
ActiveWindow.ScrollRow = 24382
ActiveWindow.ScrollRow = 24311
ActiveWindow.ScrollRow = 24169
ActiveWindow.ScrollRow = 24097
ActiveWindow.ScrollRow = 24026
ActiveWindow.ScrollRow = 23955
ActiveWindow.ScrollRow = 23812
ActiveWindow.ScrollRow = 23741
ActiveWindow.ScrollRow = 23670
ActiveWindow.ScrollRow = 23598
ActiveWindow.ScrollRow = 23527
ActiveWindow.ScrollRow = 23384
ActiveWindow.ScrollRow = 23313
ActiveWindow.ScrollRow = 23242
ActiveWindow.ScrollRow = 23170
ActiveWindow.ScrollRow = 23099
ActiveWindow.ScrollRow = 23028
ActiveWindow.ScrollRow = 22957
ActiveWindow.ScrollRow = 22885
ActiveWindow.ScrollRow = 22814
ActiveWindow.ScrollRow = 22671
ActiveWindow.ScrollRow = 22600
ActiveWindow.ScrollRow = 22529
ActiveWindow.ScrollRow = 22458
ActiveWindow.ScrollRow = 22386
ActiveWindow.ScrollRow = 22315
ActiveWindow.ScrollRow = 22172
ActiveWindow.ScrollRow = 22101
ActiveWindow.ScrollRow = 22030
ActiveWindow.ScrollRow = 21959
ActiveWindow.ScrollRow = 21816
ActiveWindow.ScrollRow = 21745
ActiveWindow.ScrollRow = 21673
ActiveWindow.ScrollRow = 21531
ActiveWindow.ScrollRow = 21460
ActiveWindow.ScrollRow = 21388
ActiveWindow.ScrollRow = 21317
ActiveWindow.ScrollRow = 21174
ActiveWindow.ScrollRow = 21103
ActiveWindow.ScrollRow = 21032
ActiveWindow.ScrollRow = 20960
ActiveWindow.ScrollRow = 20818
ActiveWindow.ScrollRow = 20747
ActiveWindow.ScrollRow = 20675
ActiveWindow.ScrollRow = 20533
ActiveWindow.ScrollRow = 20461
ActiveWindow.ScrollRow = 20390
ActiveWindow.ScrollRow = 20319
ActiveWindow.ScrollRow = 20176
ActiveWindow.ScrollRow = 20105
ActiveWindow.ScrollRow = 20034
ActiveWindow.ScrollRow = 19891
ActiveWindow.SmallScroll Down:=102
Rows("2:20000").Select
Selection.Copy
Sheets("EXCEL1").Select
Range("A2").Select
ActiveSheet.Paste
End Sub
Voila
(une petite précision, dans ma macro je copie toutes les lignes de EXCEL2 et les colles dans EXCEL1 après avoir mis en forme les colonnes)
Maintenant la prochaine étape consiste à ne copier que les lignes qui répondent à des critères bien précis ; en fait la colonne "groupe" rassemble bcp de valeurs différentes et je ne dois récupérer qu'une vingtaine de groupes.
Penses-tu qu'il soit possible d'intégrer dans la macro un code qui permet de sélectionner uniquement les lignes qui répondent à des critères (en fonction du type de groupe)?
J'en demande bcp je sais
Merci à toi et à tes neurones pophop. ^^
Salut Niay,
maintenant que tu a saisi le principe, ça devrait aller tout seul pour tes sélections sur des groupes.
Tu enregistre une macro dans laquelle tu met en place un filtre automatique et tu filtre tes données selon les critères qui t'intéressent.
tu colle ce code avant cette ligne : Rows("2:20000").Select
de manière à ce que seuls les données que tu souhaite copier soient visibles à l'écran.
(si tu a une multitude critères sur un même champ et que tu n'arrive pas à tous les intégrer dans les critère et & ou des filtres, pas de problème, il suffira de répéter l'opération)
ATTENTION, cela introduit une variante dans l'étape de copier coller, avec des données filtrées il faut prendre garde à ne copier que ces données.
Pour ce faire tu enregistre une nouvelle macro où : tu sélectionne tes données comme précédemment mais avant de faire copier, tu fais : Menu Edition / Atteindre / Cellules / Cellules visibles seulement / OK. (voici la ligne de code intéressante générée : Selection.SpecialCells(xlCellTypeVisible).Select
tu colle ce code entre ces deux lignes :
Rows("2:20000").Select
Selection.Copy
Bonus : Dans ton code tu peux supprimer ou commenter (pour commenter tu let un ' en début de ligne, tu verra que la ligne se colore en vert, cela signifie qu'elle ne sera pas executée, tu peux ainsi commenter ton code afin d'y voir plus clair et de t'y retrouver, ça sert vraiment, tu verra)
toutes lignes de ce type : ActiveWindow.ScrollColumn = XXX
cette commande correspond au défilement vertical que tu effectue avec la molette ou les ascenseurs n'a aucun effet dans l'exécution de la macro à part la ralentir en te faisant défiler les lignes.
Tiens moi au courant de tes avancées.
PS : je pars demain en vacances pendant 15 jours, donc demain soir...
RE à tous,
Quelqu'un aurait une idée pour filtrer un fichier source en fonction de plusieurs critères situés dans la même colonne?
Je ne maitrîse pas le filtre élaboré et je n'arrive pas à effectuer ce que je souhaite, je m'explique :
Dans mon fichier source, il y a une colonne "groupe", je dois filtrer le fichier de manière à laisser apparaître uniquement les lignes correspondant à certains groupes (exemple : coca cola , areva, nestlé).
Il me semble qu'il faut utiliser une zone de critères pour cela; doit-elle se situer sur la feuille-même? Puis-je la placer dans un autre fichier excel?
Merci à tous,
Cordialement,
Etienne
Bonjour niay, forum,
Pourquoi n'adapte-tu pas à ton cas (qui me semble assez similaire) ce que tu as appris sur ce fil ? : https://forum.excel-pratique.com/viewtopic.php?t=12495
Je pense que tu es en mesure de le faire.
Si vraiment problème, reviens.
Oui vba-new, tu as raison, mais je ne suis pas arrivé à un résultat très convaincant, j'ai besoin de précisions, si tu as des réponses je suis prêt à les lire sur ce topic, ou sur l'autre :]
Crdlt,
Etienne