Comment copier par une macro une colonne et coller dans le tableau d'une autre feuille

bidouill

XLDnaute Nouveau
bonsoir tout le monde

je pense que je suis toujours aussi mauvais en VBA ou macro dans Excel ;-)

Alors je vais tout de même essayer d'être clair.

J'ai un 1er fichier dans lequel j'ai un onglet qui se nomme "contrôle niveau 1". Ce fichier, qui va être toujours nouveau (utiliser pour chaque nouveau dossier) à d'autre onglet (mais peu importe, je pense). Dans les fichiers joints, je l'ai appelé " controle.xlsx" (le fichier réel est en xlsm).

les cellules 2 à 11 se complètent automatique avec d'autres onglets donc des ="nom de la cellule"

Mon but est de copier de la cellule B2 à B28 l'ensemble des valeurs. ensuite les valeurs doivent se copier dans l'onglet "Fiche" d'une autre feuille qui s'appelle dans mon exemple "ex Q.xlsx". Ce classeur Excel se trouve pour info sur Sharepoint.

En copiant il doit d'abord trouver la 1er colonne vide (colonne E) dans mon ex, et copier l'ensemble des valeurs (et non pas les formules) ci-dessus, à partir de la cellule E4 (dans cet ex mais suivant la 1er colonne vide) jusqu'à E28.

Et le nirvana c'est que cette colonne E qui est vide reprenne aussi la mise en forme de la précédente (donc la D dans mon exemple).

Le fichier "controle.xlsm" peut avoir n'importe quel nom par contre le nom de l'onglet ne change pas.

Le nom du fichier "ex Q.xlsx" ne change pas et son onglet non plus.

enfin j'imagine que ce fichier qui regroupe tous les contrôles des différents bureaux doit obligatoirement être ouvert pour faire fonctionner le bouton avec la macro (dans contrôle.xlsx)

j'espère avoir été suffisamment clair, car moi j'ai du mal à m'y retrouver ;-)

merci d'avance pour votre aide
 

Pièces jointes

  • controle.xlsx
    27.1 KB · Affichages: 11
  • ex Q.xlsx
    14.1 KB · Affichages: 18

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Bidouill,
En PJ un essai.
Une fois écrit ex Q.xlsx est sauvegardé.
Par contre, comme décrit ce nom de fichier ne changeant pas, je l'ai mis en dur dans le code.
Si vous changez d'avis il suffit de changer la ligne de code :
VB:
FichierDest = "ex Q.xlsx"
 

Pièces jointes

  • controle (2).xlsm
    34.4 KB · Affichages: 37

bidouill

XLDnaute Nouveau
Bonsoir Bidouill,
En PJ un essai.
Une fois écrit ex Q.xlsx est sauvegardé.
Par contre, comme décrit ce nom de fichier ne changeant pas, je l'ai mis en dur dans le code.
Si vous changez d'avis il suffit de changer la ligne de code :
VB:
FichierDest = "ex Q.xlsx"

déjà un grand merci pour ce taf.

j'ai testé avec les fichiers d'essai et cela fonctionne impécablement.
je viens d'essayer dans mes fichiers réels et là cela ne fonctionne pas.

alors comment j'ai précédé.
dans le fichier avec le bouton j'ai ajouté dans le bon onglet (feuille 29) le bouton. j'ai créé une marco "Copie". en ouvrant VB. dans le module 3 j'ai copié ta macro entre les 2 sub
ensuite j'ai copié public fonction...

j'ai changé le nom ex Q.xlsx.
j'ai affecté la macro Copie au bouton.


après avoir complété mon tableau je clic sur le bouton et j'ai un message d'erreur.

2020-02-07_22h25_45.jpg


2020-02-07_22h17_20.jpg


petite précision mais qui n'a rien à voir le fichier ex Q.xlsx à 3 onglets

J'ai oublié la copie de la mise en page de la colonne prend celle de la colonne C mais il faudrait prendre la D car la C est un exemple dans le fichier réel et donc en orange.

je te remercie pour ton aide

cordialement
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Je ne sais pas si c'est la cause, mais la macro doit être copiée dans un module ( module1,2, ou 3 ça n'a pas d'importance ) mais pas dans une feuille. S'il y a plusieurs feuilles, il suffit que le bouton dans chaque feuille appelle la même macro.
Ensuite lorsqu'il se plante regardez dans la fenêtre espions ce que vaut FichierSource.
Il devrait valoir le nom du classeur ouvert.
Ensuite avez vous appelez dans la feuille la ZoneSource , J'ai ainsi appelé la zone B2:B28 pour la copier plus facilement.
 

bidouill

XLDnaute Nouveau
Bonjour,
Je ne sais pas si c'est la cause, mais la macro doit être copiée dans un module ( module1,2, ou 3 ça n'a pas d'importance ) mais pas dans une feuille. S'il y a plusieurs feuilles, il suffit que le bouton dans chaque feuille appelle la même macro.
Ensuite lorsqu'il se plante regardez dans la fenêtre espions ce que vaut FichierSource.
Il devrait valoir le nom du classeur ouvert.
Ensuite avez vous appelez dans la feuille la ZoneSource , J'ai ainsi appelé la zone B2:B28 pour la copier plus facilement.

mille merci je regarde et reviens vers toi
 

bidouill

XLDnaute Nouveau
mille merci je regarde et reviens vers toi

Salut Sylvanu

j'ai cherché un moment avec l'espions mais rien… j'aurais dû lire ta dernière ligne en 1re :D. le problème venait de là car je n'ai pas donné le nom "ZoneSource" au cellule de B2:B28

par contre dans ex Q.XLSX comment indiqué qu'il faut prendre la mise en forme de la colonne D et non C et il faut impérativement que la copie se fasse dans l'onglet "Fiches", car à l'inverse du fichier exemple (ex Q.xlsx) j'ai 3 onglets en tout.

une dernière chose il faut prendre quelles lignes dans la macro qui indique que le fichier n'est pas ouvert c'est pour l'ajouter dans une autre macro

encore 1000 merci
 

bidouill

XLDnaute Nouveau
Bonjour,
Si cela vous arrange vous pouvez remplacer [ZoneSource].Copy par Range("B2:B26").copy
Entre colonne C et Colonne D je ne vois pas de différence de formats, mais bon ce n'était que l'exemple.
Le principal est que tout marche.
Si pb n'hésitez pas.

dans le fichier réel j'ai une autre colonne en C c'est pour ça.
il y a une solution pour être cetain que les infos soient copiées dans l'onglet "Fiches" quand il y a plusieurs onglets?

merci
 

Discussions similaires

Statistiques des forums

Discussions
312 027
Messages
2 084 765
Membres
102 658
dernier inscrit
karima