IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

recopie plusieurs "dernières lignes"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 43
    Par défaut recopie plusieurs "dernières lignes"
    bonjour, Joyeux Noel à tous

    Sachant que la dernière ligne non vide n'est jamais à la même place, comment faire pour recopier sur une autre feuille, une plage de A à M inclue dans les 29 lignes précedentes et la dernière ligne ?

    par exemple, admettons que j'ai ceci :

    dernière ligne Feuil1 : ligne 100
    plage Feuil1 : (A70:M100) à recopiée sur la Feuil2

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut alpilon et le forum
    dépend du niveau de précision voulue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").SpecialCells(xlCellTypeLastCell).Row
    Mais la variable système ne se met pas à jour que si elle augmente (et je ne sais pas comment la réinitialiser, sans réouvrir lr fichier, en cas de suppression de lignes). Donc, j'utilise une routine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim X As Integer, Y As Long
    For X = 1 To Range("A1").SpecialCells(xlCellTypeLastCell).Column
        If Y < Cells(Rows.Count, X).End(xlUp).Row Then Y = Cells(Rows.Count, X).End(xlUp).Row
    Next X
    Là, même en supprimant, j'ai toujours la dernière ligne du tableau.
    A+
    PS : JOYEUX NOËL

  3. #3
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour alpilon Gorfael le forum. une variante!!

    lance la macro sur la feuille contenant les données a copier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub es()
       Range("A" & Cells.Find("*", , , , , xlPrevious).Row - 30 & ":M" & Cells.Find("*", , , , , xlPrevious) _
      .Row).Copy Destination:=Sheets("feuil2").Range("A65536").End(xlUp)(2)
    End Sub
    si tu lances la macro d'une autre feuille suppose les données a copier sur feuil1!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub essai()
      With Sheets("feuil1")
       .Range("A" & .Cells.Find("*", , , , , xlPrevious).Row - 30 & ":M" & .Cells.Find("*", , , , , xlPrevious) _
       .Row).Copy Destination:=Sheets("feuil2").Range("A65536").End(xlUp)(2)
     End With
    End Sub
    joyeux noel a tous

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 43
    Par défaut
    Bonsoir

    merci pour vos réponses mais je ne sais pas comment me servir de la formule de Gorfael

    Quant à Laetitia cela fonctionne presque, juste que cela ne me copie pas les dernières lignes de la plage concernée, cela me recopie à partir de l'enregistrement 34 à 4
    j'essaie de comprendre pourquoi
    voici le code complet que j'ai essayé d'adapter dans un module


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub Copy_Reel()
     
     
    Dim chem2 As String
    Dim Wbk1 As Workbook
    Dim Wbk3 As Workbook
     
     
    chem2 = Application.GetOpenFilename
     
        Set Wbk1 = ThisWorkbook
        Set Wbk3 = Workbooks.Open(Filename:=chem2)
     
            Wbk3.Worksheets("AMANDA2").Range("A2").Value = Wbk1.Name
            Wbk3.Worksheets("AMANDA2").Range("B2").Value = Wbk1.Worksheets("AMANDA").Range("B2").Value
            Wbk3.Worksheets("AMANDA2").Range("C2").Value = Wbk1.Worksheets("AMANDA").Range("C2").Value
            Wbk3.Worksheets("AMANDA2").Range("C6:F10").Value = Wbk1.Worksheets("AMANDA").Range("C6:F10").Value
            Wbk3.Worksheets("AMANDA2").Range("B14").Value = Wbk1.Worksheets("AMANDA").Range("B14").Value
            Wbk3.Worksheets("AMANDA2").Range("E18").Value = Wbk1.Worksheets("AMANDA").Range("E18").Value
            Wbk3.Worksheets("AMANDA2").Range("A22").Value = Wbk1.Worksheets("AMANDA").Range("A22").Value
            Wbk3.Worksheets("AMANDA2").Range("B22").Value = Wbk1.Worksheets("AMANDA").Range("B22").Value
            Wbk3.Worksheets("AMANDA2").Range("E22").Value = Wbk1.Worksheets("AMANDA").Range("E22").Value
            Wbk3.Worksheets("AMANDA2").Range("E23").Value = Wbk1.Worksheets("AMANDA").Range("E23").Value
            Wbk3.Worksheets("AMANDA2").Range("G22").Value = Wbk1.Worksheets("AMANDA").Range("G22").Value
            Wbk3.Worksheets("AMANDA2").Range("A27").Value = Wbk1.Worksheets("AMANDA").Range("A27").Value
            Wbk3.Worksheets("AMANDA2").Range("B27").Value = Wbk1.Worksheets("AMANDA").Range("B27").Value
            Wbk3.Worksheets("AMANDA2").Range("E27").Value = Wbk1.Worksheets("AMANDA").Range("E27").Value
            Wbk3.Worksheets("AMANDA2").Range("B31").Value = Wbk1.Worksheets("AMANDA").Range("B31").Value
            Wbk3.Worksheets("AMANDA2").Range("C31").Value = Wbk1.Worksheets("AMANDA").Range("C31").Value
            Wbk3.Worksheets("AMANDA2").Range("D31").Value = Wbk1.Worksheets("AMANDA").Range("D31").Value
            Wbk1.Worksheets("AMANDA").Range("A" & Cells.Find("*", , , , , xlPrevious).Row - 30 & ":M" & Cells.Find("*", , , , , xlPrevious) _
      .Row).Copy Destination:=Wbk3.Worksheets("AMANDA2").Range("A54:M83")
     
    End Sub


    En fait j'ai adapté ma page au premier code de Laetitia et cela fonctionne parfaitement

    encore merci

    bonsoir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2000] recopier des cellules en cherchant dernière ligne
    Par kadoche dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/02/2011, 15h46
  2. Réponses: 2
    Dernier message: 08/09/2009, 11h57
  3. Dernières lignes plusieurs types de ligne
    Par rodbeck dans le forum Langage SQL
    Réponses: 5
    Dernier message: 16/01/2009, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo