OVH Cloud OVH Cloud

Menus déroulants dépendants

12 réponses
Avatar
Jennifer
Bonjour !
Je cherche à rendre deux combobox dépendants l'un de l'autre, avec des
données variant selon le choix sélectionné dans le 1er combobox (je désire
que la liste s'actualise dans le 2ème combobox en fonction de ce que je
sélectionne dans le 1er combobox).
Pouvez-vous m'aider ?
Merci bcp !

2 réponses

1 2
Avatar
Jennifer
en fait j'ai privilégié un pays une colonne, une ville une colonne. C'est un
peu différent, mais je pense que ça va aller!
Merci bcp!

"X" a écrit :

De rien :o)

Je n'ai pas voulu rendre plus lourd, mais en fait, de séparer le pays et
ses villes par du blanc (espaces), ce n'est pas bon, ça interdit de facto de
mettre des noms composés de pays ou ville sans tiret d'union (x-y), alors le
mieux ce serait une autre séparation que l'espace, généralement on met
quelque chose comme le point-virgule ";" (pays;ville)... Ainsi la recherche
de séparation ne s'effectue évidemment plus sur un espace " ", mais sur un
";"... ce qui ipso facto t'autorise à écrire les lieux normalement (avec des
espaces)...
Nota bene in fine, tu peux corriger directement et manuellement dans le
fichier texte, et si tu utilises le principe d'une séparation par
"point-virgule" par exemple, tu n'as pas besoin d'aligner les données en
colonnes (ne pas mettre de tabulation), mais mettre un <entrée> en fin de
ligne...

@+, bye, Joe.

http://irolog.free.fr

-------------------------

"Jennifer" a écrit dans le message de
news:
> Bonjour à toi sauveur !!!!!
> Merci beaucoup de m'avoir apporté une solution et de me sortir de mon
> pétrin !
> Comme j'ai pu le dire auparavant, je vais tenter de comprendre le code
> (les
> commentaires vont bien m'être utiles, trop bien) !!!!!!
> A charge de revanche,
> Très bonne soirée et très bon WE,
>
> Jennifer
>
> "X" a écrit :
>
>> Tiens, envoici un avec la saisie et l'impression, complet (livré
>> clef en main), ci-joint fichier à copier avec le code:
>>
>> ' lecture entre 2 combo : form 1
>> '
>> ' ---> http://irolog.free.fr/ecrire/index.htm
>> '
>> ' OBJETS = 15
>> ' - combo1 + combo2 à style = 2
>> ' - Text1 + text2 + text3 + text4
>> ' - list1 à sorted=true
>> ' - command1 + command2
>> ' - label1 + 2 + 3 + 4 + 5 + 6
>> '
>> Option Explicit
>> Dim p1a As Long
>> Dim p1b As Long
>> Dim p1c As Long
>> Dim p1d As Long
>> Dim ligne As String
>> Dim pays As String
>> Dim ville As String
>> Dim i As Long
>> Dim j As Long
>> Dim k As Long
>> '
>> Sub Form_Load()
>> ChDrive App.Path ' mettre fichier dans même répertoire que programme
>> ChDir App.Path
>> Combo1.Clear
>> Combo2.Clear
>> Text1 = ""
>> Text2 = ""
>> Text3 = ""
>> List1.Clear
>> End Sub
>>
>> Sub Form_Activate()
>> Dim ou As Integer
>> '
>> p1a = FreeFile ' on assigne 1 pointeur
>> On Error GoTo erreur ' inexistant
>> Open "pays_ville.txt" For Input As p1a ' on ouvre
>> '
>> Do While EOF(p1a) <> True ' tant que pas vide
>> If EOF(p1a) = True Then Exit Do
>> Line Input #p1a, ligne ' etraction lecture
>> List1.AddItem ligne
>> ou = InStr(1, ligne, " ", 1) ' localisation pays
>> pays = Mid(ligne, 1, ou - 1) ' extraction
>> Combo1.AddItem pays ' on met tout dans le combo
>> Loop
>> Close p1a
>> '
>> For i = (Combo1.ListCount - 2) To 0 Step -1 ' enlève doublons
>> If Combo1.List(i) = Combo1.List(i + 1) Then Combo1.RemoveItem i + 1
>> Next i
>> '
>> Combo1.Refresh
>> For i = 0 To Combo1.ListCount - 1 ' affiche "fr..." par défaut
>> If Combo1.List(i) = "France" Then
>> Combo1.ListIndex = i
>> Exit For
>> End If
>> Next i
>> '
>> List1.ListIndex = 0
>> Text4 = List1.ListCount
>> Call Combo1_Click ' appel choix combo2
>> Exit Sub
>> '
>> erreur:
>> Close p1a
>> On Error Resume Next
>> MsgBox Err.Number & vbLf & Err.Description & vbLf & Err.Source
>> End Sub
>>
>> Sub Combo1_Click() ' click combo1
>> Dim lgr_pays As Byte
>> '
>> Combo2.Clear
>> pays = Combo1.List(Combo1.ListIndex)
>> lgr_pays = Len(pays)
>> p1b = FreeFile
>> Open "pays_ville.txt" For Input As p1b
>> '
>> Do While EOF(p1b) <> True
>> If EOF(p1b) = True Then Exit Do
>> Line Input #p1b, ligne
>> If pays = Mid(ligne, 1, lgr_pays) Then ' si trouvé pays = ramasse
>> ville
>> ville = Mid(ligne, lgr_pays + 1, Len(ligne) - lgr_pays)
>> ville = Trim(ville) 'retasse
>> Combo2.AddItem ville
>> End If
>> Loop
>> '
>> Close p1b
>> Combo2.ListIndex = 0 'début liste
>> Text1 = Combo1.Text & " = " & Combo2.Text
>> End Sub
>>
>> Sub Combo2_Click() ' click combo2
>> Text1 = Combo1.Text & " = " & Combo2.Text
>> End Sub
>>
>> Sub Command1_Click() 'ajout
>> Dim rep
>> Dim octet As String * 1
>> Dim reste As String
>> '
>> Text2 = Trim(Text2)
>> Text3 = Trim(Text3)
>> If Len(Text2) < 2 Or Len(Text3) < 2 Then
>> erreur:
>> MsgBox "Saisie invalide ", vbExclamation
>> Exit Sub
>> End If
>> '
>> For i = 1 To Len(Text2)
>> If Mid(Text2, i, 1) = " " Then GoTo erreur
>> Next i
>> '
>> For i = 1 To Len(Text3)
>> If Mid(Text3, i, 1) = " " Then GoTo erreur
>> Next i
>> '
>> reste = LCase(Text2) ' 1ere majuscule, le reste en minuscules
>> octet = Mid(reste, 1, 1)
>> i = Len(reste)
>> reste = Mid(reste, 2, i - 1)
>> ligne = UCase(octet)
>> ligne = ligne & reste
>> Text2 = ligne
>> '
>> reste = LCase(Text3)
>> octet = Mid(reste, 1, 1)
>> i = Len(reste)
>> reste = Mid(reste, 2, i - 1)
>> ligne = UCase(octet)
>> ligne = ligne & reste
>> Text3 = ligne
>> '
>> ligne = Text2 & " " & Text3
>> For i = 0 To List1.ListCount - 1
>> If ligne = List1.List(i) Then
>> MsgBox "Existe déjà ", vbExclamation
>> Exit Sub
>> End If
>> Next i
>> '
>> rep = ""
>> rep = MsgBox("Confirmer l'ajout ", vbQuestion + vbDefaultButton2 +
>> vbYesNo)
>> If rep <> vbYes Then Exit Sub
>> '
>> List1.AddItem ligne 'rajout pays-ville
>> List1.Refresh
>> '
>> p1c = FreeFile
>> Open "pays_ville.tmp" For Output As p1c
>> For i = 0 To List1.ListCount - 1
>> ligne = List1.List(i)
>> Print #p1c, ligne
>> Next i
>> Close p1c
>> '
>> Kill "pays_ville.txt" ' double, protège d'une coupure jus ou système
>> FileCopy "pays_ville.tmp", "pays_ville.txt"
>> Kill "pays_ville.tmp"
>> Text2 = ""
>> Text3 = ""
>> Text4 = List1.ListCount
>> MsgBox "Ajour effectué ", vbInformation
>> End Sub
>>
>> Sub List1_DblClick() 'suppression
>> Dim rep
>> '
>> If List1.ListIndex < 0 Then Exit Sub
>> rep = ""
>> rep = MsgBox("Confirmer la suppression ", vbQuestion + vbYesNo +
>> vbDefaultButton2)
>> If rep <> vbYes Then Exit Sub
>> '
>> List1.RemoveItem List1.ListIndex
>> List1.Refresh
>> '
>> p1d = FreeFile
>> Open "pays_ville.tmp" For Output As p1d
>> For i = 0 To List1.ListCount - 1
>> ligne = List1.List(i)
>> Print #p1d, ligne
>> Next i
>> Close p1d
>> '
>> Kill "pays_ville.txt"
>> FileCopy "pays_ville.tmp", "pays_ville.txt"
>> Kill "pays_ville.tmp"
>> Text4 = List1.ListCount
>> MsgBox "Suppression effectué ", vbInformation
>> End Sub
>>
>> Sub Command2_Click() 'imprime
>> Dim rep
>> Dim fin As Boolean
>> '
>> If List1.ListCount < 1 Then Exit Sub
>> rep = ""
>> rep = MsgBox("Confirmer l'impression ", vbQuestion + vbDefaultButton2
>> +
>> vbYesNo)
>> If rep <> vbYes Then Exit Sub
>> '
>> Printer.FontName = "courier new"
>> Printer.FontSize = 10
>> Printer.Orientation = 1
>> Printer.Print ""
>> Printer.Print ""
>> j = 1
>> k = 1
>> '
>> For i = 0 To List1.ListCount - 1
>> fin = False
>> Printer.Print " " & List1.List(i)
>> j = j + 1
>> If j = 58 Then ' fin page
>> j = 0
>> Printer.Print " " & k
>> k = k + 1
>> Printer.NewPage
>> Printer.Print ""
>> Printer.Print ""
>> fin = True
>> End If
>> Next i
>> '
>> If fin = False Then
>> Printer.Print ""
>> Printer.Print " " & k
>> End If
>> Printer.EndDoc
>> End Sub
>> '---------------FIN----------------
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> "Jennifer" a écrit dans le message
>> de
>> news:
>> > En fait, disons que dans mon premier combobox, je choisis un pays dans
>> > la


Avatar
scraper
Bonjour Jennifer, dans le message
news:
tu disais :

en fait j'ai privilégié un pays une colonne, une ville une colonne.
C'est un peu différent, mais je pense que ça va aller!



je ne sais pas la finalité exacte de ton appli, mais au peu que tu en as
dit, je ne saurais trop te conseiller un fichier du type fichier ini, dont
la structure me semble particulièrement adaptée à tes besoins ...

(quitte à renommer ce fichier en City.dat, si tu le souhaites, y'a aucun
problème ...

l'intérêt de ce choix est la facilité d'interrogation de ce fichier, par la
suite, au moyen de l'API consacrée ;-)

note que tu peux aussi écrire dans le fichier directement depuis le code
(mises à jour, etc) mais que je ne te l'ai pas présenté, ne faisant pas
partie de ta question ;-)


--

Adresse invalide
Merci de répondre sur le forum ...
http://scraper.chez-alice.fr

scraper
1 2