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 :

Excel 2007 Copier Coller une ligne vers une autre feuille


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 47
    Points : 36
    Points
    36
    Par défaut Excel 2007 Copier Coller une ligne vers une autre feuille
    Bonjour,

    J'ai un tableau excel avec plusieurs lignes.
    J'aimerais simplement déplacer certaines lignes de ce tableau vers une autre feuille à condition que la valeur d'une colonne soit égale à une certaine valeur.

    Voici le code que j'ai fait mais j'ai une erreur à l'exécution

    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
    Sub CopyToFeuille2()
        Dim wsSource As Worksheet
        Dim wsCible As Worksheet
        Dim derniereLigne As Long
        Dim tmpLigne As Long
        Dim i As Long
     
        Set wsSource = Worksheets("Feuil1")
        Set wsCible = Worksheets("Feuil2")
     
        tmpLigne = Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1
     
        'On récupère la dernière ligne remplie
        derniereLigne = Range("A" & Rows.Count).End(xlUp).Row
     
        'Pour chaque ligne du fichier source
        For i = 1 To derniereLigne
            'Si la colonne H contient "signé" --> deplacer vers Feuil2
            If wsSource.Cells(i, "H").Value = "signé" Then
                wsSource.Range("A:H" & i).Copy wsCible.Range("A:H" & tmpLigne)
                wsSource.Range("A:H" & i).ClearContents
     
                tmpLigne = tmpLigne + 1
            End If
        Next i
    End Sub
    Merci pour votre aide

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 953
    Points : 28 961
    Points
    28 961
    Billets dans le blog
    53
    Par défaut
    Bonsoir,
    D'après tes explications, je pense que les filtres avancés d'excel devraient t'apporter la solution.
    Voir ici Les filtres avancés ou élaborés dans Excel

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 47
    Points : 36
    Points
    36
    Par défaut
    Merci mais concernant le code que j'ai posté, que faut-il changer pour que cela fonctionne ? Merci

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 953
    Points : 28 961
    Points
    28 961
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Connais-tu les filtres avancés d'excel ?
    As-tu jeté un coup d'oeil sur le tuto qui lui même est accompagné d'un fichier à télécharger qui lui même contient un code VBA qui devrait répondre à ta question.
    Tu peux aussi regarder ce fil qui contient une explication et une petite procédure qui devrait te faire avancer dans ton questionnement.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 47
    Points : 36
    Points
    36
    Par défaut
    Merci pour votre réponse, mais, pour ma part, j'aimerais que le filtre soit automatique et qu'il fasse un couper/coller et non un copier/coller.

    Imaginons que j'ai 100 lignes remplies pour les colonnes A et B.
    J'aimerais que toutes les lignes qui ont comme valeur 'X' dans la colonne B soient déplacées (couper/coller) dans la Feuil2 du classeur, et ce automatiquement.

    La cerise sur le gateau serait qu'une fois dans la Feuil2, si je remets dans la colonne B une autre valeur que X, alors la ligne en question "retourne" dans la Feuil1.

    J'ai l'impression que ce n'est pas si simple à faire sans rien coder du tout...

  6. #6
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Points : 1 925
    Points
    1 925
    Billets dans le blog
    5
    Par défaut
    Bonsoir...,

    je te proposes une petite modification de ton code


    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
    Sub CopyToFeuille2()
        Dim wsSource As range
        Dim wsCible As Range
        Dim derniereLigne As Long
        Dim tmpLigne As Long
        Dim i As Long
     
        Set wsSource = Worksheets("Feuil1").Range("a1:h1")
        tmpLigne = Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1
     
        'On récupère la dernière ligne remplie dans un objet range
        derniereLigne = Range("A" & Rows.Count).End(xlUp).Row
        set wsCible = Worksheets("Feuil2").Range("a" & derniereLigne &":h" & derniereLigne")
     
        i = 1 
        'Pour chaque ligne du fichier source
        do 'i = 1 To derniereLigne
            'Si la colonne H contient "signé" --> deplacer vers Feuil2
            If wsSource.Cells(i, "H").Value = "signé" Then
                wsCible.Rows(derniereLigne).Value = wsSource.Rows(i).Value
                wsSourceRows(i).Delete
                derniereLigne = derniereLigne + 1
                tmpLigne  = tmpLigne - 1 ' ajuster le nombre de lignes restant
                i = i -1 'Redressement
            End If
            i = i + 1
        Loop Until i <= tmpLigne 
    End Sub
    à mon avis c'est ce que tu souhaites faire?

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/05/2012, 13h44
  2. Copier une ligne d'une table vers une autre ?
    Par rimas2009 dans le forum SQL
    Réponses: 15
    Dernier message: 14/06/2010, 16h13
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [C#] transferer une ligne d'une datagrid vers une autre datagrid
    Par nassimmm dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/08/2006, 09h38
  5. copier une ligne d'une table vers une autre
    Par Adren dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/08/2006, 11h54

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