Problème condition d'entrée dans une boucle

Résolu
Signaler
Messages postés
26
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
27 juin 2012
-
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
-
Bonjour à tous,

Voila cela fait 2h que je me prends la tête sur ce petit problème et je n'arrive pas à trouver mon erreur.

J'ai programmé la boucle suivante qui transforme des heures au format hexadécimal puis les copies dans une feuille Excel.

Lorsque j'execute mon programme, la condition d'entrée n'est pa vérifiée et j'ai le message:
"Heure_début_arret(j) = "

Quelle est mon erreur?

Merci d'avance pour votre aide

Module:
Public Heure_début_arret() As Integer
Public Heure_fin_arret() As Integer


Fonction:
Dim j, i As Integer


Do While Heure_début_arret(j) <> 0
   
        h1 = Hex(Heure_début_arret(j) / 256) & ":" & Hex(Heure_début_arret(j) Mod 256)
        feuilleExcel2.Cells(i, 4) = h1
            
        h2 = Hex(Heure_fin_arret(j) / 256) & ":" & Hex(Heure_fin_arret(j) Mod 256)
        feuilleExcel2.Cells(i, 5) = h2
       
             i = i + 1
             j = j + 1
 
       Loop

11 réponses

Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
lillith212>
Deux tableaux d'entiers sont bien déclarés ici :
Public Heure_début_arret() As Integer
Public Heure_fin_arret() As Integer

non, ce qui gène, c'est que ce sont deux tableaux de 0 case.
il faut les dimensionner dynamiquement comme cela :

redim Heure_début_arret(5)
ReDim Heure_fin_arret(5)

et s'assurer que ces 6 cases suffiront...

attention, Drake59730, a ne pas confondre:
Dim j, i As Integer
et
Dim j As Integer, i As Integer
ou
Dim j As integer
Dim i As Integer

dans ton code, j est un Variant, i un entier
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
1
Bonjour,

Si je comprends bien ton problème ta condition ne peut pas être vérifié car tu as une erreurs.
Quand je lis ton code je ne vois pas quand tes variables sont définies. Logique que tu ais une erreur de ce type.

Heure_début_arret tu récupère où sa valeur?
Heure_début_arret(j) --> ????
C'est un integer et non un tableau...

Voila si ca peut t'aider sinon donne un peu plus de ton code pour comprendre...

Bonne prog

SLB
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
2
Salut,
j est égale à quoi ?
Peut être devrais tu initialiser tes variables afin de rentrer dans la boucle















 





Cliquer "Réponse Acceptée




"













Partageons Notre Savoir & Nos Acquis



-
JML




<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Messages postés
26
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
27 juin 2012

Excusez moi, j'ai fait tellement d'essais que j'ai oublié de remettre l'initialisation de 'j' qui est égal à 0.

La variable heure_début _arret est tirée d'un tableau de mots venant d'un automate (%MW1000:200) par exemple si vous connaissez.


Je viens juste copier ce tableau dans le tableau VB que je vais ensuite copier ensuite dans un feuille Excel, mais je n'y arrive pas.


Pour info h1 et h2 sont des variant et les valeurs reçues de l'automate sont des entiers.

Merci
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
1
Re:

Autant pour moi. Je me suis mal exprimée. :)

SLB
Messages postés
26
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
27 juin 2012

Ouaoh!!

La j'avoue c'est le genre de  truc que j'ai encore un peu de mal à gérer.

Merci à tous,vous m'avez tiré une épine du pied.

Merci
               
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
1
Re:

Solution pour ton tableau : Si tu peux récupérer le nombre exact de case avant plutot que de donner une valeur aléatoire qui pourrai poser problème dans le futur fait le...

dim index as integer

index = 'nombre de case

Redim Heure_début_arret(index)
ReDim  Heure_fin_arret(index)

ton appli est plus dynamique comme ca...

SLB
Messages postés
26
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
27 juin 2012

Ok, je vais faire comme ça et je récupèrerai mon index dans l'automate, super idée !!

Merci bcp 
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
les tableaux (par defaut) commencent à 0 donc....

dim index as integer
index = 'nombre de case +1
Redim Heure_début_arret(index)
ReDim Heure_fin_arret(index)

au pire, si tu viens a manquer de place, on peut redimensionner, et préciser que l'on souhaite conserver les données :

les tableaux (par defaut) commencent à 0 donc....

index = index+4
Redim Preserve Heure_début_arret(index)
ReDim Preserve Heure_fin_arret(index)
Messages postés
26
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
27 juin 2012

Vous allez rire, j'ai bien essayé vos solutions et j'ai corrigé mes erreurs.
J'ai voulu vérifier mes résultats et la station sur laquelle tourne toutes mes appli s'est mise à ramer sévèrement.

J'ai donc voulu redémarrer histoire de réinitialiser le système et permettre au vieux coucou qui me sert de serveur de souffler.

Et la c'est le drame !!!

Crash du disque dur il a jamais voulu redémarrer!!! Mdr

Donc depuis 1/2 heure je suis au chomage technique!!!

En tout cas merci de votre aide c'était sympa

A+
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
pas de bol...