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   -
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!

4 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    1. sousour1987 Messages postés 27 Statut Membre
       
      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
    2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > sousour1987 Messages postés 27 Statut Membre
       
      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
    3. sousour1987 Messages postés 27 Statut Membre
       
      oui sur 5 fichiers Excel différents!
      0
    4. ozone_ Messages postés 1823 Statut Membre 511
       
      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
    5. sousour1987 Messages postés 27 Statut Membre
       
      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
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    1. sousour1987 Messages postés 27 Statut Membre
       
      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
    2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > sousour1987 Messages postés 27 Statut Membre
       
      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
    3. sousour1987 Messages postés 27 Statut Membre
       
      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
    4. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > sousour1987 Messages postés 27 Statut Membre
       
      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
    5. Sousour1987
       
      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
  3. sousour1987 Messages postés 27 Statut Membre
     
    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
  4. Sousour1987
     
    http://www.cjoint.com/c/EKDnJVmyaqj

    je suis désolé mais j'ai tout changé et cela ne fonctionne toujours pas...
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      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