Macro: copier coller des lignes d'un tableau

Fermé
sousour1987 Messages postés 27 Date d'inscription dimanche 18 octobre 2015 Statut Membre Dernière intervention 28 septembre 2018 - 18 oct. 2015 à 10:48
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 - 29 nov. 2015 à 18:02
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!
A voir également:

4 réponses

via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
18 oct. 2015 à 15:31
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

0
sousour1987 Messages postés 27 Date d'inscription dimanche 18 octobre 2015 Statut Membre Dernière intervention 28 septembre 2018
18 oct. 2015 à 16:03
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
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702 > sousour1987 Messages postés 27 Date d'inscription dimanche 18 octobre 2015 Statut Membre Dernière intervention 28 septembre 2018
18 oct. 2015 à 16:58
Il y aura un tableau par processus donc 5 tableaux (d'après ta demande initiale) sur 5 feuilles différentes
Merci de le confirmer
0
sousour1987 Messages postés 27 Date d'inscription dimanche 18 octobre 2015 Statut Membre Dernière intervention 28 septembre 2018
18 oct. 2015 à 17:55
oui sur 5 fichiers Excel différents!
0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
18 oct. 2015 à 19:04
Je veux bien faire une macro mais dans ton fichier que tu nous as donné, y'a seulement 2 tableaux et ce ne sont pas les mêmes.

Les tableaux 1,2,3,4 et 5, sont ils identiques aux 6e (où toutes les données seront jointes) ?
0
sousour1987 Messages postés 27 Date d'inscription dimanche 18 octobre 2015 Statut Membre Dernière intervention 28 septembre 2018
18 oct. 2015 à 19:12
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!
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
Modifié par via55 le 18/10/2015 à 20:26
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
0
sousour1987 Messages postés 27 Date d'inscription dimanche 18 octobre 2015 Statut Membre Dernière intervention 28 septembre 2018
18 oct. 2015 à 21:12
ok, c'est exactement ce que je voulais, sauf que les tableaux ne sont pas sur le même fichier, ce sont en fait 6 fichiers différents (1 par tableau).
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702 > sousour1987 Messages postés 27 Date d'inscription dimanche 18 octobre 2015 Statut Membre Dernière intervention 28 septembre 2018
19 oct. 2015 à 00:03
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 feuille
ligneS = 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
0
sousour1987 Messages postés 27 Date d'inscription dimanche 18 octobre 2015 Statut Membre Dernière intervention 28 septembre 2018
19 oct. 2015 à 09:28
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à!
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702 > sousour1987 Messages postés 27 Date d'inscription dimanche 18 octobre 2015 Statut Membre Dernière intervention 28 septembre 2018
19 oct. 2015 à 14:21
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
0
Sousour1987
20 oct. 2015 à 16:28
Ouaou ça y'est elle fonctionne!
Au début il y a avait un message d'erreur mais j'ai rectifié le tir!

merci beaucoup!!!
0
sousour1987 Messages postés 27 Date d'inscription dimanche 18 octobre 2015 Statut Membre Dernière intervention 28 septembre 2018
28 nov. 2015 à 11:25
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
0
Sousour1987
29 nov. 2015 à 14:36
http://www.cjoint.com/c/EKDnJVmyaqj

je suis désolé mais j'ai tout changé et cela ne fonctionne toujours pas...
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
29 nov. 2015 à 18:02
Re,

Ligne de la macro : classeur(1) = "Pilotage Processus ACH - MAI - MTH.xlsx"

Nom du classeur : Pilotage Processus ACH - MTH - MAI.xlsx

Ca ne peut évidemment pas fonctionner !
0