probleme de definition variable
bonjour,
suite à la dernière intervention de RVToulon j'ai écrit la macro suivante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Sub Macro5()
' la cellule c10 doit être la cellule active au lancement de la macro
' mettre une valeur en c2 (c'est à dire R[-8])
' mettre une valeur décimale ou pas en c4
Dim totht As Single
totht = Range("c4")
ActiveCell.FormulaR1C1 = "=IF(R[-8]C- totht =0,""ok"",""erreur"")"
resultat = Range("c10")
Cells(12, 3) = resultat
End Sub |
cela fonctionne bien sans les "" et & encadrant la variable totHT mais ne fonctionne pas avec leur présence.
c'est bien des nombres avec virgule qui sont écrit dans la feuille en c2 et c4.
Cela justifie, je crois, mon questionnement sur la syntaxe qui m'échappe.
cordialement.
probleme de definition variable
bonsoir Patrick,
Ta version marche indépendamment du type de la variable totht ( long ou single). Pour mémoire, Rush63 veut déclarer une variable décimale de type single.
Au final, la différence entre nos versions vient de ce que je ne déclare pas de type au résultat du calcul (formula = "= si ....) -apparemment, Rush63 non plus- et que je n'encadre pas la variable totht des caractères " & avec lesquels elle ne fonctionne pas.
Je constate par contre qu'avec " & ou pas encadrant la variable totht le résultat est le même dans ta version.
La formule si(.....) renvoyée dans la cellule de la feuille de calcul est correcte et identique dans nos deux versions. Alors pourquoi s'encombrer de ces caractères apparemment inutiles?
En revanche, les 2 "" encadrant ok et erreur semblent, eux, indispensables au bon fonctionnement.
Je suppose que faute de déclaration de type au résultat, Excel met le type variant par défaut, mais je n'en mettrais pas ma main au feu.
Pour indication, les cellules dans lesquelles sont entrées les valeurs du test sont au format standard (mais quel que soit le format des cellules, ça fonctionne.).
Espérons que Rush63 trouvera dans tout cela la réponse qu'il souhaite à supposer que le problème ne vienne pas d'ailleurs.
En conclusion: Je me demande s'il ne serait pas plus simple d'entrer la formule si(.......) directement dans la feuille de calcul plutôt que de confier cette tache à VBA à chaque utilisation.
cordialement.