[Déplacé VB6 --> VBA] addition de cellule condition

titeuf136 Messages postés 91 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 19 octobre 2012 - 11 févr. 2010 à 17:44
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 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

4 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
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)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
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
0
titeuf136 Messages postés 91 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 19 octobre 2012 1
11 févr. 2010 à 21:31
Merci pour vos réponses, je vais tester vos propositions !
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
12 févr. 2010 à 09:19
Salut,

j'ajouterais que même si cela fonctionne tu n'ecris n'y ne montre le resultat, donc mise à part une execution pas à pas du code...

Je ne sais pas pourquoi mais je pense que le
Voici mon code ... il ne fonctionne pas
vient du fait que tu as oublié l'essentiel... le resultat.

J'sais pô ! mon 6ieme sens peut être

A+
0
Rejoignez-nous