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 :

Copier des lignes dans un nouveau classeur


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Copier des lignes dans un nouveau classeur
    Bonjour à vous amis codeurs, j'ai quelques soucis avec le bout de code suivant:

    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
     
    Private Sub CopieExport(Mois As Integer)
     
        Dim myCell As Range
        Dim myRange As Range
     
       ' myRange = Worksheets("Handover").Cells(Range("65536", "1").End(xlUp).Row)
     
     
        'Parcour toutes les lignes du classeur handover
        For Each myCell In Sheets("Handover").Range("A2:A12")   '!!!!!!!!!! Changer la RANGE pour RANGE dynamique
            'Test si la ligne fait partie du mois sélectionner
            If Month(myCell.Value) - Mois = 0 Then
                 'Oui
                 'myCell.EntireRow.Copy Sheets("Export").Cells(Range("C65536").End(xlUp).Row + 1, 1)   'Copie la sélection & la colle sur la derniere ligne libre de la  feuille Export
                 'myCell.EntireRow.Copy Sheets("Export").Cells(Range("A2").End(xlDown).Row + 1, 1)   'Copie la sélection & la colle sur la derniere ligne libre de la  feuille Export
                 'myCell.EntireRow.Copy Sheets("Export").Cells(Range("A65536").End(xlUp).Row + 1, 1)  'Copie la sélection & la colle sur la derniere ligne libre de la  feuille Export
                 'myCell.EntireRow.Copy Sheets("Export").Cells(Rows.Count, ActiveCell.Column).End(xlUp)
                'Sheets("Export").Range("C65536").End(xlUp).Select
                'Cells(Sheets("Export").Range("A2").CurrentRegion.EntireRow.Count + 1, 1).Select     'Selection de la 1ère ligne vierge, 1ere colonne
                 'ActiveCell.Paste  'Colle la sélection
                 'ActiveCell.Offset(1, 0).Select     'Selectionne ligne vide suivante pour prochaine copie
                 myCell.EntireRow.Copy Sheets("Export").[A2].End(xlDown)
     
            Else
                'Non
            End If
     
        Next
     
    End Sub
    Les lignes en commentaires à la suite sont redondantes, ce sont les différents essaies que j'ai fait.
    Mon problème est que au lieu de copier les infos sur une nouvelle ligne à chaque tour de boucle, ça m'écrase l'ancienne ligne. Si quelqu'un voit mon erreur qu'il me fasse signe .
    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myCell.EntireRow.Copy Sheets("Export").[A2].End(xlDown)(2)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myCell.EntireRow.Copy Sheets("Export").[A2].End(xlDown).Offset(1, 0)
    End(xlDown) = dernière ligne occupée, il faut donc ajouter un décalage d'une ligne

    Afin d'éviter des problèmes en cas de lignes intermédiaires vides, il vaut mieux le faire dans l'autre sens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myCell.EntireRow.Copy Sheets("Export").[A65535].End(xlUp)(2)
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par fring Voir le message
    Bonsoir,

    End(xlDown) = dernière ligne occupée, il faut donc ajouter un décalage d'une ligne
    Oki mon erreur se trouvait là, je croyait que je pointait la dernière ligne libre ^^
    Merci t'es un boss

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

Discussions similaires

  1. [VBA][Excel]Copier une feuille dans un nouveau classeur
    Par illight dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/10/2020, 12h51
  2. Réponses: 8
    Dernier message: 13/02/2014, 18h51
  3. [XL-2007] copier des lignes dans excel
    Par thval dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/05/2011, 10h23
  4. [XL-2003] Copier des lignes dans une autre feuille à la première ligne vide
    Par PasDan dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/09/2010, 13h34
  5. copier des lignes dans des feuilles designées
    Par arctica dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/09/2009, 13h14

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