Macro: copier coller des lignes d'un tableau
sousour1987
Messages postés
27
Statut
Membre
-
via55 Messages postés 14393 Date d'inscription Statut Membre Dernière intervention -
via55 Messages postés 14393 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je débute en macro et je me heurte à un problème!
j'ai 5 Tableau Excel dont les colonnes sont identiques, mais le remplissage des lignes est différent.
Je souhaiterais faire un 6ème tableau "tableau compilé" allant chercher les lignes des 5 autres tableaux. Sachant que:
- dans les 5 tableaux le nombre de lignes peut être différents,
- je voudrais pouvoir "réactionner" cette macro autant de fois que je le souhaite, elle pourrait donc écraser les données précédentes.
Quelqu'un peut m'aider??
Merci d'avance!
je débute en macro et je me heurte à un problème!
j'ai 5 Tableau Excel dont les colonnes sont identiques, mais le remplissage des lignes est différent.
Je souhaiterais faire un 6ème tableau "tableau compilé" allant chercher les lignes des 5 autres tableaux. Sachant que:
- dans les 5 tableaux le nombre de lignes peut être différents,
- je voudrais pouvoir "réactionner" cette macro autant de fois que je le souhaite, elle pourrait donc écraser les données précédentes.
Quelqu'un peut m'aider??
Merci d'avance!
4 réponses
-
Bonjour
Pour pouvoir t'aider il faut connaitre plus précisément la structure de ton fichier
Tes 5 tableaux sont ils sur la même feuille ? et si oui les uns sur les autres ou côte à côte ? ou sont ils sur 5 feuilles différentes ?
Tu veux dans le 6eme tableau recopier les lignes des 5 autres les unes à la suite des autres ? etc
Le mieux est de joindre déjà un exemple de ton fichier (Pas besoin que les 5 tableaux aient beaucoup de lignes) avec un exemple du 6eme tableau que tu souhaite obtenir
Poster cet exemple sur cjoint.com, faire créer un lien , le copier et revenir l'indiquer ici
Cdlmnt
Via
-
Bonjour,
merci pour votre réponse.
voici le lien où se trouve le tableau:
https://www.cjoint.com/c/EJsn7LkY2gj
En fait à ce jour le document est vierge.Il y aura 1 tableau par processus. Le but est qu'un fois par mois je puisse compiler ce que les pilotes auront renseignés dans leur processus.
j'espère que c'est clair?
Merci -
-
-
-
oui oui tous identiques! enfin ils ont tous les mêmes colonnes par contre les lignes sont remplies différemment d'un processus à l'autre.
La ligne 6 (titres des colonnes) est la même dans tous les tableaux.
Les lignes 7,8,9,10,11,12,....sont différentes. c'est ces lignes là que je souhaite compiler dans le 6è tableau.
Désolée, j'avais pas vu dans le fichier le 2ème onglet, en fait il compte pas c'est pour les listes déroulantes!
-
-
Re
Les feuilles suivi étant obligatoirement les 5 premières du classeur et la feuille Recap la 6eme, le bouton sur la feuille Recap efface Recap sur 2000 lignes et y transfère les données des 5 feuilles (ALT + F11 pour voir le code)
http://www.cjoint.com/c/EJssxJjaC1l
Cdlmnt
Via
"L'imagination est plus importante que le savoir." A. Einstein-
-
Re
Rien ne t'empêche de copier-coller les 5 feuilles de tes 5 fichiers dans les 5 premières feuilles du fichier Recap (Clic droit sur l'onglet de la feuille du 1er classeur - Déplacer ou Copier - Dans le classeur : choisir le classeur Récap Avant la feuille : la feuille avec le tableau récapitilatif - Ne pas oublier de cocher la case Créer une copie)
Sinon
il faut que tous les classeurs soient ouverts (c'est plus complexe de lire dans des classeurs fermés) et modifier la macro ainsi :
En début de macro :
Dimensionner un tableau de 5 puis attribuer à chaque item du tableau le nom du classeur correspondant suivi de son extension :Dim classeur(5) classeur(1) = "AAA.xslx" ' Remplacer AAA par le nom du classeur classeur(2) = "BBB.xslx" 'etc...
Dans le corps de la macro modifier les lignes pour indiquer le bon classeur avant le choix de feuilleligneS = Workbooks(classeur(n)).Sheets(n).Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row'dernière ligne remplie en colonne 2 de la 1ere feuille du classeur n ligneS = Workbooks(classeur(n)).Sheets(1).Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row ' 'MODIFIER LE 1 SI CE N'EST PAS LA 1° FEUILLE DU CLASSEUR SOURCE ' si derniere ligne remplie est sup à ligne 6 If ligneS > 6 Then 'Boucle sur les lignes de la feuille suivi de la 7° à la dernière For lg = 7 To ligneS ' incremente de 1 la ligne de Récap ld = ld + 1 'copie les données de A à X Workbooks(classeur(n)).activate Sheets(1).Select Range("A" & lg & ":X" & lg).Select Selection.Copy ' colle les données valeurs uniquement Workbooks("mettre ici entre "" ""le nom du classeur récap avec son extension").Activate Sheets(1).Select 'MODIFIER LE 1 SI CE N'EST PAS LA 1° FEUILLE DU CLASSEUR RECAP Range("A" & ld).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ' copie les données de la colonne AA Workbooks("mettre ici entre "" ""le nom du classeur récap avec son extension").Sheets(1).Range("AA" & ld) = Workbooks(classeur(n)).Sheets(1).Range("AA" & lg) ''MODIFIER LES 1 SI NECESSAIRE Next lg End If
Cdlmnt
Via -
Merci,
j'ai fait les modifs et ça ne fonctionne toujours pas....
je ne trouve pas l'erreur:
https://www.cjoint.com/c/EJthBXwNjIG
En tout cas merci, sans vous 2 je n'en serais encore pas là! -
Bonjour
Plusieurs erreurs :
- le tableau n'était pas dimensionné et les items mis avant la macro au lieu d'être en début de macro
- les noms des classeurs dans les items ne correspondaient pas au réels (un espace après les --- alors qu'il n'y en pas pour les classeurs sources, extension xlsx au lieu de xlsm)
- le nom du classeur manquait pour la copie de la colonne AA
Version rectifiée qui fonctionne :
http://www.cjoint.com/c/EJtmp2kp0ml
Cdlmnt
Via -
-
-
Ah ok je vois mon erreur, dans le doc que j'ai envoyé hier j'ai bien totu renommé, remplacé n to 9 par n to 7, mais Pliotage SMQ je l'ai appelé classeur (8).
Merci -
http://www.cjoint.com/c/EKDnJVmyaqj
je suis désolé mais j'ai tout changé et cela ne fonctionne toujours pas...