Bonjour à tous,
je m'arrache les cheveux sur un truc idiot je pense, mais je n'arrive pas à comprendre.
J'ai une valeur qui doit être positive ou négative selon l'état d'une autre variable. Concrètement je traite de coordonnées géographiques (latitude), exprimées par une valeur et un suffixe Nord ou Sud, je voudrais que la valeur de la latitude soit positive vers le nord et négative vers le sud. Avec un test, facile n'est-ce pas ?
Mais j'ai souhaité intégrer cela dans un code VBA de la manière suivante :
dans mes plus doux rêves, j'osais espérer que SuffixeLat="S" prendrait la valeur VRAI, qu'en la multipliant par -2, cela ferait -2, puis qu'en lui ajoutant 1 cela ferait -1, multiplié par Latitude, qui lui confèrerait le signe NEGATIF.
Mais non, ça donne une multiplication par 3. Pourquoi ?
pourtant cela fonctionne quand je fais la même chose dans les cellules du tableur...
évidemment la solution est :
mais bon, j'aime comprendre...
Merci !!!
[edit]
j'ai compris.
Dans le tableur, VRAI = 1 / FAUX = 0
dans VBA : TRUE = -1 / FALSE = 0
c'est n'importe quoi ! GRR
je m'arrache les cheveux sur un truc idiot je pense, mais je n'arrive pas à comprendre.
J'ai une valeur qui doit être positive ou négative selon l'état d'une autre variable. Concrètement je traite de coordonnées géographiques (latitude), exprimées par une valeur et un suffixe Nord ou Sud, je voudrais que la valeur de la latitude soit positive vers le nord et négative vers le sud. Avec un test, facile n'est-ce pas ?
Mais j'ai souhaité intégrer cela dans un code VBA de la manière suivante :
Code:
Sub machin()
Dim Latitude, Longitude, SuffixeLat, SuffixeLon, CoordonneeLat
Latitude = 50.85212
SuffixeLat = "S"
Longitude = 2.816544
SuffixeLon = "E"
CoordonneeLat = Latitude * ((SuffixeLat = "S") * (-2) + 1)
End Sub
dans mes plus doux rêves, j'osais espérer que SuffixeLat="S" prendrait la valeur VRAI, qu'en la multipliant par -2, cela ferait -2, puis qu'en lui ajoutant 1 cela ferait -1, multiplié par Latitude, qui lui confèrerait le signe NEGATIF.
Mais non, ça donne une multiplication par 3. Pourquoi ?
pourtant cela fonctionne quand je fais la même chose dans les cellules du tableur...
évidemment la solution est :
Code:
CoordonneeLat = Latitude * ((SuffixeLat = "N") * 2 - 1)
mais bon, j'aime comprendre...
Merci !!!
[edit]
j'ai compris.
Dans le tableur, VRAI = 1 / FAUX = 0
dans VBA : TRUE = -1 / FALSE = 0
c'est n'importe quoi ! GRR
Dernière édition: