Deplacer ou copier

Bonjour à tous,

Je voudrai créer un projet qui me permet de copier une feuille d'un classeur vers un autre classeur en VBA avec le même nom.

Si vous avez une solution je suis preneur.

Merci d'avance

Amicalement

Noel

Re,

Je vous joints mes fichier avec explications

Merci d'avance

Amicalement

Noel

10projet1.zip (8.57 Ko)
18projet2.xls (13.50 Ko)

Bonjour,

Déplacer une feuille, c'est :

ThisWorkbook.Feuil1.Move before:=Workbooks("Projet2.xls").Worksheets(1)

par exemple : là on déplace Feuil1 de Projet1 vers Projet2 où on la positionne en première position.

Il faut savoir que deux feuilles ne peuvent avoir le même nom. Elle sera éventuellement renommée. Il faut donc gérer les noms.

Un classeur doit toujours contenir au moins une feuille: dans ce cas il faudra copier (Copy) au lieu de déplacer (Move), et éventuellement détruire le classeur résiduel ensuite.

D'autres questions peuvent se poser, que des classeurs vides (sans données...) ne permettent pas de traiter : si des formules font référence à d'autres feuilles (qui créeront des liens entre classeurs si on les exporte), s'il y a des macros dans le module de la feuille (à conserver ou non, et voir la compatibilité en étant exportée), s'il y a des noms dans le classeur (il seront exportés avec la feuille...).

Bref ! il faut cerner toutes ls implications pour pouvoir traiter toutes les situations susceptibles de se présenter.

Cordialement.

Bonjour MFerrand,

J'espère que ça va bien. Cela un peu de temps que je ne t'ai pas entendu.

Je sais bien que 2 feuilles dans un même classeur ne peux pas porter le même nom.

Pour sa position on peut la mettre où on veut c'est pas un problème

En aucun moment il faudra supprimer le classeur résiduel.

Les classeurs normalement ne sont pas vide. Les classeurs pourront porter les mêmes appellations. Seules le contenu des cellules changent en copiant d'un porjet à l'autre.

Je te rassure il n'y a aucun code dans la feuille.

Pour le moment je voudrai tout simplement copier une feuille du Projet1 vers le >Porjet2 avec le contenu des cellules de la 1 qui viendraient écraser le contenu des cellules de la 2

Merci de ton aide

Cordialement

Noel

Pour le moment je voudrai tout simplement copier une feuille du Projet1 vers le >Porjet2 avec le contenu des cellules de la 1 qui viendraient écraser le contenu des cellules de la 2

Ça ce n'est pas la même chose ! On copie des plages (les feuilles ne bougent donc pas) entre deux feuilles portant le même nom. C'est ça ?

Il faut alors savoir, s'il y a des formules à conserver, ou si l'on ne transfère que des valeurs.

Re,

Je te rassure il n'y a aucune formule dans les cellules.

Cordialement

Noel

Ok ! Pour l'instant, tes deux classeurs n'ont pas les même feuilles avec les mêmes noms. Est-ce qu'ils les auront au démarrage (la première fois qu'on lance la procédure), ou bien faut-il procéder par copie la première fois ?

Re,

Les 2 façons m’intéressent je suis preneur.

Cordialement

Noel

Première mouture qui procède par copie de feuille.

Les feuilles sont listées dans une ComboBox à l'ouverture du Userform. Au lancement du transfert (bouton), il est testé si Projet2 est ouvert, dans le cas contraire, il est ouvert (les deux classeurs doivent être dans le même dossier). Il est ensuite testé si la feuille existe déjà dans Projet2, si c'est le cas, la feuille à transférer sera positionnée après celle qu'elle doit remplacer, sinon à la fin.

Le nom de la feuille à transférer est temporairement modifié lors de la copie. Elle reprend son nom après destruction de la feuille antérieure.

La liste de feuilles dans la Combo est réinitialisée pour éliminer de la liste la feuille transférée.

On quitte le Userform par le bouton Quitter. Durant les copies, le classeur Projet2 et automatiquement passé au premier plan (actif), en quittant, Projet1 est rétabli comme classeur actif.

La procédure de lancement du Userform est dans Module1. Soit tu réserves une feuille non transférable pour y placer un bouton auquel affecter cette macro, soit tu la dotes d'un raccourci clavier pour la lancer par une combinaison de touches.

Cordialement.

10projet2.zip (7.12 Ko)
15projet1.zip (11.71 Ko)

Re,

Merci cela fonctionne comme il se doit.

Maintenant je voudrai savoir si ce petit projet pourrait ouvrir 2 projets et transférer des feuilles d'un projet à l'autre c'est à dire les 2 projets indépendants du Projet1 actuel.

Merci encore


Re,

Merci cela fonctionne comme il se doit.

Maintenant je voudrai savoir si ce petit projet pourrait ouvrir 2 projets et transférer des feuilles d'un projet à l'autre c'est à dire les 2 projets indépendants du Projet1 actuel.

Merci encore

Précise ce que tu entends par là !

Projet1 (qui contient le code) ouvrirait Projet3 et Projet4, et transfèrerait des feuilles de Projet3 à Projet4 ?

Bien sûr que ça peut se faire, il faut juste coder ce que l'on souhaite faire...

Bonjour à tous,

Bonjour MFerrand,

Ce code fonctionne très bien et j'en suis satisfait.

Mais je reste un peu sur ma faim. A savoir ce projet fait une exportation de feuilles. Mais je voudrai savoir si on peut faire l'importation des feuilles vers un autre projet.

Peut-être qu'il serait souhaitable de le faire à partir d'une boite de dialogue en entrant le nom du projet à exporter les feuilles et le nom de l'autre projet en important les feuilles du projets ouvert.

Merci d'avance

Amicalement

Noel

Bonjour,

En exportant d'un côté, on importe d'un autre, c'est export pour celui dont ça sort et import pour celui qui reçoit...

Jusque là on exportait des feuille de Projet1 pour les importer dans Projet2. Opération commandée à partir de Projet1.

Tu peux évidemment faire l'inverse, toujours commandé à partir de Projet1.

Comme tu peux opérer des mouvements entre Projets, qui n'affecteront pas Projet1 mais peuvent toujours être commandés à partir de ce dernier.

Le tout est de définir l'ensemble des mouvements que tu souhaites pouvoir faire, et les conditions, si ce sont les mêmes (une feuille déplacée remplace la précédente) ou d'autres. A partir de là, on voit les adaptations à réaliser.

Bonne journée.

Bonjour MFerrand,

Je voudrai quand je suis sur mon projet peu importe le nom avec une dizaine de feuilles que je puisse ouvrir le projet désiré si cela se trouve il contient les même feuilles bien sure remplies avec des données différentes.

Sur mon projet ouvert au départ je voudrai importer des feuilles du second projet vers le projet ouvert.

Je sais pas si je me suis fait bien comprendre.

Merci de ton aide

Cordialement

Noel

J'étais sorti (poussé jusqu'à St Louis faire quelques courses...)

Tu veux le processus dans l'autre sens, mais est-ce que de la même façon on doit substituer les feuilles (la feuille importée remplace la feuille antérieure) ?

Re,

Je voudrai tout simplement travailler sur un projet et pouvoir de ce projet importer des feuilles d'un autre projet dans le projet que je travaille dessus.

C'est cela peut se faire dans n'importe quel sens mais il faut ouvrir le projet que je ne dois pas travailler dessus.

Cordialement

Noel

Pas pu regarder aujourd'hui (réveil un peu trop tardif... ) mais j'ai noté ce que tu souhaites...

Bonne soirée.

Bonjour,

C'est rare quand ce moment les personnes se réveillent tard.

Si j'ai bien compris tu es sur l'ile actuellement.Tu pourrais venir passer un WE à la maison sur Saint Joseph.

Je me permets de te faire cette proposition mais cela peut-être en semaine. Cela nous permettra d'échanger nos projets.

Merci de ton aide

Cordialement

Noel

Excuse le délai ! Côté réveil, je suis plutôt "spécial" ! J'ai toujours eu tendance à veiller tard, j'ai eu aussi travaillé de nuit autrefois, et depuis un an/un an et demi je dors de moins en moins la nuit, comme je ne dors pas moins pour autant cela se traduit par des horaires tournants sur le cycle de 24h...

Les deux derniers jours, j'avais laissé ton projet de côté car je ne sentais pas mon attention assez aiguisé pour régler le fonctionnement interne du Userform. Je m'y suis mis ce matin (en fait après midi), et ça paraît OK. Dans la soirée, j'ai bouclé le Userform hors validation, et (après avoir dormi un peu !) fini la validation. Il me reste à tester demain...

Il me semble que tu préfères lancer par raccourci clavier, auquel cas tu affecteras un raccourci à la procédure de lancement du Userform.

Si tu souhaites affecter le lancement à un bouton, on peut mettre un bouton dans le Projet1. Il serait utile alors de savoir si la feuille ayant le bouton peut être ou non transférée comme les autres (je compléterais le programme selon choix dans ces cas).

Je te remercie pour ton invitation... Dans l'immédiat, je suis un peu bousculé mais je prends note. En tout cas si je me déplace dans le sud en pouvant le prévoir un peu avant, je te le signalerais par mail, pour le cas où l'on puisse se rencontrer. Tu es en permanence sur St Joseph, ou éventuellement St Pierre.... ?

Cordialement.

Bonjour,

Ne t'inquiète pas pour le moment je prends la 1ère solution.

Heureusement que je ne suis pas très insomniaque. J'ai encore cette chance. Le soir malheureusement je me couche de bonne heure entre 21 h 22 h 00. Il m'arrive de me réveiller très tôt si j'ai un problème excel à résoudre sinon mon réveil se fait entre 6 et 7 h.

C'est vrai je préfère le raccourci clavier. C'est vrai aussi je travaille beaucoup en USF . Un bouton dans l'USF se serait l'idéal c'est ce que je fais habituellement.

Pour l'invitation ça tient toujours.

Malgré moi je suis toujours en permanence sur Saint Joseph. J'ai une voiture électrique donc je n'envisage pas m'éloigner trop de Saint Joseph qui plus est ma femme l'utilise pour le boulot sur Saint Pierre journellement.

Cordialement

Rechercher des sujets similaires à "deplacer copier"