Comparer la cellule 1 d'une plage avec autre plage

Bonjour,

J'ai deux plages, une appelée Ventes et l'autre TOTAL. Ils ont 7 lignes chaque.

Je désire comparer la cellule 1 de la plage Ventes avec la cellule 1 de la plage TOTAL et ainsi de suite.

Et émettre un message si il y a une différence.

J'ai cherché mais je n'arrive pas a trouver ce que je veux.

Cela fait belle lurette que je n'ai pas bidouillé dans vba.

Je vous remercie.

Claire

Bonjour. Bienvenue sur le Forum

avec un fichier Excel, nous pourrions avancer

Cordialement

Bonsoir

Comme l'indique ClaireD, ca serait plus parlant avec un fichier exemple.

De mon point de vue tu vas avoir n possibilités mais une simple MFC de comparaison entre tes 2 cellules suffirait.

Par ex si ta comparaison trouve une différence, ta cellule change de couleur : rouge, vert bleu rose...

Rebonjour,

En effet, ce serait mieux avec un fichier.

La plage Ventes est sur 1-1R cellule k4 : K10

La plage TOTAL est sur 1-1V cellule b9, b16, b23, b30, b37, g9 et g16.

Donc je veux comparer k4 avec b9, k5 avec b16 ....

Une cellule coloree ferait l'affaire en effet sur 1-1V.

Claire

Bonsoir,

une proposition à mettre en forme

Merci beaucoup H2so4, cela fonctionne tres bien,

Mon choix allait a la macro car elle est invisible aux yeux de l usager. Et en plus, dans le fichier que j ai joint il n y avait que 2 feuilles mais reellement j ai 26 groupes de 2 feuilles.

Trop gros pour joindre.

Alors si quelqu un a une idee de macro, ce serait bien.

excusez pour les accents...

Claire

Bonsoir,

Et une autre

Cdlt

ClaireD a écrit :

Merci beaucoup H2so4, cela fonctionne tres bien,

Mon choix allait a la macro car elle est invisible aux yeux de l usager. Et en plus, dans le fichier que j ai joint il n y avait que 2 feuilles mais reellement j ai 26 groupes de 2 feuilles.

Trop gros pour joindre.

Alors si quelqu un a une idee de macro, ce serait bien.

excusez pour les accents...

Claire

pour faire la macro j'ai besoin de savoir comment on peut déterminer les 2 feuilles qui font partie d'un même groupe.

Bonjour H2so4,

J'ai réellement 52 (et non 26) groupes de 2 feuilles,, 1 groupe pour chaque semaine de l annee

Cela débute avec 1-1R, 1-1V, 1-2R, 1-2V, 1-3V, 1-3R, 1-4V, 1-4R

et se poursuit avec 2-1R, 2-1V, 2-2R, 2-2V, 2-3V, 2-3R, 2-4V, 2-4R et se termine avec 13-4V.

Donc 13 periodes de 4 semaines.

Les fichiers sont relies entre eux avec des liaisons.

Claire

Bonjour,

une solution via macro, à tester. résultat dans une nouvelle feuille "synthèse"

Sub creesynthèse()
    On Error Resume Next
    Application.DisplayAlerts = False
    Worksheets("Synthèse").Delete
    On Error GoTo 0
    Application.DisplayAlerts = True
    Set wss = Worksheets.Add
    wss.Name = "Synthèse"
    wss.Cells(1, 1) = "période"
    wss.Cells(1, 2) = "R"
    wss.Cells(1, 3) = "V"
    wss.Cells(1, 4) = "résultat"
    l = 1
    For Each wsr In Worksheets
        With wsr
            If Right(.Name, 1) = "R" Then
                Set wsv = Worksheets(Left(.Name, Len(.Name) - 1) & "V")
                j = 3
                For Each C In Array("B9", "B16", "B23", "B30", "B37", "G9", "G16")
                    l = l + 1
                    j = j + 1
                    wss.Cells(l, 1) = Left(.Name, Len(.Name) - 1) & " " & .Range("A" & j)
                    wss.Cells(l, 3) = wsv.Range(C)
                    wss.Cells(l, 2) = .Range("K" & j)
                    wss.Cells(l, 4) = wss.Cells(l, 2) - wss.Cells(l, 3)
                Next
            End If
        End With
    Next
    wss.Columns("A:D").AutoFit
    Set wss = Nothing
    Set wsv = Nothing
    Set wsr = Nothing
End Sub

Bonjour H2so4,

Cela fonctionne à merveille. Un gros merci.

Je la comprends assez bien mais je me demande ou vous avez défini les variables wsr et wsv. Je ne vois aucune indication de set pour ces variables, donc aucune nécessité de les déclarer. Mais comment le système les interprète ?

Merci

Claire

Bonjour,

j'ai la très mauvaise habitude de ne pas déclarer mes variables si ce n'est pas nécessaire. Je laisse VBA déterminer lui-même le type de variable en fonction du contexte.

voici quelques commentaires dans le code.

Sub creesynthèse()
   ' on supprime la feuille synthèse si elle existe
    On Error Resume Next
    Application.DisplayAlerts = False
    Worksheets("Synthèse").Delete
    On Error GoTo 0
    Application.DisplayAlerts = True

' wss fait référence à la feuille synthèse
' on ajoute une feuille
    Set wss = Worksheets.Add
' on la nomme synthèse
    wss.Name = "Synthèse"
 ' titres de colonnes
    wss.Cells(1, 1) = "période"
    wss.Cells(1, 2) = "R"
    wss.Cells(1, 3) = "V"
    wss.Cells(1, 4) = "résultat"
    l = 1 : "numéro de ligne sur wss
 ' on parcourt toutes les feuilles, wsR référence la feuille en cours 
    For Each wsr In Worksheets
        With wsr
            If Right(.Name, 1) = "R" Then ' on sélectionne uniquement les feuilles se terminant par R
                Set wsv = Worksheets(Left(.Name, Len(.Name) - 1) & "V") ' wsv fait référence à la feuille V du même groupe
                j = 3  'numéro de première ligne  à considérer sur wsR
                For Each C In Array("B9", "B16", "B23", "B30", "B37", "G9", "G16") ' cellules qui nous intéressent sur wsV (total du jour)
                    l = l + 1
                    j = j + 1
                    wss.Cells(l, 1) = Left(.Name, Len(.Name) - 1) & " " & .Range("A" & j) ' nom du groupe + jour de la semaine
                    wss.Cells(l, 3) = wsv.Range(C) ' total du jour sur wsV
                    wss.Cells(l, 2) = .Range("K" & j) ' total du jour sur wsR
                    wss.Cells(l, 4) = wss.Cells(l, 2) - wss.Cells(l, 3) ' différence entre les 2 totaux
                Next
            End If
        End With
    Next
    wss.Columns("A:D").AutoFit
    Set wss = Nothing
    Set wsv = Nothing
    Set wsr = Nothing
End Sub
Rechercher des sujets similaires à "comparer plage"