kriscc
Messages postés1Date d'inscriptiondimanche 27 janvier 2008StatutMembreDernière intervention27 janvier 2008
-
27 janv. 2008 à 12:27
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 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
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)