Macro

Bonjour,
Débutante dans les macros, je chercher à copier la dernière ligne non-vide et ses 40 précédentes lignes d'une feuille excel à une autre. donc dans le même fichier.
Merci d'avance!
Claire

3 réponses

Résumé de la discussion

La demande porte sur une macro Excel qui copie la dernière ligne non vide et les lignes précédentes d'une feuille vers une autre dans le classeur, en s'appuyant sur un nom de cellule Recapitulatif. La solution consiste à déterminer la ligne via le nom Recapitulatif et End(xlUp) sur une colonne, puis à copier la plage A Adr:C derlig dans la feuille cible. Des erreurs fréquentes apparaissent dans les premiers essais (xlUp vs x1Up, guillemets), et l'option retenue montre l'usage des objets Worksheets et Range associée à un Resize pour adapter la destination. D'autres échanges évoquent l'ajout d'un second récapitulatif et la possibilité de limiter la sélection entre la dernière ligne non vide et Recapitulatif lorsque le nombre de lignes varie.

Bobot (l’IA à votre service)
  1. Bonjour,

    Une facon de faire:

    Sub copie()
        With Worksheets("feuil1")       'adaptez le nom de la feuille
            derlig = .Range("A" & Rows.Count).End(xlUp).Row     'derniere cellule non vide colonne A
            'copie valeurs
            'adaptez le nom de la feuille, derniere ligne-40: 41, colonne Z: 26 adptez la derniere colonne
            Worksheets("feuil2").Range("A1").Resize(41, 26) = .Range("A" & derlig - 41 & ":Z" & derlig).Value
        End With
    End Sub
    1. Merci infiniment pour votre aide, j'ai réussi suivant les critères donnés.
      Maintenant, j'aimerais savoir s'il est possible de sélectionner seulement les cellules entre la dernière non-vide et une cellule nommée "Recapitulatif" qui peut changer de ligne?
      Merci d'avance!
      Claire
    2. @ClaireRe,

      Sub copie()
          With Worksheets("feuil1")       'adaptez le nom de la feuille
              Adr = .Range("Recapitulatif").Row   'ligne de depart
              derlig = .Range("A" & Rows.Count).End(xlUp).Row     'derniere cellule non vide colonne A
              'copie valeurs
              'adaptez le nom de la feuille,  colonne Z: 26 adaptez la derniere colonne
              Worksheets("feuil2").Range("A1").Resize(Adr, 26) = .Range("A" & Adr & ":Z" & derlig).Value
          End With
      End Sub
    3. Il a pas l'air très d'accord avec le
      Adr = .Range("Recapitulatif").Row !!!
    4. @ClaireRe,

      Si vous avez nomme une cellule Recapitulatif, ca doit marcher. Verifiez le nom
    5. @f894009Je vois pas l'erreur!! Je nage complétement là!

      Sub Recap()
      With Worksheets("358.1")
      Adr = .Range("Recapitulatif").Row
      derlig = .Range("A" & Rows.Count).End(x1Up).Row
      Worksheets("Comparatif").Range("A1").Resize(Adr, 8) = .Range("A" & Adr & ":C" & derlig).Value
      End With
      End Sub
  2. Cellule A191 de la feuille "358.1"

    Sachant que ce mot "Recapitulatif1" pour changer de ligne.
    1. Re,

      Ben oui, c'est un texte dans une cellule, pas un nom de cellule

      Vous voulez que le texte ou le format avec
  3. Dsl pour le mal entendu.

    Le format avec si possible svp!
    Merci ;-)
    1. Re,

      code puisque vous ne pouvez pas ouvrir un fichier exterieur

      Sub Recap()
          With Worksheets("358.1")
              Adr = .Columns(1).Find("Recapitulatif1", .Cells(1, 1), , xlWhole).Row
              derlig = .Range("A" & Rows.Count).End(xlUp).Row
              .Range("A" & Adr & ":H" & derlig).Copy Worksheets("Comparatif").Range("A1").Resize(derlig + 1 - Adr, 8)
          End With
      End Sub
    2. Merci infiniment pour votre aide, malheureusement j'ai une séance alors je dois reprendre cela demain.
      Bonne soirée à vous!
    3. @f894009Hello!
      Super ça fonctionne très bien! Merci
      Maintenant j'aimerais ajouter a la suite de cette macro dans "comparatif" un autre récapitulatif.
      En fait j'ai un autre onglet "358.2" avec une récap a la fin et j'aimerais qu'elle se copie en dessous de la recap de l'onglet "358.1" dans "Comparatif".
      Je sais pas si c'est très clair!!??
      Sachant que le nombre de lignes peuvent varier.
    4. @ClaireBonjour,
      Mettez votre fichier à disposition pour avoir la feuille supplémentaire