Pb de "IF"

Résolu
kriscc Messages postés 1 Date d'inscription dimanche 27 janvier 2008 Statut Membre Dernière intervention 27 janvier 2008 - 27 janv. 2008 à 12:27
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 28 janv. 2008 à 00:30
Bonjour,

Je debute un peu en programation. J'utilise surtout VB pour pouvoir retrier des tableaux excel pour les inserer dans un logiciel interne en format txt.
Bref, j'ai un tableau excel qui comporte des heures d'entrée sous la forme 5,00 ou 4,15, ect....
j'ai déclaré un variable k as single
k=.cells(i,9)
if isnumeric(k) then
   If k>=0 and k<5 Then
         montab = Split(k,",")
         ent1 = (5+ (0-(montab(0) + round (montab(1) * 1.66/100)))

Cela fonctionne très bien tant que la valeur qui se trouve dans k comporte une virgule, mais dès que l'heure d'entrée devient un nombre entier : ca plante !

Quelqu'un pourait-il m'aider, je voudrais juste ajouter un "test" afin de savoir si la valeur de k comporte une virgule ou pas, ou si k est un entier ou un single..... tout le reste de mon programme fonctionne a merveille, il ne me reste plus que cela à resoudre...
J'espere que mes explications sont claires et que vous pourrai m'aider.
Par avance, merci à tous
kriscc

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 janv. 2008 à 12:47
Salut
Oui, c'est normal à cause du Split qui ne voit pas de virgule.
Donc il ne voit qu'un seul élément. montab(1) n'existe pas.
Il faut savoir que Split ne fonctionne que sur des chaines.
Dans ton cas, VB convertit automatiquement le type de la variable, pas de problème.
Mais cela va permettre de tricher : On va volontairement ajouter une chaine à "k" :
   montab = Split(k & ",00", ",")
Si k possède une virgule, pas de problème, le Split éclatera les 2 premiers éléments contenus dans "k"
Si k est entier, il prendra en compte les 00 qu'on a ajouter derrière.

D'autre part, chose amusante :
Quand on fait     5 + 0 - x    ça s'écrit aussi plus simplement   5 - x
De plus, il manque une parenthèse )

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 janv. 2008 à 12:48
PS : dans la syntaxe du Split, le "&" est important pour dire à VB d'ajouter une chaine.
Si tu utilises un +, il considèrera que c'est un chiffre et ça ne fonctionnera pas
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 janv. 2008 à 00:30
Réponse de Kriscc après les remerciements d'usage :
"Puis-je abuser et te poser une derniere question qui me bloque? Par avance merci : Quand je lance le programme dans le dossier ou je l'ai developpé à partir de la source, cela fonctionne. Idem avec l'exe mais quand je le lance dans un autre dossier à partir de l'exe, j'ai une erreur d'execution ????? Peux-tu me dire ce que j'ai loupé ?"

"... mais quand je le lance" : Quelle commande ?
"quand je le lance dans un autre dossier à partir de l'exe" : Ca veut dire que tu as déplacé l'EXE ou quoi ? précise
"..., j'ai une erreur d'execution" : Quelle erreur (n° et description) ?
"... ce que j'ai loupé ?" : Tu as loupé la question

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
Rejoignez-nous