Macro

Claire -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    0
    1. Claire
       
      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
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Claire
       
      Re,

      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
      0
    3. Claire
       
      Il a pas l'air très d'accord avec le
      Adr = .Range("Recapitulatif").Row !!!
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Claire
       
      Re,

      Si vous avez nomme une cellule Recapitulatif, ca doit marcher. Verifiez le nom
      0
    5. Claire > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
       
      Je 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
      0
  2. Claire
     
    Cellule A191 de la feuille "358.1"

    Sachant que ce mot "Recapitulatif1" pour changer de ligne.
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

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

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

    Le format avec si possible svp!
    Merci ;-)
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
      0
    2. Claire
       
      Merci infiniment pour votre aide, malheureusement j'ai une séance alors je dois reprendre cela demain.
      Bonne soirée à vous!
      0
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Claire
       
      A demain
      0
    4. Claire > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
       
      Hello!
      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.
      0
    5. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Claire
       
      Bonjour,
      Mettez votre fichier à disposition pour avoir la feuille supplémentaire
      0