Macro pour copier une colonne nommée vers un autre tableau

Bonjour,

Je suis débutante en VBA et bien que je commence à maitriser Excel je ne parviens pas à enregistrer une macro qui correspond à ce que je veux. J'espère que vous pouvez m'aider.

J'ai deux tableaux Excel : MAJ (actuellement vierge, mais ne le sera pas toujours) et base, les deux étant dans deux classeurs différents. Je souhaiterais tout simplement copier les données de certaines colonnes du tableau base vers le tableau MAJ via une macro (qui me servira dans l'enregistrement d'une autre macro "finale").

Je me demandai si c'était possible en nommant chaque colonne des deux tableaux .. Exemple : Je nomme "désignation" une colonne du tableau base, et je fais pareil pour une autre colonne du tableau MAJ. Je souhaite que ma macro copie la colonne "désignation" du tableau base et la colle dans la colonne du même nom du tableau MAJ, sans effacer ce que cette dernière peut contenir. Et ainsi de suite pour les autres colonnes (montant, organisation, année, numéro, type d'investissement, statut, ...)

Je ne sais pas si je suis claire ... Si cela vous semble trop compliqué n'hésitez pas à me proposer une autre macro.

Merci d'avance pour votre aide !

PS : Quand je dis "nommer", c'est nommer via l'onglet "formules".

64base.xlsm (9.55 Ko)
49maj.xlsm (9.08 Ko)

Bonjour et bienvenue sur le forum

Tu écris :

Je souhaite que ma macro copie la colonne "désignation" du tableau base et la colle dans la colonne du même nom du tableau MAJ, sans effacer ce que cette dernière peut contenir.

Mais fait-on si pour une cellule de la même ligne les données sont diférentes sur les deux fichiers ?

Bye !

gmb a écrit :

Bonjour et bienvenue sur le forum

Tu écris :

Je souhaite que ma macro copie la colonne "désignation" du tableau base et la colle dans la colonne du même nom du tableau MAJ, sans effacer ce que cette dernière peut contenir.

Mais fait-on si pour une cellule de la même ligne les données sont diférentes sur les deux fichiers ?

Bye !

Bonjour,

Je souhaite simplement ajouter de nouvelles lignes à mon tableau MAJ, sans modifier celles qui existent déjà. Normalement les lignes déjà existantes sont différentes de celles que je souhaite copier.

Merci !

Il n'est pas nécessaire de nommer les colonnes pour arriver au résultat souhaité...

Un essai à tester. Te convient-il ?

Bye !

398suryane.zip (31.45 Ko)
gmb a écrit :

Il n'est pas nécessaire de nommer les colonnes pour arriver au résultat souhaité...

Un essai à tester. Te convient-il ?

Bye !

En effet ta macro marche super bien ! Merci beaucoup !!

Je crois l'avoir à peu près comprise, mais quand je tente de l'utiliser sur mes vrais fichiers cela ne marche pas, j'ai pourtant bien changer le nom du dossier et celui-ci devrait être bon.

(j'ai modifié le texte de la MsgBox car pour une raison que j'ignore cela ne marchait pas avec ce que tu avais mis.)

comment faire si je souhaite qu'il copie d'autres colonnes ?

Tu dois alors modifier deux instructions :

            colB = Choose(i, 1, 3, 4, 15)
            col = Choose(i, 3, 8, 6, 10)

Les valeurs 1,3,4 et 15 de la première instruction correspondent aux numéros de colonnes de la feuille ‘’Bas’’e (d’où le B de colB) où on trouve les titres de colonnes qu’on veut reporter.

Les valeurs 3,8,6 et 10 correspondent, dans le même ordre, aux numéros de colonne de la feuille de départ (fichier MAJ) où on trouve les mêmes titres de colonnes.

Donc, si tu veux ajouter une colonne à reporter, tu ajoutes son numéro de colonne à colB et à col.

Exemple :

Tu veux ajouter le montant qui se trouve à la colonne S (donc n° 19) sur la feuille ‘’Base’’ et à la colonne G (donc n° 7) sur le fichier MAJ. (En fait, sur le doc Base, je ne l’ai pas trouvé…)

Il te faudra modifier les 2 instructions ainsi :

            colB = Choose(i, 1, 3, 4, 15,19)
            col = Choose(i, 3, 8, 6, 10,7)

OK ?

ou pour l'adapter à un autre classeur) ...

Dans ce cas, il te faudra copier – coller la macro sur un module de la feuill MAJ et modifier les deux premières instructions pour adapter les noms si besoin :

    Set wb = Workbooks("Base.xlsm")
    Set fb = wb.Sheets("Feuil1")

Avec :

"Base.xlsm"  à remplacer par le nom et l’extension du nouveau fichier source

"Feuil1"  à remplacer par le nom de l’onglet du fichier source où se trouvent les valeurs à reporter

OK ?

Bye !

Oui merci, en réfléchissant un peu et en testant j'ai compris, donc j'ai édité mon précédent message mais apparemment un peu tard.

J'ai donc bien modifié le nom du classeur et de la feuille, pourtant cela ne marche pas (cf imp écran de mon précédent message) ...

En tout cas un grand merci pour ton aide, je commençais à désespérer alors que c'est pas bien dur !

Cela vient peut-être de ton fichier MAJ qui est un fichier version Excel 2003 avec une extension en .xls

Si c'est le cas, change le" Rows.count" par "65536" :

For Ln = 2 To fb.Range("A" & 65536).End(xlUp).Row

Mais il y a quelque chose qui m'interpelle : la variable " Ln " devrait être écrite en minuscule (" ln "), comme dans ma macro initiale.

Tu as dû faire une fausse manip ...

As-tu bien reporter les déclarations de variables, la ligne commençant pas Dim ?

Bye !

Je n'avais en effet pas recopier la première ligne, c'est rectifié.

J'ai essayé en remplaçant par 65536, cela ne me dit pas qu'il y a un problème mais ne marche pas pour autant. Ça cherche un peu, puis s'arrête sans rien avoir fait. Mon nouveau fichier (équivalent de mon fichier MAJ) est en .xlsm , je ne sais pas ce que ça signifie ...

Alors, je ne vois pas.

Essaie de joindre ton fichier. S'il est trop gros ( > 300 k) passe par www.cjoint.com

Bye !

Désolée du retard !

Mon tableau ExportBudget, équivalent du tableau base, contient des données confidentielles, je ne peux donc pas le joindre. J'ai testé toutes les combinaisons de tableau possibles, et apparemment ça marche seulement quand je copie les données (quel que soit le tableau de base) sur ton tableau MAJ v1. Donc là j'avoue je suis un peu perdue, les codes sont pourtant tout à fait identiques ...

Le Rows.Count n'a pas l'air de poser problème, vu que maintenant même en le laissant le code s'exécute, simplement rien ne se passe.

Mon tableau ExportBudget n'a pas l'air d'être en cause vu que j'ai pu copier ses données sur ton tableau MAJ v1 avec la macro ..

Je continue à tester différents tableaux mais j'avoue que j'y comprends pas grand chose là ...

En tout cas merci beaucoup de ton aide !

Edit : C'est vraiment bizarre, j'ai fait fonctionner la macro entre MAJ v1 et ExportBudget, la première fois pas de soucis ça me copie tout comme il faut (bon ça ne commence qu'à la 4ème ligne mais ce n'est pas très grave), ensuite j'ai supprimé les données qui venaient d'être copiées sur MAJ v1 pour recommencer et là ça ne marche plus. J'ai refait la manip plusieurs fois toujours le même problème ... Alors que entre MAJ v1 et Base pas ce problème (mais ça commence aussi à la 4ème ligne) ...

Bonjour

Tu écris :

...je ne peux donc pas le joindre.

Alors, essaie de me l'envoyer en message privé...

Sinon, je comprendrai mais je crains que nous ne soyons contraint d'en rester là...

Bye !

Bonjour Gmb, Forum

j'ai pratiquement le même problème.

je souhaiterais copier des colonnes d'une feuille nommée "A" d'un fichier export.xls vers une feuille nommée "import" d'un autre fichier xls (le nom peut changer)

j'ai copié ta macro que j'ai voulu modifier à plusieurs reprises mais un message d erreur à chaque fois.

Aurais-tu une idée?

merci

chvalet

73essai-import.xlsm (257.41 Ko)
Rechercher des sujets similaires à "macro copier colonne nommee tableau"