Prb sur Combobox

cs_cyriloo Messages postés 60 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 12 septembre 2007 - 1 juin 2006 à 09:33
cs_cyriloo Messages postés 60 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 12 septembre 2007 - 1 juin 2006 à 18:21
Bonjour , j'ai un probléme sur l'utilisation d'un Combobox; Je m'explique : J'ai un programe qui va lire certains parametres sur un appareil connecté par RS232. Je fais donc une lecture cyclique à l'aide d'un timer , une fois la lecture terminé , j'appelle une fonction qui permet de faire le refresh de ma page et donc du Combobox. Le probléme est que sur l'appareil connecté ,

Lundi équivaut à 1
Mardi a 2
Mercredi à 3
...

donc lors du load de la form , je rempli le combobox :

Private Sub Form_Load()
combo1.additem "Lundi"
combo1.itemdata(combo1.newindex) = 1
combo1.additem "Mardi"
combo1.itemdata(combo1.newindex) = 2
combo1.additem "Mercedi"
combo1.itemdata(combo1.newindex) = 3
combo1.additem "Jeudi"
combo1.itemdata(combo1.newindex) = 4
combo1.additem "Vendredi
combo1.itemdata(combo1.newindex) = 5
combo1.additem "Samedi"
combo1.itemdata(combo1.newindex) = 6
combo1.additem "Dimanche"
combo1.itemdata(combo1.newindex) = 7
end sub

Jusque là tout va bien , lors de l'évenement click sur le combobox j'ai :

Private Sub Combo1_Click()
Tableau(88) = Combo1.ListIndex
Jour_Change = True                               ' Sert a voir si le jour a changer pour lecrire sur lappareil
End Sub

ensuite dans mon timer qui me permet de faire une lecture cyclique de lappareil jai :

Private Sub Timer_Horloge_Timer()

    If Jour_Change = True Then      'Si le jour a ete change on ecrit sur lappareil
            Call Ecriture_Mot(Jour)
            Jour_Change = False
    Else
    Tableau(Jour) = LECTURE_MOT(Jour)   'Sinon on fait la lecture de la valeur
    end if

    Refresh_Form_Horloge        'On appelle cette fonction pour rafraichir le combobox
 end sub

et la fonction permettant de de rafraichir le combobox :

Public Sub Refresh_Form_Horloge()

Dim DayY As Integer
For DayY = 1 To 7
If Tableau(Jour) = DayY Then
    F_Horloge.Combo1.ListIndex = DayY -1
End If
Next DayY

End sub

Voila , le probléme c'est qu'a cause de la lacture cyclique , Le jour se décrémente un a un , en l'ecrivant sur l'appareil.
Je pense que le prb est que par exemple la valeur du lundi est 1 , mais que l'index de Lundi dans le Combobox est 0 .
Si vous avez des suggestions n'hesitez pas!

6 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
1 juin 2006 à 10:08
Salut,

Si il y a un ecart de 1 tu n'a cas faire  F_Horloge.Combo1.ListIndex = DayY
au lieu de F_Horloge.Combo1.ListIndex = DayY -1

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
cs_cyriloo Messages postés 60 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 12 septembre 2007
1 juin 2006 à 10:47
Oui mais dans ce cas , il m'affiche le lundi au lieu du mardi!
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
1 juin 2006 à 11:00
Dans ce cas c'est DayY + 1 (non?)

Sinon essaie ca

Dim DayY As Integer 
Dim I As Integer 
For DayY = 1 To 7 
If Tableau(Jour) = DayY Then 
    For I = 1 To 7 
        If F_Horloge.Combo1.ItemData(I) = DayY Then 
            F_Horloge.Combo1.ListIndex = I 
            Exit For 
        End If 
    Next 

End If 
Next DayY 
 

<small> Coloration syntaxique automatique [AFCK]</small>
       

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
s
0
erefdatacomputing Messages postés 165 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 24 avril 2018
1 juin 2006 à 17:47
Pour info:

Ouvre un nouveau Projet et une nouvelle Form pour tester çà !!!
Sur ta form, 2 TextBox (vj et noj), et 1 CommandButton (Command1)

Tout en haut de ta page de code tu écris çà:

Option Explicit
Dim X As Integer
Dim N As String

puis pour le CommandButton:



Private Sub Command1_Click()
X = Val(noj)
N = Format(X, "dddd")
vj = N
End Sub


Lance l'application, et dans noj tu inscris un nombre compris entre 1 et 7
(dans VB par convention: 1=Dimanche, 2=Lundi, etc.. .. .. 7=Samedi)

Click sur le CommandButton, et regarde se qui s'inscrit dans le TextBox 'vj' !!!!!!!

Je pense que ça va te servir !!!!   à toi de l'adapter pour ton projet !!!

Voilà !!!   à plus !!!!

Tiens moi au courant !!!!

Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
erefdatacomputing Messages postés 165 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 24 avril 2018
1 juin 2006 à 18:08
un petit PS:  
<gras>combo1.itemdata(combo1.newindex) = 1',

pose sur ta form , un 'DTPicker' , et si dans les paramètres utilisés, il y a la date en entier (ex: 01/03/2005), ou si on peut la recomposer, (ex: param1=01 pour le jour,  param2=03 pour le mois, para3=2005 pour l'année) c'est tout bon, contacte moi pour la marche à suivre si tu le désir !!

Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!
0
cs_cyriloo Messages postés 60 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 12 septembre 2007
1 juin 2006 à 18:21
OK merci erefdatacomputing , je vais tester ça au boulot demain

Je te tiens au courant
0
Rejoignez-nous