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 ligne si condition sur autre feuille


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Copier ligne si condition sur autre feuille
    Bonjour à tous,

    Je m'arrache les cheveux depuis le début de la semaine sur le problème suivant...
    • Soit un classeur avec 2 onglets.
      • Sur l'onglet Alpha, j'ai 3 colonne.
      • Sur l'onglet Bravo, j'ai aussi 3 colonnes.


    J'aimerais que si une valeurs qui se trouve dans la colonne A de l'onglet Bravo est aussi présente dans la colonne A de l'onglet Alpha, alors je coupe la ligne de l'onglet Bravo et viens la coller au bas des données de l'onglet Alpha.

    J'ai plus ou moins en mains le fait de boucler sur un ensemble de ligne avec une valeur fixe, mais impossible de trouver comment faire avec ma problématique.
    De même la partie couper coller est ok pour moi.

    Si dès fois vous sauriez me dire comment me dépatouiller.

    merci par avance.

  2. #2
    Membre habitué
    Homme Profil pro
    Employé administratif
    Inscrit en
    Mars 2018
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé administratif

    Informations forums :
    Inscription : Mars 2018
    Messages : 112
    Points : 176
    Points
    176
    Par défaut
    Bonjour,

    A tester et à adapter :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub CopierLignes()
        Dim wsAlpha As Worksheet
        Dim wsBravo As Worksheet
        Dim lastRowAlpha As Long
        Dim lastRowBravo As Long
        Dim i As Long
        Dim trouve As Range
        Dim dejaCopie As Boolean
     
        ' Définir les onglets Alpha et Bravo
        Set wsAlpha = ThisWorkbook.Sheets("Alpha")
        Set wsBravo = ThisWorkbook.Sheets("Bravo")
     
        ' Trouver la dernière ligne de chaque onglet
        lastRowAlpha = wsAlpha.Cells(wsAlpha.Rows.Count, "A").End(xlUp).Row
        lastRowBravo = wsBravo.Cells(wsBravo.Rows.Count, "A").End(xlUp).Row
     
        ' Boucle à travers les lignes de Bravo de bas en haut pour éviter des problèmes de décalage de lignes
        For i = lastRowBravo To 1 Step -1
            ' Initialiser la variable de vérification
            dejaCopie = False
     
            ' Rechercher la valeur de Bravo dans Alpha
            Set trouve = wsAlpha.Columns("A").Find(wsBravo.Cells(i, 1).Value, LookIn:=xlValues, LookAt:=xlWhole)
     
            ' Si trouvé, vérifier les autres colonnes
            If Not trouve Is Nothing Then
                Dim j As Long
                For j = 1 To wsBravo.Columns.Count
                    If wsBravo.Cells(i, j).Value <> wsAlpha.Cells(trouve.Row, j).Value Then
                        dejaCopie = False
                        Exit For
                    Else
                        dejaCopie = True
                    End If
                Next j
            End If
     
            ' Si la ligne entière n'est pas présente dans Alpha, copier la ligne de Bravo et la coller à la fin de Alpha
            If trouve Is Nothing Or Not dejaCopie Then
                wsBravo.Rows(i).Copy Destination:=wsAlpha.Rows(lastRowAlpha + 1)
                lastRowAlpha = lastRowAlpha + 1
            End If
        Next i
    End Sub
    Cette macro copie plutôt que couper.

    Si tu veux couper, tu dois remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wsBravo.Rows(i).Copy Destination:=wsAlpha.Rows(lastRowAlpha + 1)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wsBravo.Rows(i).Cut Destination:=wsAlpha.Rows(lastRowAlpha + 1)
    Bàt,

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Guy7700 Voir le message
    Bonjour,

    A tester et à adapter :

    Bàt,
    Merci,
    je me penche dessus dès demain en arrivant au boulot et je te tiendrais au courant.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Guy7700 Voir le message
    Bonjour,

    A tester et à adapter :

    Bàt,
    Bonjour Guy,

    Après avoir tester et modifier le code dans mon sens (à la base il faisait l'inverse de ce que je voulais ==> il copiait les lignes que je ne voulait pas copier et ne copiait pas celle que je voulais)

    Bah.... ça fonctionne nickel.

    Un grand merci

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

Discussions similaires

  1. [Google Sheets] Copier / Coller une ligne avec condition sur un autre onglet
    Par bunz13 dans le forum APIs Google
    Réponses: 5
    Dernier message: 18/08/2018, 11h26
  2. Réponses: 2
    Dernier message: 13/05/2016, 22h26
  3. Réponses: 8
    Dernier message: 02/07/2015, 16h12
  4. Réponses: 6
    Dernier message: 29/01/2012, 22h45
  5. [XL-2007] Copier coller une ligne excel sur autre feuille avec conditions
    Par amstelveen dans le forum Excel
    Réponses: 5
    Dernier message: 11/05/2009, 18h54

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