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 :

Supprimer ligne sur 2 feuilles Excel si doublon [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 21
    Points : 19
    Points
    19
    Par défaut Supprimer ligne sur 2 feuilles Excel si doublon
    Bonjour,

    A partir de 2 feuilles A et B d'un même classeur sur lesquelles j'ai un champ en commun, je souhaite :

    1- pour chaque ligne de la feuille A on parcourt toutes les lignes de la feuille B
    2- si une correspondance est trouvée sur le champ commun, alors on supprime la ligne concernée dans la feuille B ainsi que dans la feuille A
    3- on recommence la boucle en 1-

    J'ai trouvé le code suivant écrit par Ctplm en 2009 sur un autre forum (et à qui j'ai bien sûr posé la question mais pas de réponse), qui correspond quasiment à ce que je cherche, sauf qu'il ne supprime pas la ligne dans la feuille A également :

    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
     
    Dim NbLigneSheet1, NbLigneSheet2, LigneDbtData1, LigneDbtData2, a, b As Integer 
    Dim F1, F2 As Object 
     
    'Procédure principale 
    Sub SuppressionLignes() 
     
    'On appelle les procédures qui initialisent les variables 
    Call InitVar 
    Call CalculNbLignes 
     
    'On parcourt la première feuille 
    For a = LigneDbtData1 To NbLigneSheet1 
     
    'Pour chaque ligne de la première feuille, on parcourt complètement la deuxième feuille
     For b = LigneDbtData2 To NbLigneSheet2 
     
    'On compare les contenus des deux feuilles 
    VarNom = F1.Range("B" & a)
     
    If VarNom = F2.Range("D" & b) Then 
     
    'En cas de correspondance on supprime la ligne correspondante dans la deuxième feuille
     F2.Range("A" & b).Select 
    Selection.EntireRow.Delete 
    'Ne pas oublier de décrémenter b sinon on zappe une ligne 
    b = b - 1 
     
    End If 
     
    Next b 
    Next a 
     
    End Sub
    J'ai essayé de l'adapter pour répondre à mon besoin mais ça ne fonctionne pas...

    Y a-t-il quelqu'un pour m'aider ?
    Merci par avance

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    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
    Sub SupprDoub()
    Dim LastLigA As Long, LastLigB As Long, i As Long
    Dim Sh As Worksheet
    Dim c As Range
     
    Application.ScreenUpdating = False
    With Worksheets("Feuil1")
        LastLigA = .Cells(.Rows.Count, "A").End(xlUp).Row
        If LastLigA > 1 Then
            Set Sh = Worksheets("Feuil2")
            LastLigB = Sh.Cells(Sh.Rows.Count, "A").End(xlUp).Row
            If LastLigB > 1 Then
                For i = LastLigA To 2 Step -1
                    Set c = Sh.Range("A:A").Find(.Range("A" & i), LookIn:=xlValues, lookat:=xlWhole)
                    If Not c Is Nothing Then
                        .Rows(i).Delete
                        c.EntireRow.Delete
                        Set c = Nothing
                    End If
                Next i
            End If
            Set Sh = Nothing
        End If
    End With
    End Sub

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    Impeccable !!
    Merci beaucoup et bonne journée

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

Discussions similaires

  1. Supprimer des lignes dans une feuille Excel
    Par thefutureisnow dans le forum VB.NET
    Réponses: 2
    Dernier message: 04/04/2011, 13h48
  2. Supprimer une ligne sur deux feuilles du même classeur
    Par apdf1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 12/03/2011, 12h28
  3. Supprimer la derniere ligne sur plusieurs feuilles
    Par goby45 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/02/2010, 14h25
  4. ecrire sur une feuille excel avec Asp
    Par Ajay dans le forum ASP
    Réponses: 7
    Dernier message: 06/01/2006, 23h18
  5. Réponses: 6
    Dernier message: 22/09/2005, 11h50

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