Somme d'offset

Bonjour à tous,

Je me trouve face à un problème dans une formule que j'essaye d'écrire en VBA.

J'aimerais comparer deux cellules dans ma feuille et dans le cas ou ces deux cellules présenteraient des résultats différents, colorer la cellule en rouge.

Dans la somme que j'utilise, je dois faire appel à la fonction "Offset" et je pense que c'est de la que vient mon problème : j'ai l'impression qu'il n'est pas possible de sommer des fonctions offset ?

Quelqu'un aurait une autre idée pour arriver au même résultat ?

Merci d'avance pour votre aide

En vous souhaitant une belle journée !

Jeanne

Sub Checker_la_somme_euros()
'Code complémentaire (non utile pour ce travail) : Vérifier que la somme des % est bien égale à 100

    Dim Column_68080 As Integer
    Dim Column_84154 As Integer
    Dim Column_80690 As Integer
    Dim Column_80700 As Integer
    Dim Column_61740 As Integer
    Dim Column_55570 As Integer
    Dim Column_80640 As Integer
    Dim Column_83040 As Integer
    Dim Column_02580 As Integer
    Dim Column_83330 As Integer
    Dim Column_FR80720 As Integer
    Dim Column_FR09750 As Integer
    Dim Column_FR09920 As Integer
    Dim Column_TotalTTC As Integer
    Dim Column_check_value As Integer
    Dim i As Integer
    Dim j As Integer
    Dim nb_l As Integer
    Dim nb_c As Integer
    Dim somme_value As Integer

      Sheets("Données").Activate

    nb_c = ThisWorkbook.Sheets("Données").UsedRange.SpecialCells(xlCellTypeLastCell).Column 'Nombre de colonnes remplies
    nb_l = ThisWorkbook.Sheets("Données").UsedRange.SpecialCells(xlCellTypeLastCell).Row 'Nombre de lignes remplies

    'déterminer quelles colonnes sont les bonnes colonnes
        For i = 1 To nb_c
            If Cells(1, i) Like "*68080 - Hub DA*" Then Column_68080 = Cells(1, i).Column
            If Cells(1, i) Like "*84154R Lux*" Then Column_84154 = Cells(1, i).Column
            If Cells(1, i) Like "*80690 Paris - 3155*" Then Column_80690 = Cells(1, i).Column
            If Cells(1, i) Like "*85320 BV - 80700 - 3848*" Then Column_80700 = Cells(1, i).Column
            If Cells(1, i) Like "*6174 Val*" Then Column_61740 = Cells(1, i).Column
            If Cells(1, i) Like "*5557 Compta Instit*" Then Column_55570 = Cells(1, i).Column
            If Cells(1, i) Like "*80640 Londres*" Then Column_80640 = Cells(1, i).Column
            If Cells(1, i) Like "*83040 Italy*" Then Column_83040 = Cells(1, i).Column
            If Cells(1, i) Like "*02580 GC Custo*" Then Column_02580 = Cells(1, i).Column
            If Cells(1, i) Like "*8333 BAU Card/DIM*" Then Column_83330 = Cells(1, i).Column
            If Cells(1, i) Like "*FR80720 Madrid*" Then Column_FR80720 = Cells(1, i).Column
            If Cells(1, i) Like "*FR09750 OTC*" Then Column_FR09750 = Cells(1, i).Column
            If Cells(1, i) Like "*FR09920 MFS*" Then Column_FR09920 = Cells(1, i).Column
            If Cells(1, i) Like "*Total TTC*" Then Column_TotalTTC = Cells(1, i).Column
            If Cells(1, i) Like "*Check Total TTC*" Then Column_check_value = Cells(1, i).Column
        Next i

 'vérifier que la somme des cost centres est bien égal au montant de la facture
        For j = 2 To nb_l
        somme_value = Cells(j, Column_68080).Offset(0, 1) + Cells(j, Column_84154).Offset(0, 1) + Cells(j, Column_80690).Offset(0, 1) +
        Cells(j, Column_80700).Offset(0, 1) + Cells(j, Column_61740).Offset(0, 1) + Cells(j, Column_55570).Offset(0, 1) + Cells(j, Column_80640).Offset(0, 1) +  Cells(j, Column_83040).Offset(0, 1) + Cells(j, Column_02580).Offset(0, 1) + Cells(j, Column_83330).Offset(0, 1) + Cells(j, Column_FR80720).Offset(0, 1) + Cells(j, Column_FR09750).Offset(0, 1) + Cells(j, Column_FR09920).Offset(0, 1)

        Cells(j, Column_check_value).Value = somme_value
        If somme_value <> Cells(j, Column_TotalTTC).Value Then Cells(j, Column_check_value).Selection
            With Selection.Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .Color = 255
                .TintAndShade = 0
                .PatternTintAndShade = 0
            End With
        Next j
End Sub

bonjour

pas de VBA

seulement des formules et des MFC

joins un exemple de fichier

et le voila


je ne comprend pas le "Pas de VBA"? ce n'est pas du code VBA que j'ai écrit ?

Pas de VBA veut dire que tu n'as pas besoin nécessairement de VBA pour cette action de somme.

1) Mise en forme conditionnelle peut te faire une comparaison entre deux cellules et colorer en rouge si il y a une différence.

2) Ensuite faire une somme d'offset c'est faire une somme de cellule au final (Pourquoi créer un décalage pour sa somme si ce n'est pas forcément nécessaire ?). Tu peux coder en VBA si tu veux mais au vu de ce que je peux comprendre avec mes connaissances actuelle par rapport à ton code et ton tableau, il y a des formules excel qui seraient plus facile à exploiter

Oui je sais pour la mise en forme conditionnelle, mais c'était plus pour ma curiosité personnelle, approfondir ma compréhension et mes connaissances en VBA, et pour vraiment automatiser tout cela...

Merci de ta réponse en tout cas

On est pas là que pour s'aider les uns les autres on est là aussi pour transmettre nos connaissances et les approfondir quand on est confronté à un problème

Une solution classique te conviendrait peut-être ou tu préfère VBA ? (parce que je présume que faire des sommes et des mises en formes conditionnelles c'est acquis ? )

Haha oui ^^

Je vais appliquer une solution intermédiaire en attendant mais j'aimerais bien trouver une solution en VBA si possible

re

j'ai le même avis qu'Avie

VBA ne doit rester qu'une solution de dernier recours dans Excel

certains se servent de leurs compétences en VBA auprès de leur chef pour briller, moi je préfère SOMMEPROD pour impressionner les patrons

Bon... ^^

Tant pis alors


Merci pour votre aide et pour avoir pris le temps de répondre !

Rechercher des sujets similaires à "somme offset"