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 Subbonjour
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 !