Sélection plage cellules particulières VBA

Résolu/Fermé
Max - 19 juin 2012 à 18:24
 Max - 20 juin 2012 à 19:08
Bonjour,

J'ai une liste de données, comment puis-je copier le contenu des cellules comprises entre la cellule "Matériel" et la cellule "Commentaire"? La difficulté est que j'ai plusieurs feuillets dans mon classeur excel et que pour chaque feuillet ces 2 cellules ne sont pas au même endroit, je ne peux donc pas utiliser de coordonnées fixes dans mon code VBA.
Je serai reconnaissant si une personne pouvait m'aider car ça fait déjà quelques heures que je planche dessus.


21 réponses

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
19 juin 2012 à 18:56
bonjour

est ce que c'est un début de réponse?
https://www.cjoint.com/?0Fts33jfnud

bonne suite
1
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
Modifié par Mike-31 le 19/06/2012 à 18:49
Salut,

je ne comprends pas tout, joint un fichier exemple ça aidera à suivre tes explications.
Pour joindre ton fichier, clic sur ce lien

https://www.cjoint.com/

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Les données étant confidentiels, j'ai joint un fichier "exemple". Je voudrai copier pour chaque onglet les cellules entre la cellule "material" et 'comments", sachant que ces cellules ne sont jamais au même niveau dans la colonne B d'un feuillet à l'autre.
Dis moi si je ne suis pas assez clair.
http://cjoint.com/?3Fts313N1L7
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
Modifié par Mike-31 le 19/06/2012 à 19:16
Re,

J'ai récupéré ton fichier, la plage à copier ne pose pas de problème que la ligne de début ne soit pas sur le même index. Par contre quel est le critère de début de collage, es ce que Matériel est déjà sur les autres feuilles ou veux tu mettre à la suite des données de la feuille 1 sur les données déjà présente sur la feuille 2
ou veux tu copier les lignes
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0

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

Posez votre question
Je souhaite copier les cellules entre matériel et commentaire, dans une autre colonne dans un autre classeur, les un à la suite des autres.
Mon fichier contient une cinquantaine d'onglets c'est pour ça, j'aimerai bien avoir un code VBA pour faire ça.

ccm81 merci de ta réponse, mais je ne comprends pas bien ce que fait ton code... il faudrait que quand je l'exécute, il copie ces données dans un autre classeur comme expliqué ci-dessus.

Dites moi si je suis assez clair
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
19 juin 2012 à 21:06
Re,

regarde ton fichier voir si c'est ce que tu cherches, un code peut être plus basique qui peut être complété

https://www.cjoint.com/?BFtveRUJ3iy
0
Ce n'est pas encore ça, il faudrait que le code balai les trois feuillets (plus de 50 dans l'original) et recopie les données entre les cellules "material" et "comments"
dans la colonne E d'un autre classeur.
Pour l'instant, il copie juste le premier feuillet et j'ai l'impression qu'il faut que je change à chaque fois la case pour chaque feuille.

Ce que j'avais pensé faire une boucle for qui parcours tous les onglets, et "trouve" (peut-être avec un find), la cellule "material" et "comments", puis d'en extraire leur coordonnées. Puis copier les cases contenu dans la plage de coordonnées obtenue.

Je sais pas si c'est possible car tous mes essais ont étés infructueux pour le moment. En tout cas merci de m'aider, j'ai vraiment besoin d'une solution à ce problème pour mon stage demain...
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
19 juin 2012 à 21:35
Re,

Oui il est possible de faire une boucle mais je pense que si j'arrive à cerner ta demande le code sera facile à réaliser. si en feuil1 la première cellule de ta plage est Material et la dernière Comments le code sur le fichier joint copie sans problème sur les 3 feuilles les cellules qui se trouvent entre ces deux.

https://www.cjoint.com/?BFtvIzuYLSf
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
19 juin 2012 à 21:38
Peut être souhaites tu coller les cellules copiées avant la cellule Comments !
0
J'ai conscience que je ne suis pas assez clair. J'ai trouvé le moyen pour que tu cerne mieux mon problème. Je t'envoie un classeur qui montre le résultat que je souhaite obtenir:

http://cjoint.com/?3FtvX09EwHm

Je pense que ça va éclaircir la situation.
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
19 juin 2012 à 22:08
Re,

Tu veux créer une liste composé des données des trois feuilles c'est cela !

et cette liste veux tu la copier sur les 3 feuilles !
0
C'est ça ! Par contre je ne veux pas copier sur les 3 feuilles, je veux juste la copier sur un autre classeur. Les 3 feuilles doivent rester inchangés.
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
19 juin 2012 à 22:18
Re,

Le code c'est bon, mais ce nouveau classeur est il dans le même répertoire !
0
Je veux qu'il y ait 2 fichiers excel sur le bureau, l'original et celui qui contient la liste.
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
19 juin 2012 à 22:38
Re,

enregistre les deux fichiers sur le bureau, ouvre Max et active le bouton

https://www.cjoint.com/?BFtwJyfOAQU

https://www.cjoint.com/?BFtwK5KAk4e

reste plus qu'a fermer le fichier Max sans enregistrer et enregistrer le Fichier2, bien sur ces fonctions peuvent être insérées dans le code
0
Merci, ça marche! Il y a juste un problème, c'est qu'il faudrait que la liste soit dans l'ordre inverse... les données de la feuille 1 à la feuille 3 et non de la 3 à la 1 comme actuellement.

Ne comprenant pas trop le code, je n'arrive pas à le modifier pour l'insérer dans le code.

Plus important, comment je l'adapte à 50 feuilles?
0
J'ai compris comment tu as procédé, ce qui manque pour l'adapter à mon fichier c'est que dans mon fichier les autres cellules de la colonne B ne sont pas vide. Donc les .end(xlup) et .end(xldown) ne marche pas.
Comment faire dans ce cas?
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
Modifié par Mike-31 le 20/06/2012 à 08:25
Re,

Que veux tu dire par "dans mon fichier les autres cellules de la colonne B ne sont pas vide"
la cellule qui précéde "Comments" n'est pas vide, c'est cela !

pour l'ordre de copier les plages ce n'est pas un problème, j'ai séparé le code pour te permettre de le suivre

https://www.cjoint.com/?BFuiyMKNC8A

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
ça veut dire qu'il y a du texte dans toute les cellules de la colonnes B (B1, B2,..., B555...). C'est pour ça que les end(xldown) et end(xlup) ne fonctionnent pas.
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
20 juin 2012 à 15:30
Re,

Je te regarde ça dans la soirée, mais cela n'est pas un problème juste une adaptation
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
20 juin 2012 à 18:51
bonjour

est ce que ceci correspond ?
https://www.cjoint.com/?0FusARgp68I

RQ. les cellules fusionnées risquent de poser des problèmes

bonne suite
0