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 :

Comparer deux colonnes sur deux feuilles [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 507
    Par défaut Comparer deux colonnes sur deux feuilles
    Bonjour,
    J'ai copié un bout de code sur le forum et je tente de l'appliquer à ma cause...mais en vain.
    Voici ce 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
     
    Dim E_F1 As Range
    Dim E_F2 As Range
     
    With Worksheets("Feuil1")
        Set E_F1 = .Range("E" & .Rows.Count).End(xlUp)
     
        Set E_F2 = Worksheets("Feuil2").Range("E" & .Rows.Count).End(xlUp)
     
        For i = 0 To .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row - 1
            For j = 0 To Worksheets("Feuil2").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row - 1
                If E_F1.Offset(i, 0) = E_F2.Offset(j, 0) Then
                    For k = 1 To 4
                        E_F1.Offset(i, k) = E_F2.Offset(j, k)
                    Next k
                End If
            Next j
        Next i
    End With
    L'objective c'est de comparer la colonne E de la Feuil2 à la colonne E de la Feuil1.
    Si il y a une correspondance, on copie et colle les 4 colonnes (A, B, C et D) de la Feuil1 vers la Feuil2.
    Et si pas de correspondance on ne fait rien.
    Que dois-je modifier pour l'adapter ?
    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution possible :

    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
    Option Explicit
     
    Sub ComparerLesDeuxColonnesE()
     
    Dim E_F1 As Range
    Dim CelluleF1 As Range
    Dim DerniereLigneF1 As Long
     
    Dim E_F2 As Range
    Dim CelluleF2 As Range
    Dim DerniereLigneF2 As Long
     
        With Worksheets("Feuil1")
             DerniereLigneF1 = .Cells(.Rows.Count, 5).End(xlUp).Row
             Set E_F1 = .Range(.Cells(2, 5), .Cells(DerniereLigneF1, 5))
             'MsgBox E_F1.Address
        End With
     
        With Worksheets("Feuil2")
             DerniereLigneF2 = .Cells(.Rows.Count, 5).End(xlUp).Row
             Set E_F2 = .Range(.Cells(2, 5), .Cells(DerniereLigneF2, 5))
             'MsgBox E_F2.Address
        End With
     
        For Each CelluleF2 In E_F2
            For Each CelluleF1 In E_F1
                If CelluleF2 = CelluleF1 Then
                   Range(CelluleF2.Offset(0, 1), CelluleF2.Offset(0, 4)).Value = Range(CelluleF1.Offset(0, 1), CelluleF1.Offset(0, 4)).Value
                   Exit For
                End If
            Next CelluleF1
        Next CelluleF2
     
        Set E_F2 = Nothing
        Set E_F1 = Nothing
     
    End Sub
    Si il y a une correspondance, on copie et colle les 4 colonnes (A, B, C et D) de la Feuil1 vers la Feuil2.
    Nb : Votre code semble faire l'inverse.

    Cordialement.

  3. #3
    Membre éclairé Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 507
    Par défaut
    Merci Eric,

    Ca me semble très bien....mais comment ça doit fonctionner....
    Voici le fichier avec la macro....mais je n'y arrive pas...

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Il faut modifier l'aire copiée

    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
    Option Explicit
     
    Sub Bouton1_Clic()
     
    Dim E_F1 As Range
    Dim CelluleF1 As Range
    Dim DerniereLigneF1 As Long
     
    Dim E_F2 As Range
    Dim CelluleF2 As Range
    Dim DerniereLigneF2 As Long
     
        With Worksheets("Feuil1")
             DerniereLigneF1 = .Cells(.Rows.Count, 5).End(xlUp).Row
             Set E_F1 = .Range(.Cells(2, 5), .Cells(DerniereLigneF1, 5))
            ' MsgBox E_F1.Address
        End With
     
        With Worksheets("Feuil2")
             DerniereLigneF2 = .Cells(.Rows.Count, 5).End(xlUp).Row
             Set E_F2 = .Range(.Cells(2, 5), .Cells(DerniereLigneF2, 5))
            ' MsgBox E_F2.Address
        End With
     
        For Each CelluleF2 In E_F2
            For Each CelluleF1 In E_F1
                If CelluleF2 = CelluleF1 Then
                   Range(CelluleF2.Offset(0, -4), CelluleF2.Offset(0, -1)).Value = Range(CelluleF1.Offset(0, -4), CelluleF1.Offset(0, -1)).Value
                   Exit For
                End If
            Next CelluleF1
        Next CelluleF2
     
        Set E_F2 = Nothing
        Set E_F1 = Nothing
     
     
    End Sub
    Cordialement.

  5. #5
    Membre éclairé Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 507
    Par défaut
    Merci ERIC,
    , c'est excellent...rapide efficace....le top.
    Je viens de l'adapter à ma situation...

    Cordialement,

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/02/2016, 17h37
  2. Réponses: 2
    Dernier message: 24/02/2015, 14h19
  3. [XL-2007] Deux tris sur deux colonnes
    Par DjChat dans le forum Excel
    Réponses: 3
    Dernier message: 07/05/2013, 12h04
  4. Comparer les valeurs de deux colonnes d'une feuille excel
    Par charrynsasi dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/12/2012, 14h40
  5. [XL-2007] Comparer 2 colonnes sur deux fichiers
    Par Vishnou dans le forum Excel
    Réponses: 3
    Dernier message: 08/04/2010, 00h44

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