ecranbleu27
Messages postés190Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention29 avril 2009
-
2 avril 2007 à 18:51
ecranbleu27
Messages postés190Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention29 avril 2009
-
3 avril 2007 à 05:41
bjr
j'ai un soucis "erreur 9 indice en dehors de la plage"....
sur ma machine ou j' ai vb6, je n'ai pas d'erreur
lorsque j'installe le prog sur la deuxieme machine, j'ai l'erreur.
je suppose que cela vient de cette partie de mon code,
(plus de ce qui est en bleu, car avant je ne l'avais pas encore programmé et je n'avais pas d'erreur....)
ou je fais une somme d'heures , avec plusieurs moyennes :
atab est déclaré en string
heure et minute en integer
j'ai mis une gestion d'erreur qui me dis bien que ca se passe par là.....
<hr />
Set AdoStatS = New ADODB.Recordset
strSQL = "SELECT * FROM sortie "
AdoStatS.Open strSQL, cnn, adOpenDynamic, adLockOptimistic, adCmdText
If AdoStatS.RecordCount = 0 Then Exit Sub
With AdoStatS
While Not (.EOF)
X = .Fields(3)
filteredExpression = replaceMinutesByCents(Replace(X, ",", "."))
If cEval.Evaluate(Replace(filteredExpression, BASE10_SYMBOL, "")) <> "" Then
result = cEval.Evaluate(Replace(filteredExpression, BASE10_SYMBOL, ""))
sommecolonne = sommecolonne + result
Else
TxtR(4) = ""
End If
.MoveNext
Wend
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 2 avril 2007 à 19:02
Tu fais un split sur un séparateur décimal qui risque de ne pas être présent dans 2 cas de figure :
1) cas d'une machine dont la localisation est telle qu'un autre séparateur que le tien est utilisé
2) cas d'un nombre entier (mais non car je vois que tu formates à 2 décimales avant le split)
si le séparateur (le tien) n'est pas trouvé (localisation différente) , le tableau résultant de ton split n'a qu'un seul élément (0) et l'élément (1) est donc hors limites de ton tableau !
ecranbleu27
Messages postés190Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention29 avril 20091 2 avril 2007 à 19:06
merci pour cette rapidité,
comment puis-je résoudre ce pb?
ai-je bien compris que le séparateur ; c'est le point ou virgule que l'on peut paramétrer dans les options régionales ou linguistiques...
si je fais une condition avec un "replace" est ce que cela peut le faire?
ecranbleu27
Messages postés190Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention29 avril 20091 2 avril 2007 à 19:11
oups ! nos messages se sont croisés...
surement qu'il existe des moyens plus orthodoxes...
mais celui-ci marche,
vb je l'aprends au fur et a mesure, et je suis preneur et a l'écoute des conseils que l'on pourrait me donner....
j'apprends en regardant les codes mais ne suis pas du tout issu du monde informatique
Vous n’avez pas trouvé la réponse que vous recherchez ?
ecranbleu27
Messages postés190Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention29 avril 20091 2 avril 2007 à 19:33
--> jmfmarques
bon, effectivement,
je viens de changer les param linguistiques , cad la virgule en point
et là plus d'erreur.....
merci de m'avoir mis sur la voie sans me donner la solution, c'est à moi de la trouver,
n'est-il pas?
d'ailleur il me semble que c'est comme cela que vs procedez ds vos réponses,
n'y voyez pas une attaque , mais j'ai eu souvent l'occasion de lire vos réponses
sur developpez. ;;;.....(vs n'etes pas prof par hasard??)
et donc je ne suis pas surpris de votre intervention ....
cela n'empeche que si il y a d'autres solutions pour travailler les heures , je ne demande qu' a apprendre......
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 2 avril 2007 à 20:18
ce que je veux savoir, c'est, quand des valeurs y figurent, ce qu'il y a dans :
Int(sommecolonne) + (sommecolonne - Int(sommecolonne))
un simple :
msgbox Format(Int(sommecolonne) + (sommecolonne - Int(sommecolonne))
juste avant
VAR2 = Format(Int(sommecolonne) + (sommecolonne - Int(sommecolonne)) * 0.6, "0.00")
te permettra de le savoir !
C'est ce que j'attends de savoir pour te répondre ...
ecranbleu27
Messages postés190Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention29 avril 20091 3 avril 2007 à 04:03
Première chose et dans l'ordre:
je rajoute donc:
msgbox (Int(sommecolonne) + (sommecolonne - Int(sommecolonne))
juste avant
VAR2 = Format(Int(sommecolonne) + (sommecolonne - Int(sommecolonne)) * 0.6, "0.00") dans mon code comme prévu,
je saisi un enregistrement avec comme valeur : 2.00 (donc deux heures)
ca c'est dans un form "SAISIE",
mes "stats" elles sont ds un form "STAT"
je mets des points d'arrets autour de "msgbox Format(Int(sommecolonne......"
j'ai bien le msgbox qui s'ouvre , mais le mess affiché est :
(int(sommecolonne) + (sommecolonne - Int(sommecolonne)) et pas de valeur, par contre la valeur de "atab" sur la ligne suivante est bien de "2.00"
ainsi que ds la boucle qui précede ( elle est de 2 , sans formatage 0.00)
et mon form "STAT" affiche bien les données.
maintenant je vais regarder les exemples donnés.....
ecranbleu27
Messages postés190Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention29 avril 20091 3 avril 2007 à 05:24
les deux exemples:
ma première analyse est que j'ai l'impression d'avoir un soucis avec la déclaration de mes variables.....
VAR2 es déclaré en variant
HEURE et MINUTE en integer
premier exemple :
si j'ai bien compris le "" renvois les chiffres avant la virgule de la division....(génial....)
mais pour cas , il faut savoir tout d'abord que la personne qui saisit , saisit une durée dans le form "SAISIE" ,
cad si il tape : 1.50 , ce n'est pas une heure et demie mais bien une heure et 50 minutes.
donc pour que mon VAR2 soit bien exprimé il faut que je transforme l'exemple 1 en :
nombreminutes = 612
minutes = nombreminutes Mod 60
heures = nombreminutes \ 60
MsgBox heures & " heures " & " et " & minutes & " minutes"
dans le deuxième partie de mon code ou je calcule une moyenne "Y",
Y=VAR2 / txtr(0) ' VAR2=total des durées et txtr(0) = nb de saisies.
l'exemple reste valable avec :
Y=VAR2 / txtr(0) 'Y as string
X=format(Y ,"0.00") 'X as string
nombreminutes = X * 60
minutes = nombreminutes Mod 60
heures = nombreminutes \ 60
MsgBox heures & " heures " & " et " & minutes & " minutes"
mais comment puis-je être sûr que ca marchera ds ts les cas......???
autre info la saisie de la durée de la form "SAISIE" se fait ds un textbox dataformat "heure" et datafield "duree" (qui ds la table ACCESS est en texte).
mais effectivement, le premier exemple est beaucoup plus simple que mon "atab",
pour le deuxieme exemple , ca ne marche pas......je pense qu'a la vue de toutes mes variables qui sont déclarées dans tous les sens....
voilà, j'y suis depuis 3 h ce matin il est 5H30 , ce que vous les "spécialistes" vous voyez en 2 sec, ben.......
merci de me dire si je suis a coté de la plaque, bon je vais allez boire mon troisieme café et vous souhaite un bon réveil.....