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 :

Comparaison cellules dans onglets différents


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 12
    Points : 13
    Points
    13
    Par défaut Comparaison cellules dans onglets différents
    Bonjour

    Je voudrais comparer deux colonnes se trouvant dans deux onglets différents.
    Les informations dans cette colonne sont en format txt.
    Je souhaiterais donc regrouper les informations des deux onglets à partir du moment où deux cellules sont identiques et copier ainsi les informations des deux lignes correspondantes dans un troisième onglet.
    Les colonnes à comparer sont en A.

    J'espère avoir été suffisament clair et je vous remercie de votre aide.

    Estaque3394

  2. #2
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Bonjour
    J'ai adapté ce code pour comparer 2 onglets différents et qui affiche les différences en couleurs, il est génial et il est du forum, essaie de l'adapter pour toi.


    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
    46
    47
    48
    49
    50
    51
    52
    53
    Sub Module2Compare()
    Dim Kol As New Collection
    Dim LastLig1 As Long, LastLig2 As Long, i As Long
    Dim k As Byte
    Dim c As Range, v As Range, w As Range
    Dim Data1 As String, Data2 As String
     
    Application.ScreenUpdating = False
    With Sheets("Référentiel BAL")
        .AutoFilterMode = False
        LastLig2 = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To LastLig2
            On Error Resume Next
            Kol.Add .Range("A" & i).Value, .Range("A" & i).Value
            On Error GoTo 0
        Next i
        For i = 1 To Kol.Count
            With Sheets("Envois")
                .AutoFilterMode = False
                LastLig1 = .Cells(Rows.Count, 1).End(xlUp).Row
            End With
            .Range("A1").AutoFilter field:=1, Criteria1:=Kol(i)
            Set c = Sheets("Envois").Range("A1:A" & LastLig1).Find(Kol(i), lookat:=xlWhole)
            If Not c Is Nothing Then
                Sheets("Envois").Range("A1").AutoFilter field:=1, Criteria1:=Kol(i)
                For Each v In .Range("A2:A" & LastLig2).SpecialCells(xlCellTypeVisible)
                    Data1 = vbNullString
                    For k = 1 To 12
                        Data1 = Data1 & "_" & .Cells(v.Row, k)
                    Next k
                    For Each w In Sheets("Envois").Range("A2:A" & LastLig1).SpecialCells(xlCellTypeVisible)
                        Data2 = vbNullString
                        For k = 1 To 12
                            Data2 = Data2 & "_" & Sheets("Envois").Cells(w.Row, k)
                        Next k
                        If Data1 = Data2 Then
                            .Range("A" & v.Row & ":C" & v.Row).Interior.ColorIndex = 4 'vert
                            Exit For
                        Else
                            .Range("A" & v.Row & ":C" & v.Row).Interior.ColorIndex = 8 'Cyan bleu
                        End If
                    Next w
                Next v
                Set c = Nothing
            Else
                .Range("A2:C" & LastLig2).SpecialCells(xlCellTypeVisible).Interior.ColorIndex = 22 'rose
                .Range("A2:C" & LastLig2).SpecialCells(xlCellTypeVisible).Copy Sheets("Envois").Range("A" & LastLig1 + 1)
            End If
        Next i
        .AutoFilterMode = False
    End With
    Sheets("Envois").AutoFilterMode = False
    End Sub

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    Bonjour,
    Je n'ai pas tout compris:
    Citation Envoyé par Estaque3394 Voir le message
    Je voudrais comparer deux colonnes se trouvant dans deux onglets différents.
    Les informations dans cette colonne sont en format txt.
    Je souhaiterais donc regrouper les informations des deux onglets à partir du moment où deux cellules sont identiques et copier ainsi les informations des deux lignes correspondantes dans un troisième onglet.
    Les colonnes à comparer sont en A.
    Si dans l'onglet 1 tu as :
    A
    Z
    E
    R
    T
    U
    I
    O
    P

    et dans l'onglet 2 :
    Q
    S
    E
    R
    T
    J
    I
    O
    P

    Que souhaites tu dans le 3 onglet ?

    PPz

  4. #4
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Bonjour, code de Gorfael super
    Lignes roses = cellule colonne A introuvables à Onglet1 et Onglet2 + lignes manquantes ajoutées à Onglet1
    Lignes vertes = lignes complètes identiques
    Lignes bleues = cellule colonne A identhique à Onglet1 et Onglet2


    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
    46
    47
    48
    49
    50
    51
    52
    53
    Sub Module2Compare()
    Dim Kol As New Collection
    Dim LastLig1 As Long, LastLig2 As Long, i As Long
    Dim k As Byte
    Dim c As Range, v As Range, w As Range
    Dim Data1 As String, Data2 As String
     
    Application.ScreenUpdating = False
    With Sheets(2)
        .AutoFilterMode = False
        LastLig2 = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To LastLig2
            On Error Resume Next
            Kol.Add .Range("A" & i).Value, .Range("A" & i).Value
            On Error GoTo 0
        Next i
        For i = 1 To Kol.Count
            With Sheets(1)
                .AutoFilterMode = False
                LastLig1 = .Cells(Rows.Count, 1).End(xlUp).Row
            End With
            .Range("A1").AutoFilter field:=1, Criteria1:=Kol(i)
            Set c = Sheets(1).Range("A1:A" & LastLig1).Find(Kol(i), lookat:=xlWhole)
            If Not c Is Nothing Then
                Sheets(1).Range("A1").AutoFilter field:=1, Criteria1:=Kol(i)
                For Each v In .Range("A2:A" & LastLig2).SpecialCells(xlCellTypeVisible)
                    Data1 = vbNullString
                    For k = 1 To 12
                        Data1 = Data1 & "_" & .Cells(v.Row, k)
                    Next k
                    For Each w In Sheets(1).Range("A2:A" & LastLig1).SpecialCells(xlCellTypeVisible)
                        Data2 = vbNullString
                        For k = 1 To 12
                            Data2 = Data2 & "_" & Sheets(1).Cells(w.Row, k)
                        Next k
                        If Data1 = Data2 Then
                            .Range("A" & v.Row & ":C" & v.Row).Interior.ColorIndex = 4 'vert
                            Exit For
                        Else
                            .Range("A" & v.Row & ":C" & v.Row).Interior.ColorIndex = 8 'Cyan bleu
                        End If
                    Next w
                Next v
                Set c = Nothing
            Else
                .Range("A2:C" & LastLig2).SpecialCells(xlCellTypeVisible).Interior.ColorIndex = 22 'rose
                .Range("A2:C" & LastLig2).SpecialCells(xlCellTypeVisible).Copy Sheets(1).Range("A" & LastLig1 + 1)
            End If
        Next i
        .AutoFilterMode = False
    End With
    Sheets("Envois").AutoFilterMode = False
    End Sub

  5. #5
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 64
    Points : 67
    Points
    67
    Par défaut
    Bonjour!

    Si tu ne veux pas utiliser de code VBA,tu peux toujours utiliser la fonction excel Par exemple, tu fais une copie complète de l'onglet qui contient le plus de lignes (si tes 2 onglets n'ont pas le même nombre de lignes) dans un onglet3.
    Dans onglet3, dans une colonne tout à droite de tes données tu écris
    =EXACT(onglet1!A:A;onglet2!A:A)
    Tu obtiendras "vrai" si les données des colonnes A sont identiques "Faux" si elles ne le sont pas.
    Tu peux ensuite utiliser les filtres sur cette colonne pour ne montrer que les lignes qui contiennent "vrai".

    Bien sur, si tu as besoin de répéter ceci souvent, alors utilise VBA (je n'ai pas vérifié, mais teste ce que Vadorblanc t'a gentillement proposé).
    Cordialement

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par PPz78 Voir le message
    Bonjour,
    Je n'ai pas tout compris:

    Si dans l'onglet 1 tu as :
    A
    Z
    E
    R
    T
    U
    I
    O
    P

    et dans l'onglet 2 :
    Q
    S
    E
    R
    T
    J
    I
    O
    P

    Que souhaites tu dans le 3 onglet ?

    PPz
    Bonjour PPz
    J'ai ce soucis de scrutage de données de valeurs entre deux onglets actuellement,

    Moi je souhaiterais qu'apparaisse les valeurs non communes aux deux onglets dans le 3e onglet (soit Q, S et J).

    Merci PPz pour ta réponse.

Discussions similaires

  1. [XL-2010] Comparaison cellule dans deux classeurs différents avec Requete SQL
    Par jgresse1025 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/03/2015, 13h41
  2. [Toutes versions] Comparaison cellules de feuillets différents
    Par d0n32 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/06/2011, 12h21
  3. [debutant] lien de cellules sur onglets différents
    Par cladsam dans le forum Excel
    Réponses: 2
    Dernier message: 21/01/2009, 18h49
  4. Comparaison cellules avec une plage de données dans un autre fichier
    Par Jibi64 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/08/2008, 16h22
  5. Comparer des cellules dans feuilles différentes
    Par assiec dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 04/06/2008, 13h20

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