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

Excel Discussion :

Comparer des cellules et afficher différence [XL-2010]


Sujet :

Excel

  1. #41
    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
    Du moment que tu n'as pas un indicateur unique pour chaque opération, c'est difficile d'imaginer quoi comparer.

    Si pour chaque semaine, on trouve une unique opération ou indicateur pour une référence donnée, la comparaison sera faisable. malheureusement ce n'est pas ton cas.

    Peut on utiliser MEC ou VE3 comme indicateur unique?
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  2. #42
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2014
    Messages : 130
    Points : 11
    Points
    11
    Par défaut
    Je tiens à vous remercier tous d'avoir pris le temps de visualiser mon problème.

    Citation Envoyé par mercatog Voir le message
    Du moment que tu n'as pas un indicateur unique pour chaque opération, c'est difficile d'imaginer quoi comparer.

    Si pour chaque semaine, on trouve une unique opération ou indicateur pour une référence donnée, la comparaison sera faisable. malheureusement ce n'est pas ton cas.

    Peut on utiliser MEC ou VE3 comme indicateur unique?
    C'est bien ça mon point bloquant. Je ne peux pas considérer qu'un seul indicateur car si par exemple je pren "MEC" pour la comparaison, on peut avoir la cas que "Mec"sem4 et "MEC"sem10 n'a pas changé mais que "VE3"sem10 a changé par rapport à "VE3"sem4. C'est pour ça que je suis obligé de balayer le plus d'indicateurs possibles

  3. #43
    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
    Sans un identifiant unique, tu ne peux pas comparer

    Exemple
    Pour 2 semaines Sx et Sy pour une même référence RefA (j'ai simplifié pour une seule variable)

    Semaine;Référence,Variable
    1. Sx;RefA;X
    2. Sx;RefA;Y

    3. Sy;RefA;Z
    4. Sy;RefA;W

    Pourquoi comparer 1 avec 3 et non 1 avec 4 (idem pour la 2). Les données sont elles triées?

    Supposons que X<>Z , X<>W, Y<>Z , Y<>W, dans ce cas on aura 4 résultats alors que tu veux avoir 2 résultats. lesquels ne pas prendre en compte? impossible de deviner

    Donc, tu cherches des couples sans avoir de critère bien défini.

    J'espère que tu as compris la difficulté et qu'il te faut revoir la conception
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  4. #44
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2014
    Messages : 130
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Exemple
    Pour 2 semaines Sx et Sy pour une même référence RefA (j'ai simplifié pour une seule variable)

    Semaine;Référence,Variable
    1. Sx;RefA;X
    2. Sx;RefA;Y

    3. Sy;RefA;Z
    4. Sy;RefA;W
    Quand on prend mon cas, la référence d'affaire est toujours la même d'une Sx à une Sy. (la référence d'affaire ne change pas)

    Pourquoi comparer 1 avec 3 et non 1 avec 4 (idem pour la 2). Les données sont elles triées?
    Les données sont toujours mise par numéro de référence (toujours dans le même orde d'une Sx à une Sy). Donc on a toujours:
    1. Sx;RefA;X
    2. Sx;RefA;Y

    3. Sy;RefA;X
    4. Sy;RefA;Y

    Pour Sx et Sy, prenons une variable avec la référence RefA et le critère "MEC"; on peut avoir:
    Semaine;Référence,Variable;MEC,Variable1
    1. Sx;RefA,X;MEC,M
    2. Sx;RefA,Y;MEC;N

    3. Sx;RefA,X;MEC,M
    4. Sy;RefA,Y;MEC,O

    Moi je comparerai 1 et 3, pas de changement donc pas la peine d'en tenir compte.
    Comparaison 2 et 4, N<>O donc j'en tiens compte: RefA;Y;MEC Sx,N;MEC Sy,O

  5. #45
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2014
    Messages : 130
    Points : 11
    Points
    11
    Par défaut
    Le pb c'est qu'on peut avoir un autre cas comme suit:


    Semaine;Référence,Variable;MEC,Variable1
    1. Sx;RefA,X;MEC,M
    2. Sx;RefA,Y;MEC;N

    3. Sx;RefA,X;MEC,M
    4. Sy;RefA,Y;MEC,O
    5. Sy;RefA,Y;MEC,P
    Et je pense que c'est là que ça se complique

  6. #46
    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
    Oui, j'avais suivi, je te montrais un exemple (le plus simple) sans résultat valable.

    Donc, il faudra repenser le fichier et non penser à une solution UNIQUE d'une 1 équation à 36 variables.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  7. #47
    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
    Réponse à #44
    Moi je comparerai 1 et 3, pas de changement donc pas la peine d'en tenir compte.
    Comparaison 2 et 4, N<>O donc j'en tiens compte: RefA;Y;MEC Sx,N;MEC Sy,O
    Je te dis pourquoi tu ne compare pas 1 et 4 (au lieu du 1 et 3)??

    Je ne sais pas si tu as saisi ce que tout le monde ici essaye de t'expliquer
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  8. #48
    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
    Ne désespère pas, je suis entrain de concocter une gymnastique prenant en compte ta phrase
    Les données sont toujours mise par numéro de référence (toujours dans le même orde d'une Sx à une Sy)
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  9. #49
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2014
    Messages : 130
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Je te dis pourquoi tu ne compare pas 1 et 4 (au lieu du 1 et 3)??

    Je ne sais pas si tu as saisi ce que tout le monde ici essaye de t'expliquer
    Je le fais parce que je me dis qu'il faudrait faire la comparaison dans l'ordre en me disant:
    Si 1 = 3; c'est que ce sont les mêmes données de la refA,X pour Sx et Sy donc on passe directement à 2.
    Si 2=4; même conclusion pour 1=3 donc rien ne sera marquer dans le tableau résultat

    ou on peut avoir le cas
    si 1<>3; on garde 1 & 3 (en mémoire)
    après on compare 1 à 4, si 1=4; on garde 3

    après on compare 2 à 3: si 2<>3, on le marque dans le tableau résultat (avec la valeur des autres indicateurs)
    ou si 2=3, on n'en tient pas compte

    Si on prend ce cas:
    Semaine;Référence,Variable;MEC,Variable1
    1. Sx;RefA,X;MEC,M
    2. Sx;RefA,Y;MEC;N

    3. Sx;RefA,X;MEC,M
    4. Sy;RefA,Y;MEC,O
    5. Sy;RefA,Y;MEC,P
    On décide de comparer 1 à 3,4 et 5. Avec cet exemple, 1=3, 1<>4 et 1<>5 donc on garde en mémoire 4 et 5
    après on compare 2 à 4 et 5. avec cet exemple, 2<>4 et 2<>5 donc on montre dans le tableau: RefA,Y;Sx MEC,N; Sy MEC,O
    RefA,Y;Sx MEC,N; Sy MEC,P

  10. #50
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2014
    Messages : 130
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Ne désespère pas, je suis entrain de concocter une gymnastique prenant en compte ta phrase
    Les données sont toujours mise par numéro de référence (toujours dans le même ordre d'une Sx à une Sy)
    Oui les données sont classées par numéro de référence d'affaire. Ma comparaison commence à se simplifier car je viens d'avoir une confirmation d'un des utilisateurs : ma comparaison doit se faire par numéro de référence sur l'indicateur "MEC" donc on utilisera comme indicateur unique "MEC".
    Mais dans le tableau résultat on affichera les autres indicateurs qui permettront de justifier la modification du MEC entre Sx et Sy

  11. #51
    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
    Oula là là
    Après une heure de gymnastique, tu viens là de donner ta réponse.

    Donc, je laisse ma gymnastique et avec ta dernière information, tu n'as qu'à chercher la clé, concaténation de la référence et le MFC.

    Je tire mes cheveux
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  12. #52
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2014
    Messages : 130
    Points : 11
    Points
    11
    Par défaut
    Je m'excuse pour tout ça mais la demande qui m'ait été faite viens d'être modifier. C'est pour ça que c'est maintenant que je vous dis qu'on se basera sur un indicateur "MEC" pour la comparaison.

    Citation Envoyé par mercatog Voir le message
    Oula là là
    Donc, je laisse ma gymnastique et avec ta dernière information, tu n'as qu'à chercher la clé, concaténation de la référence et le MFC.

    Je tire mes cheveux
    Dsl j'ai pas compris ta demande

  13. #53
    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
    A partir d'Excel 2007, une procédure préliminaire pour préparer les données pour le traitement final

    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 Preparation()
    Dim Sem1 As Byte, Sem2 As Byte
    Dim LastLig As Long
     
    Application.ScreenUpdating = False
    'Récupération des semaines 1 et 2
    With ThisWorkbook.Worksheets("Comparaison")
        Sem1 = .Range("A3")
        Sem2 = .Range("B3")
    End With
     
    With ThisWorkbook.Worksheets("Feuil2")
        'On efface la feuille de destination
        .UsedRange.Clear
     
        'On copie l'ensemble des données de la feuille source vers la feuille destination
        ThisWorkbook.Worksheets("Feuil1").UsedRange.Copy .Range("A1")
     
        'On filtre sur les semaines différentes de Sem1 et de Sem2
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("AH1:AH" & LastLig).AutoFilter Field:=1, Criteria1:="<>" & Sem1, Criteria2:="<>" & Sem2, Operator:=xlAnd
     
        'On efface les lignes ne correspondants pas aux 2 semaines
        If .Range("AH1:AH" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then .Range("AH2:AH" & LastLig).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        .AutoFilterMode = False
     
        'On supprime les lignes identiques (doublons) par rapport aux colonnes 2, 6,9,10,18,21,32 et 33
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("A1:AH" & LastLig).RemoveDuplicates Columns:=Array(2, 6, 9, 10, 18, 21, 32, 33), Header:=xlYes
     
        'On tri par rapport MEC pour regrouper les lignes à comparer (pour facilter le traitement ultérieur)
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("A1:AH" & LastLig).Sort key1:=.Range("T1"), Order1:=xlAscending, Header:=xlYes
    End With
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  14. #54
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 200
    Points : 14 346
    Points
    14 346
    Par défaut
    Bonjour, je ne suis pas d'accord avec mercatog sur les colonnes à comparer... Je ne les ai peut-être pas pris dans le même message. Peux-tu les publier de manière définitive ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  15. #55
    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
    Citation Envoyé par Daniel.C Voir le message
    Bonjour, je ne suis pas d'accord avec mercatog sur les colonnes à comparer...
    Bonjour Daniel
    Moi aussi je ne suis pas d'accord avec mercatog
    En fait, les colonnes pris en compte (ligne 31) doivent être adaptés au besoin réel.
    mercatog n'a donné qu'un exemple car lilmonie n'était pas stable dans ses posts.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  16. #56
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 200
    Points : 14 346
    Points
    14 346
    Par défaut
    Alors, on est d'accord
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  17. #57
    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
    Effectivement Daniel mais je suis certain qu'un nouveau paramètre, non prévu, entrera en jeu vu que depuis le début de ce sujet, des retournements de situation fréquents. J'étais sur le point de concocter une usine à gaz mais à la dernière minute, l’intéressé a indiqué que la colonne MEC pourra être prise comme identifiant unique des données.

    Je continue sur ma lancée et j'ajoute des lignes pour avoir des couples de lignes même quand elles sont ajoutée ou supprimées entre 2 semaines.

    Je m'arrête là en attendant d'autres nouveautés
    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
    Sub Preparation()
    Dim Sem1 As Byte, Sem2 As Byte
    Dim LastLig As Long, i As Long
     
    Application.ScreenUpdating = False
    'Récupération des semaines 1 et 2
    With ThisWorkbook.Worksheets("Comparaison")
        Sem1 = .Range("A3")
        Sem2 = .Range("B3")
    End With
     
    With ThisWorkbook.Worksheets("Feuil2")
        'On efface la feuille de destination
        .UsedRange.Clear
     
        'On copie l'ensemble des données de la feuille source vers la feuille destination
        ThisWorkbook.Worksheets("Feuil1").UsedRange.Copy .Range("A1")
     
        'On filtre sur les semaines différentes de Sem1 et de Sem2
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("AH1:AH" & LastLig).AutoFilter Field:=1, Criteria1:="<>" & Sem1, Criteria2:="<>" & Sem2, Operator:=xlAnd
     
        'On efface les lignes ne correspondants pas aux 2 semaines
        If .Range("AH1:AH" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then .Range("AH2:AH" & LastLig).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        .AutoFilterMode = False
     
        'On supprime les lignes identiques (doublons) par rapport aux colonnes 2, 6,9,10,18,21,32 et 33 >>>A ADAPTER POUR REPONDRE A LA QUESTION LEGITIME DE DANIEL C
        'Ou même on peut facilement avoir une liste dynamique de colonnes prises en compte selon le besoin
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("A1:AH" & LastLig).RemoveDuplicates Columns:=Array(2, 6, 9, 10, 18, 21, 32, 33), Header:=xlYes
     
        'On tri par rapport MEC pour regrouper les lignes à comparer (pour facilter le traitement ultérieur)
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("A1:AH" & LastLig).Sort key1:=.Range("T1"), Order1:=xlAscending, Header:=xlYes, key2:=.Range("A1"), Order2:=xlAscending
     
        'On ajoute les lignes éventuellement supprimées ou ajoutées entre les 2 semaines
        For i = LastLig To 2 Step -1
            If Application.WorksheetFunction.CountIfs(.Range("B2:B" & LastLig), .Range("B" & i), .Range("T2:T" & LastLig), .Range("T" & i)) = 1 Then
                If .Range("AH" & i) = Sem1 Then
                    .Rows(i + 1).Insert
                    .Range("B" & i + 1) = .Range("B" & i)
                    .Range("AH" & i + 1) = Sem2
                Else
                    .Rows(i).Insert
                    .Range("B" & i) = .Range("B" & i + 1)
                    .Range("AH" & i) = Sem1
                End If
            End If
        Next i
        'Il ne restera que supprimer les colonnes indésirée
    End With
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  18. #58
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut









    _________________________________________________________________________________________________
    Question bien formulée, solution assurée ! (Robert Durupt)
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  19. #59
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2014
    Messages : 130
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Effectivement Daniel mais je suis certain qu'un nouveau paramètre, non prévu, entrera en jeu vu que depuis le début de ce sujet, des retournements de situation fréquents. J'étais sur le point de concocter une usine à gaz mais à la dernière minute, l’intéressé a indiqué que la colonne MEC pourra être prise comme identifiant unique des données.

    Je continue sur ma lancée et j'ajoute des lignes pour avoir des couples de lignes même quand elles sont ajoutée ou supprimées entre 2 semaines.

    Je m'arrête là en attendant d'autres nouveautés
    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
    Sub Preparation()
    Dim Sem1 As Byte, Sem2 As Byte
    Dim LastLig As Long, i As Long
     
    Application.ScreenUpdating = False
    'Récupération des semaines 1 et 2
    With ThisWorkbook.Worksheets("Comparaison")
        Sem1 = .Range("A3")
        Sem2 = .Range("B3")
    End With
     
    With ThisWorkbook.Worksheets("Feuil2")
        'On efface la feuille de destination
        .UsedRange.Clear
     
        'On copie l'ensemble des données de la feuille source vers la feuille destination
        ThisWorkbook.Worksheets("Feuil1").UsedRange.Copy .Range("A1")
     
        'On filtre sur les semaines différentes de Sem1 et de Sem2
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("AH1:AH" & LastLig).AutoFilter Field:=1, Criteria1:="<>" & Sem1, Criteria2:="<>" & Sem2, Operator:=xlAnd
     
        'On efface les lignes ne correspondants pas aux 2 semaines
        If .Range("AH1:AH" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then .Range("AH2:AH" & LastLig).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        .AutoFilterMode = False
     
        'On supprime les lignes identiques (doublons) par rapport aux colonnes 2, 6,9,10,18,21,32 et 33 >>>A ADAPTER POUR REPONDRE A LA QUESTION LEGITIME DE DANIEL C
        'Ou même on peut facilement avoir une liste dynamique de colonnes prises en compte selon le besoin
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("A1:AH" & LastLig).RemoveDuplicates Columns:=Array(2, 6, 9, 10, 18, 21, 32, 33), Header:=xlYes
     
        'On tri par rapport MEC pour regrouper les lignes à comparer (pour facilter le traitement ultérieur)
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("A1:AH" & LastLig).Sort key1:=.Range("T1"), Order1:=xlAscending, Header:=xlYes, key2:=.Range("A1"), Order2:=xlAscending
     
        'On ajoute les lignes éventuellement supprimées ou ajoutées entre les 2 semaines
        For i = LastLig To 2 Step -1
            If Application.WorksheetFunction.CountIfs(.Range("B2:B" & LastLig), .Range("B" & i), .Range("T2:T" & LastLig), .Range("T" & i)) = 1 Then
                If .Range("AH" & i) = Sem1 Then
                    .Rows(i + 1).Insert
                    .Range("B" & i + 1) = .Range("B" & i)
                    .Range("AH" & i + 1) = Sem2
                Else
                    .Rows(i).Insert
                    .Range("B" & i) = .Range("B" & i + 1)
                    .Range("AH" & i) = Sem1
                End If
            End If
        Next i
        'Il ne restera que supprimer les colonnes indésirée
    End With
    End Sub
    Je tiens à vous remercier pour cette macro et encore pour votre aide.
    Alors suite à votre demande vous trouverez ci-joint le tableau résultat avec comme base de comparaison "MEC".
    J'ai expliqué comment j'ai fait ma comparaison dans le fichier (Feuil2).

    Remarque:

    1. sur "ref"=107, c'est une affaire rajouter mais vu qu'elle n'existait pas doit-on mettre les colonnes à vide ("") pour la semaine 33 ou faire la comparer comme dans le fichier? Pour moi, elle devrait être à vide pour la sem33. Qu'en pensez vous?
    2. comme je vous avais dit au début sur la "ref" 110, on peut voir que le "MEC" n'a pas changer (en comparant la ligne9 à la ligne 35) mais par contre "Etat2" n'est pas le même mais vu que "Etat2" n'est pas la base de comparaison on en déduit donc que vu que "MEC"sem33="MEC"sem35 alors aucune apparition dans le tableau résultat
    Fichiers attachés Fichiers attachés

  20. #60
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2014
    Messages : 130
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par mercatog Voir le message
    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
     
        'On ajoute les lignes éventuellement supprimées ou ajoutées entre les 2 semaines
        For i = LastLig To 2 Step -1
            If Application.WorksheetFunction.CountIfs(.Range("B2:B" & LastLig), .Range("B" & i), .Range("T2:T" & LastLig), .Range("T" & i)) = 1 Then
                If .Range("AH" & i) = Sem1 Then
                    .Rows(i + 1).Insert
                    .Range("B" & i + 1) = .Range("B" & i)
                    .Range("AH" & i + 1) = Sem2
                Else
                    .Rows(i).Insert
                    .Range("B" & i) = .Range("B" & i + 1)
                    .Range("AH" & i) = Sem1
                End If
            End If
        Next i
        'Il ne restera que supprimer les colonnes indésirée
    End With
    End Sub
    je suis désolé mais cette partie du code j'arrive pas à voir comment il sait récupérer les lignes supprimées ou ajoutées?
    Parce que c'est en comparant les semaines qu'on peut voir les lignes ajoutées ou supprimées^^

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

Discussions similaires

  1. [XL-2010] Comparer des cellules
    Par boudoula dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/02/2012, 12h59
  2. Comparer des cellules dans feuilles différentes
    Par assiec dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 04/06/2008, 14h20
  3. comparer des cellules entre 2 fichiers differents
    Par drabmol dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/11/2007, 21h25
  4. [VBA-E] Comparer des cellules
    Par lutin06 dans le forum Macros et VBA Excel
    Réponses: 34
    Dernier message: 28/04/2006, 17h24
  5. [VBA-E] Comparer des cellules
    Par lutin06 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/04/2006, 11h22

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