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

Signaler
Messages postés
91
Date d'inscription
vendredi 15 janvier 2010
Statut
Membre
Dernière intervention
19 octobre 2012
-
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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
Messages postés
91
Date d'inscription
vendredi 15 janvier 2010
Statut
Membre
Dernière intervention
19 octobre 2012
1
Merci pour vos réponses, je vais tester vos propositions !
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
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+