[Déplacé VB6 --> VBA] addition de cellule condition
titeuf136
Messages postés91Date d'inscriptionvendredi 15 janvier 2010StatutMembreDernière intervention19 octobre 2012
-
11 févr. 2010 à 17:44
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 2013
-
12 févr. 2010 à 09:19
bonjour,
je souhaite additionner 2 valeurs à condition que la cellule de l'une d'entres-elles ne soit pas vide, en pondérer l'une des valeur si la 2ieme est supérieur a la premier.
Voici mon code ... il ne fonctionne pas
Pouvez vous m'aider s'il vous plait.
Sub valeurs()
Set f = ActiveSheet
a = ""
b = ""
c = ""
For m = 3 To 93
a = f.Cells(m, 87).Value
b = f.Cells(m, 88).Value
c = f.Cells(m, 90).Value
If f.Cells(m, 87) <> "" Then
If a > b Then
b = b + 1
c = b - a
Else
c = b - a
End If
End If
Next m
End Sub
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 11 févr. 2010 à 18:26
Salut
On ne peut pas (*) comparer des chaines avec des > ni faire des opérations.
(*) rien ne l'interdit, mais, un exemple, "20" est supérieur à "100" (le 2 est bien supérieur au 1)
+ Additionner a+b (20 et 100) peut donner un résultat comme "20100" et non "120"
Il te faut dimensionner tes variables ou les convertir afin de les comparer :
Sub valeurs()
Dim a As Double
Dim b As Double
Dim c As Double
Set f = ActiveSheet
For m = 3 To 93
If Not f.Cells(m, 87) Is Empty Then
a = f.Cells(m, 87).Value
b = f.Cells(m, 88).Value
c = f.Cells(m, 90).Value
If a > b Then
b = b + 1
c = b - a
Else
c = b - a
End If
End If
Next m
End Sub
Tu auras remarqué l'indentation du code = beaucoup plus facile à relire.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 11 févr. 2010 à 18:44
b = b + 1
c = b - a
équivaut c b + 1 - a
A noter que c sera la plupart du temps négatif si (si a -b > 1) et 0 si a - b 1
alors que dans le cas oui a < b, c (=b-a) sera toujours positif
A noter également que n'est pas prévu le cas a = b
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est