|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() ![]() Étudiant Inscription : novembre 2011 Messages : 102 ![]() |
Bonjour le forum !
Petite énigme en VBA en cet après-midi fort gris Sur une feuille "Depart", j'ai un tableau de données comme sur le screenshot ci-joint. Je souhaite, pour chaque classe, créer une nouvelle feuille qui sera nommée selon le numéro de la classe et qui récupèrera les informations propre à cette classe. Pour ce faire, j'ai créé une liste sans doublon (qui est effacée à la fin du traitement). Ensuite je filtre mon tableau en fonction de la classe afin de copier les données de chaque classe une à une et de les coller dans les feuilles nouvellement crées. Ainsi, à la fin je me retrouve avec un classeur comportant les feuilles suivantes : Depart > 1 > 2 > 3 > 4 Voici mon bout de code : Code :
Quand j'exécute ma macro, la liste sans doublons est créée impeccablement mais survient une erreur d'exécution 1004 sur la ligne que j'ai écrite en rouge : "Cette sélection n'est pas valide. Raison possibles: - les zones de copie et de collage ne peuvent se superposer que si elles sont de dimension et de forme identiques. - si vous utilisez la commande Créer à partir de la sélection, la ligne ou la colonne contenant les noms proposés n'est pas incluse dans les" (je n'ai pas la suite du message, impossible d'agrandir la fenêtre !) D'avance, merci beaucoup everybody ! ![]() Kaera* |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Tu as laissé le 6 dans A6:E6. C'est pas ça ?
|
|
|
20
|
|
|
#3 |
|
Membre du Club
![]() ![]() Étudiant Inscription : novembre 2011 Messages : 102 ![]() |
Salut ZebreLoup !
Non je ne pense pas que ça vienne de là car j'ai également testé "A6:E", sans succès. |
|
|
00
|
|
|
#4 | ||||
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Alors Code :
lastlig = Range("C1048576").End(xlUp).Row Code :
avec lastlig = 20 par exemple, vba comprend "A6:E6" & "20"... donc "A6:E620" ![]() il vaut donc mieux mettre Mais le problème est plus profond me semble t il Lorsque tu crées une nouvelle feuille, tu ne sélectionnes pas la bonne feuille par la suite. Voila une possibilité de faire (je n'ai pas testé) Code :
Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
||||
|
|
20
|
|
|
#5 |
|
Membre du Club
![]() ![]() Étudiant Inscription : novembre 2011 Messages : 102 ![]() |
Salut salut,
D'abord, au temps pour moi ZèbreLoup. ![]() Ensuite, Qwazerty, merci de ta réponse. MEA CULPA : il y a une minuscule erreur dans le code que j'ai donné au début du topic. Je crée une liste temporaire sans doublon dans la colonne M mais plus bas j'ai écrit colonne P. Donc, sorry. Du coup, ton code lavé de ma faute doit donner : au lieu de Code :
NewSheet.Name = TheCell.Offset(0, -3) '-3 = de la colonne P à la colonne M Autre chose : à propos de l'utilisation du nom de la feuille plutôt que Worksheets(2), le problème c'est que la feuille en question porte un nom avec partie fixe et partie variable. Explanation : La feuille est nommée par macro "Depart_nomfichier" et varie donc en fonction du nom du fichier. Merci d'avance.
|
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Dans ce cas la Offset te permet de te décaler de y lignes et x colonne, donc se décaler de 0, 0 revient à rester en place Pour le reste, il faudrait avoir une vue un peu plus large de ton code, par exemple à quel moment crées tu la feuille que tu pointes avec worksheets(2) et comment appelles tu le morceau de code que tu nous a donné? Le fait d'avoir une partie variable sur le nom d'une feuille n'est pas un problème, exemple Code :
Et donc par extension la création des feuilles est faite par le code que tu nous propose? right? ++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
||
|
|
10
|
|
|
#7 |
|
Membre du Club
![]() ![]() Étudiant Inscription : novembre 2011 Messages : 102 ![]() |
Hallo,
Il est vrai que j'aurais dû davantage expliciter le "contexte" de mon bout de code. ![]() Le but de la macro-mère (qui contient donc des macros-enfants, dont le code que j'ai donné en début de topic) est d'importer un fichier texte, de le nettoyer, le mettre en forme et d'effectuer quelques traitements avec les données, tout ceci afin de faciliter la lecture et l'analyse dudit fichier. Le nom de ma worksheets(2) varie donc en fonction du fichier importé. Les étapes du traitement de la macro-mère: -importer le fichier texte -le nettoyer des lignes futiles -organiser les données sous forme de tableau -filtrer ledit tableau en fonction de la colonne C et pour chaque donnée différente en C (ici la classe), créer une nouvelle feuille sur laquelle seront copiées les lignes du tableau propres à la donnée du tableau filtré. Vielen Dank im Voraus (PS: je me sens d'autant plus idiote que j'avais pourtant bien compris le concept d'Offset...) |
|
|
00
|
|
|
#8 |
|
Expert Confirmé Sénior
![]() ![]() |
Salut
Pas de soucis pour Offset, on est parfois trop pressé Pour ce qui est de ta macro, ta macro-mère ouvre le fichier texte, donc ensuite rien ne t'empêche de pointer la feuille dans une variable worksheet et de la passer en paramètre à ta macro-enfant (ou juste le nom du fichier). N'hésite pas à proposer ton code si tu veux une simplification (si nécessaire) et ça nous permet de mieux voir les interactions entre les différentes macro. A toi de voir. ++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
|
|
10
|
|
|
#9 |
|
Membre du Club
![]() ![]() Étudiant Inscription : novembre 2011 Messages : 102 ![]() |
Salut Qwaz'
C'est une macro qui comporte pas mal de traitement et qui contient des informations que je ne peux divulguer. Lorsque c'était pour des bouts de code, ce n'était pas grave et puis je pouvais toujours modifier les infos "gênantes", mais là, impossible ! ![]() Néanmoins je te remercie beaucoup, une fois de plus ! ![]() 'nuit |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com