Problème urgent !!

Signaler
Messages postés
21
Date d'inscription
mercredi 28 décembre 2011
Statut
Membre
Dernière intervention
30 décembre 2011
-
Messages postés
21
Date d'inscription
mercredi 28 décembre 2011
Statut
Membre
Dernière intervention
30 décembre 2011
-
Bonjour,
j'ai un problème pour insérer toutes les variables d'une variable a plusieurs types.
pas facil de s'exprimer...

j'ai fait ça :
Public Sub ajout_ope()

A1 = CStr(entretien(i).NomOpe)
A2 = CStr(tenue_de_route(i).NomOpe)

If UserForm1.ListBox1.Value = entretien(i).NomOpe Then
UserForm1.ListBox2.AddItem (UserForm1.ListBox1.Value)
UserForm1.ListBox3.AddItem CSng(entretien(i).Cout)
UserForm1.ListBox4.AddItem CSng(entretien(i).temps)

ElseIf UserForm1.ListBox1.Value = A2 Then
UserForm1.ListBox2.AddItem (UserForm1.ListBox1.Value)
UserForm1.ListBox3.AddItem CSng(tenue_de_route(i).Cout)
UserForm1.ListBox4.AddItem CSng(tenue_de_route(i).temps)

ElseIf UserForm1.ListBox1.Value = freinage.NomOpe Then
UserForm1.ListBox2.AddItem (UserForm1.ListBox1.Value)
UserForm1.ListBox3.AddItem (freinage.Cout)
UserForm1.ListBox4.AddItem (freinage.temps)

ElseIf UserForm1.ListBox1.Value = Echappement.NomOpe Then
UserForm1.ListBox2.AddItem (UserForm1.ListBox1.Value)
UserForm1.ListBox3.AddItem (Echappement.Cout)
UserForm1.ListBox4.AddItem (Echappement.temps)

End If

End Sub


mais le problème est que pour l'entretien, i peut prendre des valeurs entre 0 et 9 et pour la tenue de route, i peut prendre des valeurs entre 0 et 3
avec ce que j'ai fait, dans ma listbox1 si je sélectionne la première ligne (0) tout s'affiche comme il faut dans mes autres listbox mais si je sélectionne les autres lignes ( (1) -> (9) ou (1) -> (3) ) rien ne se passe.

une idée ?

merci d'avance pour votre aide.

liz739

2 réponses

Messages postés
33198
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 août 2021
351
Bonjour,

Déjà, penses à utiliser les balises de code lorsque tu ecris ..du code dans le fofo...

ensuite, plutot que de passer par des If /else... je te conseillerai de regarder du côte des select case.

A1 = CStr(entretien(i).NomOpe)
A2 = CStr(tenue_de_route(i).NomOpe)

' Affichage dans la fenetre d'execution des valeurs des variables :
Debug.Print A1
Debug.Print A2
Debug.Print freinage.NomOpe
Debug.Print Echappement.NomOpe

'test de la valeur de la listbox1
Select Case UserForm1.ListBox1.Value
    Case entretien(i).NomOpe
        '...
    Case A2
        '...
    Case freinage.NomOpe
        '...

    Case Echappement.NomOpe
        '...
End Select




Ensuite est ce que tu veux que tes valeurs s'affichent au moment Où tu cliques dans ta listbox, ou apres avoir cliqué sur un bouton (une fois ta ligne selectionnée ) ?

Si c'est au moment du choix dans la listbox, il faut que tu mettes ton code dans :


Private Sub ListBox1_Change()
'Par exemple: affichage de la nouvelle valeur selectionnée :
    MsgBox "val : " & ListBox1.Value
End Sub





Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
Messages postés
21
Date d'inscription
mercredi 28 décembre 2011
Statut
Membre
Dernière intervention
30 décembre 2011

Merci de votre réponse mais le problème persiste.

J'ai écrit précédemment :

Public Sub charger_ope_entretien()

    entretien(0).NomOpe = "vidange"
    entretien(1).NomOpe = "climatisation"
    entretien(2).NomOpe = "filtre à huile"
    entretien(3).NomOpe = "filtre à air"
    entretien(4).NomOpe = "niv. lave glace"
    entretien(5).NomOpe = "niv. liq. refroidissement"
    entretien(6).NomOpe = "niv. liq. direction assistée"
    entretien(7).NomOpe = "controle essuie-glaces"
    entretien(8).NomOpe = "eclairage"
    entretien(9).NomOpe = "nettoyage"
    
    entretien(0).Cout = 10.1
    entretien(1).Cout = 5
    entretien(2).Cout = 8
    entretien(3).Cout = 20
    entretien(4).Cout = 15
    entretien(5).Cout = 17
    entretien(6).Cout = 10
    entretien(7).Cout = 15
    entretien(8).Cout = 15
    entretien(9).Cout = 12
        
    entretien(0).temps = 0.5
    entretien(1).temps = 0.5
    entretien(2).temps = 0.2
    entretien(3).temps = 0.2
    entretien(4).temps = 0.1
    entretien(5).temps = 0.1
    entretien(6).temps = 0.1
    entretien(7).temps = 0.2
    entretien(8).temps = 0.5
    entretien(9).temps = 1
    
    
    UserForm1.ListBox1.Clear
    
    For i = 0 To 9
        
        UserForm1.ListBox1.AddItem (entretien(i).NomOpe)
            
    Next
    
End Sub

Public Sub charger_ope_tenue()

    tenue_de_route(0).NomOpe = "changement pneus"
    tenue_de_route(1).NomOpe = "pression pneus"
    tenue_de_route(2).NomOpe = "changement amortisseurs"
    tenue_de_route(3).NomOpe = "changement cardans"
    
    tenue_de_route(0).Cout = 5
    tenue_de_route(1).Cout = 10
    tenue_de_route(2).Cout = 15
    tenue_de_route(3).Cout = 20
    
    tenue_de_route(0).temps = 0.5
    tenue_de_route(1).temps = 0.1
    tenue_de_route(2).temps = 1
    tenue_de_route(3).temps = 2
    
    
    UserForm1.ListBox1.Clear
    
    For i = 0 To 4
    
        UserForm1.ListBox1.AddItem (tenue_de_route(i).NomOpe)
      
    Next
    
End Sub


et je n'ai toujours que les lignes correspondant à entretien(0).NomOpe "vidange" et tenue_de_route(0).NomOpe "changement pneus" qui fonctionne quand on les sélectionne.
sinon c'est quand je clic sur un bouton que la sélection doit s'afficher mais je n'ai pas de problème pour ça.