Macro pour recopier une plage de cellule

bonjour

je suis nouveaux sur ce forum
et merci d'avance pour votre aide

j'ai un classeur excel (rapport journalier) , et par consequent les feuille sont nommee 1 , 2 , ....jusqu au 31

je desire recuperer un plage de donnee contenu dans chaque feuille de A36 : AG36
ces donnes, je veu les coller sur une feuille que de meme classeur que je nomme ''RAPPORT MENSUEL'' . ils doivent apparaitre sous forme d'un tableau.

je veux coller chaque plage recopie sur une ligne

merci
merci

8 réponses

  1. Bonjour,

    Si tu veux que ce soit automatique, je ne vois que le VB. As tu des connaissances dans le langage de programmation des macros ?
    0
    1. bonjour
      merci de m'avoir vite repondu .
      biensur que j'ai des base VB. d'ailleur j'ai realise une macro pour le faire . mais par l'enregisteur..
      moi je veu que sa soit pro

      merci
      0
      1. Donne moi le code que t'as généré l'enregistreur de macro, je peux te donner deux ou trois ficelles pour l'optimiser.
        0
        1. voici le bon
          RapportMensuel Macro
          '

          '
          Sheets("1").Select

          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B13").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("2").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B14").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("3").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B15").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("4").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B16").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("5").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B17").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("6").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B18").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("7").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B19").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("8").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B20").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("9").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B21").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("10").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B22").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("11").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B23").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("12").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B24").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("13").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B25").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("14").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B26").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("15").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B27").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("16").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B28").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("17").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B29").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("18").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B30").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("19").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B31").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("20").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B32").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("21").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B33").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("22").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B34").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("23").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B35").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("24").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B36").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("25").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B37").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("26").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B38").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("27").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B39").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("28").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B40").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("29").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B41").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("30").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B42").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Sheets("31").Select
          Range("BM18:DM18").Select
          Selection.Copy
          Sheets("Rap mensuel").Select
          Range("B43").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False

          End Sub
          0
          1. D'après ce que je vois, ce n'est pas du tout les cellules A36-AG36 que tu récupères. De plus, tu écris des données en dur dans des cellules, et je vois également d'autres documents Excel ouverts. Un peu dur de tout suivre la dedans.

            Si j'ai bien compris, ce que tu souhaites récupérer, c'est dans un onglet Rapport Mensuel (le 32ème onglet de ton classeur) en ligne 1 le contenu de la ligne 36 de l'onglet 1, en ligne 2 le contenu de la ligne 36 de l'onglet 2, en ligne 3 le contenu de la ligne 36 de l'onglet 3, etc jusqu'au 31 ?
            0
            1. je souhaite recuperer les donnes contenu de (BM18:DM18)
              et les coller par ordre dans la feuille ''rapport mensuel''
              0
            2. Tu ne réponds pas à ma question.
              Est ce que la description que je t'ai faite semble correspondre à ce que tu as besoin ?
              0
            3. exact
              0
          2. c'est le dernier code ok

            moi je n'arrive pas a le simplifie..
            0
            1. Voici le code que j'ai généré, à modifier selon tes spécificités :


              Sub Copy()

              ' On créé une boucle sur les numéros de page
              For p = 1 To 31

              ' On sélectionne la page p
              Sheets(p).Select
              ' On copie la totalité de la ligne 36
              Rows("36:36").Select
              Selection.Copy
              ' On sélectionne la page RAPPORT MENSUEL
              Sheets("RAPPORT MENSUEL").Select
              ' On colle sur la même ligne que le numéro de la page.
              Rows(p).Select
              ActiveSheet.Paste

              Next

              End Sub



              "Il vaut mieux savoir tout chercher que chercher à tout savoir."
              0
              1. Modérateur
                Bonjour,

                Attention aux .Select inutiles qui ralentissent le code. Surtout ici lors de changement répétés de feuilles.
                Les lignes :
                Sheets(p).Select
                    ' On copie la totalité de la ligne 36
                    Rows("36:36").Select
                    Selection.Copy
                    ' On sélectionne la page RAPPORT MENSUEL
                    Sheets("RAPPORT MENSUEL").Select
                    ' On colle sur la même ligne que le numéro de la page.
                    Rows(p).Select
                    ActiveSheet.Paste

                peuvent être avantageusement être remplacées par :
                Sheets(p).Rows("36:36").Copy Sheets("RAPPORT MENSUEL").Rows(p)


                Ce qui nous donne, avec ton code :
                Sub Copy()
                
                ' On créé une boucle sur les numéros de page
                For p = 1 To 31
                  Sheets(p).Rows("36:36").Copy Sheets("RAPPORT MENSUEL").Rows(p) 
                Next
                End Sub
                

                A adapter également :
                PasteSpecial Paste:=xlPasteValues
                0
              2. Disons que je gardais volontairement une structure étape par étape générée par l'enregistreur de macro pour que notre ami ne soit pas perdu :-)
                0
              3. Merci mes amis
                0
              4. 1000 fois merci
                0
              5. Modérateur
                Je comprends bien.
                Maintenant le demandeur a toutes les clés pour réussir... enfin presque...

                Que se passe t'il, avec ton code, en cas d'inversion de feuille?
                En fait, pour la boucle, et ce afin d'éviter des erreurs, je ferais plus dans ce style :

                Dim Wsh As Worksheet, FeuilRecap As Worksheet, k As Integer
                
                Set FeuilRecap = Worksheets("RAPPORT MENSUEL") 'feuille ou coller
                k = 2 'autant débuter le "collage" à la seconde ligne
                
                'boucle sur toutes les feuilles du classeur
                For Each Wsh In ThisWorkbook.Worksheets
                  'Si la feuille (en cours dans la boucle) n'est pas la feuille récap alors
                  If Not Wsh Is FeuilRecap Then 'attention penser à enlever de la boucle les feuilles qui ne doivent pas être traitées
                    'copié-collé
                    Wsh.Rows(18).Copy FeuilRecap.Rows(k)
                    'ligne suivante pour le collage
                    k = k + 1
                  End If
                Next Wsh
                0