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 de 2 feuilles.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 103
    Par défaut Comparaison de 2 feuilles.
    Bonjour,

    Je souhaite comparer 2 feuilles, voir fichier joint, le but est de voir si il y a eu un changement dans la colonne status (exemple: passage de 1 a 4), de la feuille apres par rapport a la feuille avant.

    Par avance merci.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 93
    Par défaut
    Bonjour,

    En supposant qua la colonne status soit la meme dans les deux feuilles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    For Each cellule In Selection
     
        If (cellule.Value <> Worksheets("Apres").Range(cellule.Address).Value) Then
     
            MsgBox ("Le sattus a change") ' code faisant l'action en cas de changement
        End If
    Next cellule
     
    End Sub

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 55
    Par défaut 3 petites reponses
    bonjour,
    ci-joint 3 possibilite de traitement suivant l'organisation des datas

    1) comparefixe
    suppose que les 2 feuilles ont les memes cles et sont triées de la meme facon avec un nombre de ligne fixe. compare et met une * sur les lignes changées sur la feuille "Apres"

    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
    Sub comparefixe()
    ' macro si le nombre de ligne est fixe et les les des datas sont les memes entre avant et apres
    ' variable de boucle
    Dim i As Integer
    ' pour les 29 lignes
    For i = 2 To 29
        'efface le contenu de la cellule 3 de la ligne en cours
        Worksheets("Apres").Cells(i, 3) = ""
        ' compare pour la ligne en cours les cellules 2 de Apres et Avant
        If Worksheets("Apres").Cells(i, 2).Value <> Worksheets("Avant").Cells(i, 2).Value Then
            ' si difference il y a met * en cellule 3 de la ligne en cours
            Worksheets("Apres").Cells(i, 3) = "*"
        End If
    Next i
    End Sub
    2) comparecpt
    idem mais avec variante pour un nombre de ligne non determiné

    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
    Sub comparecpt()
    ' macro si le nombre de ligne n'est pas connu mais les les des datas sont les memes entre avant et apres
    ' nombre de lignes de la feuille Avant
    Dim nbligavt As Integer
    ' flag de fin de derniere ligne
    Dim flag As Boolean
    ' variable de boucle
    Dim i As Integer
    ' ************************* compte le nombre de ligne ******************************
    ' initialise nombre de ligne a zero et flag a true
    nbligavt = 0
    flag = True
    ' jusqu'a ce que flag soit false ajoute 1 a nombre de ligne
    Do Until flag = False
        nbligavt = nbligavt + 1
        ' si la cellule 1 de la ligne en cours est vide alors flag a false
        If Worksheets("Avant").Cells(nbligavt, 1).Value = "" Then flag = False
    Loop
    ' enleve la derniere ligne celle qui est vide du compteur de lignes
    nbligavt = nbligavt - 1
    ' ************************* coparaison des 2 feuilles ******************************
    ' pour les nbligavt lignes
    For i = 2 To nbligavt
        'efface le contenu de la cellule 3 de la ligne en cours
        Worksheets("Apres").Cells(i, 3) = ""
        ' compare pour la ligne en cours les cellules 2 de Apres et Avant
        If Worksheets("Apres").Cells(i, 2).Value <> Worksheets("Avant").Cells(i, 2).Value Then
            ' si difference il y a met * en cellule 3 de la ligne en cours
            Worksheets("Apres").Cells(i, 3) = "*"
        End If
    Next i
    End Sub
    3) comparealeat
    version pour le fun les données ne sont pas forcement triées de la meme facon sur les 2 feuilles

    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 comparealeat()
    ' macro si le nombre de ligne n'est pas connu et les les des datas melanges entre avant et apres
    ' nombre de lignes de la feuille Avant
    Dim nbligavt As Integer
    ' nombre de lignes de la feuille Apres
    Dim nbligapr As Integer
    ' flag de fin de derniere ligne
    Dim flag As Boolean
    ' variables de boucle
    Dim i As Integer
    Dim j As Integer
    ' ************************* compte le nombre de ligne Avant ******************************
    ' initialise nombre de ligne a zero et flag a true
    nbligavt = 0
    flag = True
    ' jusqu'a ce que flag soit false ajoute 1 a nombre de ligne
    Do Until flag = False
        nbligavt = nbligavt + 1
        ' si la cellule 1 de la ligne en cours est vide alors flag a false
        If Worksheets("Avant").Cells(nbligavt, 1).Value = "" Then flag = False
    Loop
    ' enleve la derniere ligne celle qui est vide du compteur de lignes
    nbligavt = nbligavt - 1
    ' ************************* compte le nombre de ligne Apres ******************************
    ' initialise nombre de ligne a zero et flag a true
    nbligapr = 0
    flag = True
    ' jusqu'a ce que flag soit false ajoute 1 a nombre de ligne
    Do Until flag = False
        nbligapr = nbligapr + 1
        ' si la cellule 1 de la ligne en cours est vide alors flag a false
        If Worksheets("Apres").Cells(nbligapr, 1).Value = "" Then flag = False
    Loop
    ' enleve la derniere ligne celle qui est vide du compteur de lignes
    nbligapr = nbligapr - 1
    ' ************************* coparaison des 2 feuilles ******************************
    ' pour les nbligapr lignes de la feuille apres
    For i = 2 To nbligapr
        'efface le contenu de la cellule 3 de la ligne en cours
        Worksheets("Apres").Cells(i, 3) = ""
        ' pour les nbligavt lignes de la feuille avant
        For j = 2 To nbligavt
            'compare les nom pour trouver sur la feuille Avant le nom en cours de traitement sur Apres
            If Worksheets("Avant").Cells(j, 1).Value = Worksheets("Apres").Cells(i, 1).Value Then
                ' compare pour le meme nom les cellules 2 de Apres et Avant
                If Worksheets("Avant").Cells(j, 2).Value <> Worksheets("Apres").Cells(i, 2).Value Then
                    ' si difference il y a met * en cellule 3 de la ligne en cours
                    Worksheets("Apres").Cells(i, 3) = "*"
                End If
            End If
        Next j
    Next i
    End Sub

  4. #4
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    Bonsoir,
    Si tu veux juste connaître les cellules modifiée,
    dans un colonne tu tapes
    =B:B=Apres!B:B

    affiche Vrai ou Faux

    Salutations

Discussions similaires

  1. Macro Excel : Comparaison de 2 feuilles
    Par michaeljeru dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/10/2010, 17h21
  2. Comparaison de deux feuilles
    Par aluc4rd dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/03/2010, 22h50
  3. [XL-2003] Cellules fusionnées- comparaison entre 2 feuilles
    Par Nanoucha dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/08/2009, 14h39
  4. comparaison de 2 feuille avec plage variable
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/04/2009, 21h49
  5. VBA - Excel - comparaison de deux feuilles
    Par toto14 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 13/10/2006, 13h52

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