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 !

10 réponses

1 2
Avatar
Christian Hugoud
Facile :

Dans l'évènement click de la première, tu remplis la seconde (qui peut être
remplie en fonction de combo1.text).

Christian

"Jennifer" a écrit dans le message de
news:
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 !




Avatar
X
Bonjour,

Faudrait quelques infos en +... Tu parles

"actualise dans le 2ème combobox en fonction de ce que je sélectionne dans
le 1er combobox"

C'est quoi actualiser, modifier l'ordre, supprimer, ajouter???
Les combo sont triés, non triés ???
Un petit exp pratique ???
:o)

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

"Jennifer" a écrit dans le message de
news:
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 !




Avatar
Jennifer
En fait, disons que dans mon premier combobox, je choisis un pays dans la
liste. cf. Liste :
Allemagne
France
Suisse

Apparâit automatiquement alors dans la 2ème liste une ville de ce pays:
liste du 2ème combo :
si France est choisie alors villes qui apparaissent dans le 2nd combo :
Paris
Rodez
Strasbourg

Donc je veux que s'effacent les données du 2ème combo quand je change les
données du 1er combobox.
Globalement mes bases se présentent comme suit :
Allemagne Karlsruhe
Allemagne Stuttgart
France Paris
France Rodez
France Strasbourg
Suisse Berne
Suisse Genève
Suisse Zurich

Le 2nd combo cherche la ville dans la base par un tri du pays.

J'espère avoir été claire. J'ai un fichier constitué comme ça, je peux
l'envoyer à votre adresse si vous le voulez.
Merci d'avance à tous ceux qui pourront m'aider.

Bonne soirée,
Jennifer




"X" a écrit :

Bonjour,

Faudrait quelques infos en +... Tu parles

"actualise dans le 2ème combobox en fonction de ce que je sélectionne dans
le 1er combobox"

C'est quoi actualiser, modifier l'ordre, supprimer, ajouter???
Les combo sont triés, non triés ???
Un petit exp pratique ???
:o)

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

"Jennifer" a écrit dans le message de
news:
> 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 !
>
>





Avatar
X
Tiens, voici un fichier joint zipé, tout est dedans, testé et marche en
VB...

Voici aussi le code (qui est dans le fichier joint) :

http://irolog.free.fr/ecrire/index.htm

' lecture entre 2 combo : form 1
' OBJETS
' - combo1 + combo2 à style = 2
' - Text1
'
Option Explicit
Dim p1a As Long
Dim p2a As Long
Dim ligne As String
Dim pays As String
Dim ville As String
Dim i 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 = ""
End Sub

Sub Form_Activate()
Dim ou As Integer
'
p1a = FreeFile ' on assigne 1 pointeur
On Error GoTo erreur ' inexistant
Open "combo1_2.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
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
'
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)
p2a = FreeFile
Open "combo1_2.txt" For Input As p2a
'
Do While EOF(p2a) <> True
If EOF(p2a) = True Then Exit Do
Line Input #p2a, 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 p2a
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

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

"Jennifer" a écrit dans le message de
news:
En fait, disons que dans mon premier combobox, je choisis un pays dans la
liste. cf. Liste :
Allemagne
France
Suisse

Apparâit automatiquement alors dans la 2ème liste une ville de ce pays:
liste du 2ème combo :
si France est choisie alors villes qui apparaissent dans le 2nd combo :
Paris
Rodez
Strasbourg

Donc je veux que s'effacent les données du 2ème combo quand je change les
données du 1er combobox.
Globalement mes bases se présentent comme suit :
Allemagne Karlsruhe
Allemagne Stuttgart
France Paris
France Rodez
France Strasbourg
Suisse Berne
Suisse Genève
Suisse Zurich

Le 2nd combo cherche la ville dans la base par un tri du pays.

J'espère avoir été claire. J'ai un fichier constitué comme ça, je peux
l'envoyer à votre adresse si vous le voulez.
Merci d'avance à tous ceux qui pourront m'aider.

Bonne soirée,
Jennifer




"X" a écrit :

> Bonjour,
>
> Faudrait quelques infos en +... Tu parles
>
> "actualise dans le 2ème combobox en fonction de ce que je sélectionne


dans
> le 1er combobox"
>
> C'est quoi actualiser, modifier l'ordre, supprimer, ajouter???
> Les combo sont triés, non triés ???
> Un petit exp pratique ???
> :o)
>
> --------------------
>
> "Jennifer" a écrit dans le message


de
> news:
> > 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 !
> >
> >
>
>
>




begin 666 combo1_2.zip
M4$L#!!0````(`+&D230.$^4]8P```)<````5````8V]M8FQ7S(O8V]M8FQ
M7S(N='AT5<@Q#H,P# 70/5+NP%72`0861+9N+;YNA)^88K3J@,87
M2N$WI<K=2"@"V]B[<&544TT$]:X'U86[GXF0I8UY7_G31E20O'9#BY:%OGO
&YC8'K>=SF:<C+YMT74$L#!!0````(`(VK2301%H&#@P$``&$"```5````
M8V]M8FQ7S(O8V]M8FQ7S(N=F)P75)-C],P$+U'RG^@$7G3%;<<EG8#
MD6@;D=(]4 Y.,MFZ^",:3[I=$/=.RZ+((JL]]YDQF^>LGL>(+^_0!P5!E7N
MCYNT1Q5'GZ$'!-U"_N;PX2=C+&.W"_;6@>NQ_(/"<_ONUSQ+V9S-T_3PW_M0
M;E;;A_I0/UL"M<@.ECHC(4M)-O/MI_O9W4A&<1)&QU%-'&D<F0RD31TBC%
M=;?(L2Q#5>0)Q6:$Y"O?@0Y+(TFN%"YRA,6&@8WK)&P-AT$;<U/!O> ^8W#
M0@?,_)IG8=V]5^J-E+I%4*#IJM6 9!Z' :#5 @)UJO^$B$GSSL?HI.V`PDE
M?ORC%?QLL'+#Q*B<Z5>D7H?N#O8"GE;0C(^E[HT7-^9."FZ%?O3LO1EU9Y='
M:+]/PYV'7IJG%Z&0E1&:_O)5N7A7S3Z=NB*:EK!9SJ%,=4X$?AB"("XT 'O
"WS0E:M*:7S:C:IS4AZKU"<;1UW4]VR'7EK=^W5D(Z5M(T/T["/;H
MO_P-4$L#!!0````(`(^K2321CSBV, ```#(````5````8V]M8FQ7S(O8V]M
M8FQ7S(N=F)W<LORC54L%4P,=%1,+7043 S!A*"E$Z"D9&0&P)%#0T
MTU$PL3#447#FY0(`4$L#!!0````(`(6K231!&1<6[00``&(-```2````8V]M
M8FQ7S(O1F]R;3$N9G)MK59M;]I($/X>*?]AY),*40/!3E-=HZ-2`DF/$TVB
MP#4?H4>8%7C===KCOS;^WBY7W$SN8VA-#J5"0PWIF=EV>?>>PO5_>CP>T-
MG+4[G<.#2YS)!+Y<MJ^57@#_^'!X```]D1JI$EA_NO3UK-US]EAB8GY'.9N;
MM=U__^&L9ASBU%2;WW=JIK%*:W'?G=5M#S(RKVH3 .9?*5MLGPE8)&H8BQ
MJF>S(&NL`F]&'AFAS9_IG<JD;9F-IP"-!YE$ZJ,^6RL;XG7&%?F4JV
MKP5D]*GE+_,$OYZMS14BE=D/.FOS6$P&282KC=VED1)M[_5L=J]T*5&M7/S3
M*+^;@W151)M=MA3BXGB%NV?8&^/I_[>'H.SJHB1>8IQVTYH][5*">Z$
M#CHS^Q#Q][:[O]L@^+%N]Y_H=[KU?V*SG9_6K/VY,$;+26Z06GZ$0LDQW*(
M-HR?8C41,;N,4A&RW[6(,]SRZFD41DSBU^QW&B,,8T&7040^8YUONURM4I5A
M5 ""0+!A'PL< Y3UJF"`@WGVFJU/M+=W)CT_.1$:A6K67NJ
M$>GG!$,M-9Y(!K8]-XN-G;>7?UR-1T44E*'M^Y/`']#9H^OZX:07>RU4+<
M.I&D'F(92GN2?;F U!=PD<%0);-R*7BQ%,(CAJGN(I>[FZE'&PUG6
,.#43ZQ2OXX5")J'K&E-^]KN:3]:=J^$24!BS0,+)3&<XE:HA$DL'B
M7V*$?DY1&T6HP;<<(=<J<LH=L6"UN[%*'1Y'U3W3A^)99ZE(%!Q
M6U5>A$8NA4%7*3>E<NYJD!B<H2X:`PLJD83.]5H2% $6661!]2)4D_]RZ
MW]*):*TT?%)C!:@UK9._3'!%XR82XXX.$_#<F3&;;,R'M=#:=/<<'[.9Y.H
M?*FQ+*.OX&'.!5S|?)YPA^^VAY3<X<VX$F,CJQ"!U5!M/*V<T`C.?(M)&&
MXCDG>KYAD?P7CPNZ-$`-%J$EF;%3#A_`JE+_D2'IEX'X,'WC'X1SP_BAYY
M,A-V(U/*[;+DZL)G&36++;290K7<+CJL(IES+T[W(HH&!@MJ6DR(/6 4U6IY
M0VA8('G34*G4$B&FL6802^0874G)FT54UKZ>%@1'I'#0(79C"BV?2TGB
M?XBQD<HGL4JR$LG:YJ9D/#<6:'JI$8MNL7Z/"[5$6[ZU<J ;?I;*LK#2DT0C
MF]=+[7!5.KE`L649P?!F^IVN^T1.#1%S_2J8%ZOU;O6(@G1LQ4Z-ZA[.?WO
MNMKX8RE"U;A['J#!=%<'(HZ+.(_T%A5^Y?K2%&,(YTJN"D5C3QO0#J'=ZH;C
M_,6!E2-TCUE.HL#Y>/US-N.')-G:-_EB0L+Q!I:3X90NO-;'C/36B>*&8:1R
M'>(.":@7W60*AK9-Y=+8N73Z8:QFVU*>A=QWT;7:LR9< N/<&3
M)O^UZZS2E<98(+XK$T'%$UM""IM*!E1&GY,!X*U#I0!=@[PNIV"^0W()!A-
MNO6]B<%)ZU$]QA9DL]4S:"E<"Y;B,C34<$>?+)-O;QUHNFO:&SD^CX40;
MW Y*`:FEK[B5HQ&C84.U&)W?3(ZT(B>Z=V!8,D<$=9/F.*@[7OR&U)"FC:Z
M%B'&EK^[V1?L9E_P?X/_!U!+`P0*``````"/JTDT````````````````"0``
M`&-O;6)O,5R+U!+`0(4`!0````(`+&D230.$^4]8P```)<````5````````
M``$`( "````!C;VUB;S%?,B]C;VUB;S%?,BYT>'102P$"% `4````" "-
MJTDT$1:!@X,!``!A`@``%0`````````!`" `MH&6````8V]M8FQ7S(O8V]M
M8FQ7S(N=F)P4$L!`A0`% ````@`CZM)-)&/.+8P````,@```!4`````````
M`0`@`+:!3 (``&-O;6)O,5R+V-O;6)O,5R+G9B=U!+`0(4`!0````(`(6K
M231!&1<6[00``&(-```2``````````$`( "V@:"``!C;VUB;S%?,B]&;W)M
M,2YF<FU02P$"% `*``````"/JTDT````````````````"0```````````! `
E_T',!P``8V]M8FQ7S(O4$L%!@`````%``4`0 $``/,'````````
`
end
Avatar
X
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
liste. cf. Liste :
Allemagne
France
Suisse

Apparâit automatiquement alors dans la 2ème liste une ville de ce pays:
liste du 2ème combo :
si France est choisie alors villes qui apparaissent dans le 2nd combo :
Paris
Rodez
Strasbourg

Donc je veux que s'effacent les données du 2ème combo quand je change les
données du 1er combobox.
Globalement mes bases se présentent comme suit :
Allemagne Karlsruhe
Allemagne Stuttgart
France Paris
France Rodez
France Strasbourg
Suisse Berne
Suisse Genève
Suisse Zurich

Le 2nd combo cherche la ville dans la base par un tri du pays.

J'espère avoir été claire. J'ai un fichier constitué comme ça, je peux
l'envoyer à votre adresse si vous le voulez.
Merci d'avance à tous ceux qui pourront m'aider.

Bonne soirée,
Jennifer




"X" a écrit :

> Bonjour,
>
> Faudrait quelques infos en +... Tu parles
>
> "actualise dans le 2ème combobox en fonction de ce que je sélectionne


dans
> le 1er combobox"
>
> C'est quoi actualiser, modifier l'ordre, supprimer, ajouter???
> Les combo sont triés, non triés ???
> Un petit exp pratique ???
> :o)
>
> --------------------
>
> "Jennifer" a écrit dans le message


de
> news:
> > 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 !
> >
> >
>
>
>




begin 666 Pays_Villes.zip
M4$L#!!0````(`(^K2321CSBV, ```#(````8````4&%Y<U]6:6QL97,O8V]M
M8FQ7S(N=F)W<LORC54L%4P,=%1,+7043 S!A*"E$Z"D9&0&P)%#0T
MTU$PL3#447#FY0(`4$L#!!0````(`"I,17PXH3+PH``$8H```5````4&%Y
M<U]6:6QL97,O1F]R;3$N9G)MS5IM;]LX$OY>H/^! &U<TE<2WY)4C0+-$ZZ
ME]MLTJNS+>Y3($NTS4065)O=K]V.SO^)F2%&B;9EVTQ:X`+8DSG X,WSF
MA8H_G7T<G5]=DGZ[TWGYXH1.64(^G;3?<S$G^.61ER((<,@E8PGQ/P=PZ>A
MZ U-CQE-Y#HFZDH0]Z?L<B7M")K";[?MF7O/4DGRP,/$SB^2LI'F=PX&F
M7K#D#N:Q<(U.HS"(::72HDZ*6$E>$EWZ8<CGR")3G(IP?KBR=<^(6O<<CY/
M!9M3$K-,TH9AM10I6;L'?4.NO%.1#PX['4._#L;G240?;+K7*ZFE^RIJ_V!0
MSK8,K6;[GE[]+(D6C;ZF#_*$/Q"]HC+`/_0:<"1WW,;T"VIL-3R[(9:O^&T
M<=![IHT7L#EH(UZ]TD9%_B!X2H5!/PGLB3!WV4`N[JT0F/(<&H()?T2/B
M';'_KO >6?3A+! 9K6Q&>L>B?Z[Q=J]C<_P!WA0Q2PR2@)FN^#.*,6X[D,
MXC)(7(PC*=@ã/!^EL+2.XTGC(B6W?*[6MPT;?LF;$A:31(GW?@X6O15ZN
M6PN@"EXUZ/"M)>K0T>_TUZ"C-NP]=]B_N^6Y!""DP6.V?_B^+MB_ZCCCOT#
ME^'>H=MPKW^P1>AWOR?T!QOT'Y3$=9'?=4:^U_6=)O:V,M'_F2;V-YKH.TT
M<N?O[2STOL?"#>G;"]>X.C]?$YYFBBNG'O8M=,9*/L9VU
M%1W2T"GDNXA_252U<'G$<YD[< >E[V]GK7M'-UG[`XUUYMYG&WL1C&E,U/?
MG7 O^3PC(9^G/'O*]LB<2BDHB6A&)!-49J25+FW#U_^CC,5^WUWG!_XSC#P
M?)<C#MQYJMM=%66(_IN1YSR? R=GX8L__D6(&@)2%9GJHV5'R/Z7:1KC7 M"?A-W9GO;6%[SVW[IXV%=I.)???N'KDLW%2%MMG<KMM ;"=^IGV'+OLVE: M
#86DXX^Q!]4QDGVSNFC88NZ%@.<]+_G.+D67LAA8Q"UC&*)FP<,9^;F!V
MO?2H^X:2T>S(*5$?;MK[L#KNM7W#YW5PW.'5;^W[EAG:>BNDYLTM#1XAH*+
M+E1?[Z ZL3&<$$#-&W62/*[>5BP0?XWY.(B1990&(?(5YZ%KJ&@@0S&3KZ
M!T$C&L8!7,XCX-%'J066LP<HG32J!*#*31+34.9026F"]=3'$COFY V9X#NA
M(N$W->O^_OXO#23,GWS^C43/.;3]D10"E^O:2B@#K]FB,WV3,X79EZ=_//L
M>@1+ZYT$47H=C^SJ&Y_23+5HASK1A-9=$>[2Z3JW?6U6UQ[ABE61WJ8K4Z5
MQ[(X0Q9+Z)/<KKDM1<<Z?G<)RD69/?CTX3.P]+[,U4]W1*9N3U O(
MNXQ<&1:#8U7A+5H6AY*&93.-+#()[&+4[,D"NC*F&N#K-EH;?+`W?V0!-W
M_N6+43Y6K_QN+:0,IR="G8/*Z1I^T,`,&^:-JO(820*DHS,_P(XBR=
M)!ARPET(205?"J"^9P6:@1M=GM84P#43[[U;/>:0B1AGGR%YZZY9-Z
,&/)H'>A9/>!I-HHM)_GZ(#S1-(I%84/B-I'" ; [WL&?FT2V.L@
MR]2.>-!6,>#/%?L5@$ (+LBO_)H3*@2,`S]+Z .H$R12HX4FNH#?J(UJRP?9
M0( &NJ);A^;*GG'R>H0IG5^];P+-#WOZB(AB84;KV<) !`*+B
M!<GYI&+6T4ZN9Q2QRB3(TTP7^+I(+_XWX-PKT-8D5(@NHM_PHV_?1=&Y
MI 4T-0'=PR"`'8MKY"R1QJDL4>'4PA/ P@# ,E$'Y/?6=0JIL!D
M$+6O9&V%EIH]@(C9GDU6SD+,$@D!R,4^L!-*F,H,'">*CC%D-G0NZ5+T>T,
M%F54M&T(<_!E_O$WX$D3SH0133%%T^@2A)_!=Q'V%GS)"M=;$UN,73TP@!D
M"S!$N;T8_TCG_)XJ]145!5WB:9F5BI6<D#>SF:UJ![6J41<5#")J+ M;C? .1"+3Y,@E^MU;;P701+2AM)0LQ&;2W<1QUHW_%/8`6WT,;6^:3&`HT2
M6T+'A&D/'BJR,D#9',1QL?+-$%+I'5J4IM!&A:H?U!4`.94**J+58CK2WJQL
M<1F/'VF60S)"#7']VR*!V>@M2_S^/[Z8P 7'3FD&14HG]07""(Y0
M(:W))[;2+01MJ-37M4N%+N;PJ;@Q"?OD459QO9SEBH"P=VIY/U3**@6"-VG2
MPELUCE6F2EC*$=ODG'&IT%*B&9>)ID112=@RJ8SW[#P!`FJ#WAA41$N39(Q(
M`4GPR?!#[8#42W6),X#4]6Y!6.F:792+WE&$'2SI9I'EZ==P,&ZI!]A!024N
MM! /?IETK.4K_)LLT[1Q.+8V>"$62#+_S_(!(97;;MZ>_8*LB=$*%P+
M$=<*P?7X^OQY_`X:H]JL0'^%+;P%K0U-SR4%)9-1[D[2KN,#,Q9ZD:13S
MC?/5PXX9[MK#734,P,&]U'SD+71E5Z(<Z>H1G<:LE%#&>V.D3UHLN8<Z%%&"
ME>E^?/8`#?$J"J,G5VJ[5VH%QXFX4J5$M8(036T1YBJ>@#YE])E
MK>3NJN3N-TO6KH<<,0PR:GS7)!Z%GFP>W.99F,<8,K3@!(%SENAA5>/TMNKX
M4BPJ6#VE&RN2CQK?L9>SN-$;JIPC73<7Q^0/I8Z2O3"NKZ^T'!LB90)98Y5V
MUO^!LMT590V[-N65VKE7FM?>>U7:EPHCJE*"P,BI>+"&VX7;0/T,.TYH59YN
M_UP'#@Q?;6^UZNT&D.>3)B80P&-=5(HUOI7#O[ KD+#Z<4&I!8
MZG^;^6KHWS2[Y":B4234%S5J%9*JO-=VG)"B]8K5?]8J3JMM*EKXD&RJB/-4
M52K7)8E,=Q^=VJW1I,^0,9353"TJF#E8U,JPE+=WT"CU7+=U(TG0!1.4?+K
M%':WF2?8YN8IGLPADK%MSAXS^54?L-#8(4?5PS=6Y%>ORRP&E"^CF#
M1?P?J"!T,L%#Q%,!D?,$WQP4<%RI.4K:S>DX+FN.>G--X¾X6M5GF:!H^6&
MRWNV#*<ML)R0*S5ZB"M%L#[F^&M'426%+?!>;H66".?BR8(R>8(S>8?S0Z
M-R!P9&WG-^&PZ'VLUHKIW_$L81!O)RQ1K3WGT,@G]<C4?GZ+5?Y9R%3+K?E
M#TBU:G^I:.//7,P+R;#X-4M2_)K%YE$_:3DN?G-A"%<"?Z*E#_K'&E2&I/'3
M:*P;NS43[LS-0GODQBUN0?G>LD1KM8*J>EAZ:X"-"]^:T[CR%H[T#U9!&6G
MP;0$B"U?-V[;IT[PX#6W%72JQF7],L'2VJ=2USCVN+J;+:VB(,]EG>LGJ%>
MLM.@:A'#!B.G/%P*H/!4$L#!!0````(`&1:2C2DU-I9A@```,@````:````
M4&%Y<U]6:6QL97,O<&%Y<U]V:6QL92YT>'1%S$$*`C$,A>%]H7?H!>8(+A14
M! 6Q.W>Q#;70:8<D'= 3N_,*UA'JGOR3HE'"%D-%:J2 `2K;;A,0F:(PX.
M(F$?SH5D8'C[MO"T7)W 4VS>$637"J#(79?BîA8!OI5+0ZB"0XC<8VW=;
M(S.:Eì?LTM7-SW#5+^Z]=T7BM%=]?J`U!+`P04````" !L74HT+* /-H@!
M``!M`@``&P```%!A>7-?5FEL;&5S+W!A>7-?þL;&5S+G9B<%5236^C,!"]
M(_$?(G+9K;3()55O'-JD=)$V"2II>FCV8&!HG/H#V4.:=+7_O39.4Q4AZ[TW
MGN'-$ZMC!^G=`<(@4UJD[KB,6RW"X %:T"!K2"V]_((0FYFI!?%IR.Z2?R
MS]7U_W$2DS$9Q_'F_#[EB]GRJ=R41X,@)LG&8*,X)#'R:KS<S>ZZ5$)BDS)
M,,AK)0<;T> C"H,2J<:^^Q*F2@@JFTF21I8MJ( T*K3:`;KJ;^#=5$F$`^:S
M-"*^H;/C*PYSU8#7YG2G]!IT>FDQDQX3M_*>&>OD1)VU7-8:!$@:27H/>BR
M[SJE,6,<C%/=1Q@?MEBY0*VT[) )]OY-R^A>Z<(.8[VPIG^@^.F[&)M!
MU;_DLE5.7*@;SJAAL6Q6]7+QDRW4+.PZV'EJNWLY#Q0C&)7WR6K_D46K7
M#DU6#"NX3(<PAAI%!%?T`2!ETN/"M#+:@<U.FE.#XM>5%9J?=6X!,/@
M>5Z.5II*0VNW[LB']-<G:/C#6;K;GX`4$L#!!0````(`&U,1.F<60+0``
M`#$````;````4&%Y<U]6:6QL97,O<&%Y<U]V:6QL97,N=F)W<LORC54L%4P
M--!1, ,B`Q,=!1-3"QV%*!T%(R,@*&@)E3"P,<>;D`4$L#! H`````
M`&Q,0````````````````,````4&%Y<U]6:6QL97,O4$L!`A0`% ````@`
MCZM)-)&/.+8P````,@```!@``````````0`@`+:!`````%!A>7-?5FEL;&5S
M+V-O;6)O,5R+G9B=U!+`0(4`!0````(`"I,17PXH3+PH``$8H```5````
M``````$`( "```!087ES7U9I;&QE<R]&;W)M,2YF<FU02P$"% `4````
M" !D6DHTI-3:688```#(````&@`````````!`" `MH'("@``4&%Y<U]6:6QL
M97,O<&%Y<U]V:6QL92YT>'102P$"% `4````" !L74HT+* /-H@!``!M`@``
M&P`````````!`" `MH&&"P``4&%Y<U]6:6QL97,O<&%Y<U]V:6QL97,N=F)P
M4$L!`A0`% ````@`;5U*-$Z9Q9 M````,0```!L``````````0`@`+:!1PT`
M`%!A>7-?5FEL;&5S+W!A>7-?þL;&5S+G9B=U!+`0(4``H``````&Q,0`
M```````````````,````````````$ #_0:T-``!087ES7U9I;&QE<R]02P4&
2``````8`!@"=`0``UPT`````
`
end
Avatar
Jennifer
Bonjour, bonjour !
Ca fait plaisir comme tout que tu aies une solution !
Je vais recopier tout ça et comprendre (merci pour les commentaires) comment
ça marche. Par contre, le fichier zip n'a pu passer.

Merci beaucoup encore d'avoir pris du temps,
en espérant pouvoir t'aider une fois (enfin vu le code là, j'en doute !!!! :))

Bonne soirée

"scraper" a écrit :

Bonjour Jennifer, dans le message
news:
tu disais :

> En fait, disons que dans mon premier combobox, je choisis un pays
> dans la liste. cf. Liste :
> Allemagne
> France
> Suisse

essaie ce code

(la gestion d'erreur est très sommaire ...

'---8<----
'Dans une form qui comporte 2 combo, combo1 et combo2

Option Explicit

Private Declare Function GetPrivateProfileString Lib "kernel32" Alias
"GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal
lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As
String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Private sPath As String
'Fonction lecture fichier ini
Public Function ReadIni(ByVal Section As String, ByVal Entry As String,
ByVal Path As String) As String

Dim Value As String
Dim boucle As Boolean
Dim nSize As Byte, NC As Byte

nSize = 255
boucle = True
Do While boucle
Value = String(nSize, 0)
NC = GetPrivateProfileString(Section, Entry, 0, Value, nSize, Path)
If NC = nSize - 1 And Right(Value, 1) = vbNullChar Then
nSize = nSize + 256
Else
ReadIni = Left(Value, NC)
boucle = False
End If
Loop
'ReadIni = Value

End Function

Private Sub Combo1_Click()

Dim sCity As String, tblCity() As String

Dim i As Byte

'récupère les infos stockées dans le fichier ini
sCity = ReadIni(Combo1.Text, "City", sPath)

'Intercepte l'absence de fichier, ou d'entrée
If sCity = "0" Then sCity = "(Vide ...)"

'Vide le combo 2
Combo2.Clear

'Vérifie si plusieurs villes renseignées
If InStr(1, sCity, ",") > 0 Then
tblCity = Split(sCity, ",")
For i = 0 To UBound(tblCity)
Combo2.AddItem tblCity(i)
Next
Else
Combo2.AddItem sCity
End If

If Combo2.ListCount > 0 Then Combo2.ListIndex = 0

End Sub

Private Sub Form_Load()

Dim sCountry As String, tblCountry() As String
Dim i As Byte

'Définit le chemin du fichier ini contenant les données
sPath = App.Path & "City.ini"

'récupère les infos de villes à charger
sCountry = ReadIni("Country", "Name", sPath)

'Intercepte l'absence de fichier, ou d'entrée
If sCountry = "0" Then sCountry = "(Vide ...)"

'Vérifie si plusieurs pays à charger
If InStr(1, sCountry, ",") > 0 Then
tblCountry = Split(sCountry, ",")
For i = 0 To UBound(tblCountry)
Combo1.AddItem tblCountry(i)
Next
Else
Combo1.AddItem sCountry
End If

If Combo1.ListCount > 0 Then Combo1.ListIndex = 0

End Sub
>
'---8<-----

dans l'emplacement de ton choix, place un fichier City.ini tel que ci
dessous (n'oublie pas de modifier en conséquences la variable sPath du code)


'-----8<-----
'Fichier City.ini

[Country]
Name=France,Allemagne,Suisse

[France]
City=Paris,Rodez,Strasbourg

[Allemagne]
City=Karlsruhe,Stuttgart

[Suisse]
City¾rne,Genève,Zurich

'---8<----

je te joins les fichiers en zip, vu leur faible poids ...



--

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

scraper



Avatar
Jennifer
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
> liste. cf. Liste :
> Allemagne
> France
> Suisse
>
> Apparâit automatiquement alors dans la 2ème liste une ville de ce pays:
> liste du 2ème combo :
> si France est choisie alors villes qui apparaissent dans le 2nd combo :
> Paris
> Rodez
> Strasbourg
>
> Donc je veux que s'effacent les données du 2ème combo quand je change les
> données du 1er combobox.
> Globalement mes bases se présentent comme suit :
> Allemagne Karlsruhe
> Allemagne Stuttgart
> France Paris
> France Rodez
> France Strasbourg
> Suisse Berne
> Suisse Genève
> Suisse Zurich
>
> Le 2nd combo cherche la ville dans la base par un tri du pays.
>
> J'espère avoir été claire. J'ai un fichier constitué comme ça, je peux
> l'envoyer à votre adresse si vous le voulez.
> Merci d'avance à tous ceux qui pourront m'aider.
>
> Bonne soirée,
> Jennifer
>
>
>
>
> "X" a écrit :
>
> > Bonjour,
> >
> > Faudrait quelques infos en +... Tu parles


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

Bonjour, bonjour !
Ca fait plaisir comme tout que tu aies une solution !
Je vais recopier tout ça et comprendre (merci pour les commentaires)
comment ça marche. Par contre, le fichier zip n'a pu passer.



ah ?
et pourquoi ?

as tu eu un message d'erreur ?

bof, pas grave, je te le place là :
http://scraper.chez-alice.fr/tempo/combos.zip



--

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

scraper
Avatar
X
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
> liste. cf. Liste :
> Allemagne
> France
> Suisse
>
> Apparâit automatiquement alors dans la 2ème liste une ville de ce pays:
> liste du 2ème combo :
> si France est choisie alors villes qui apparaissent dans le 2nd combo :
> Paris
> Rodez
> Strasbourg
>
> Donc je veux que s'effacent les données du 2ème combo quand je change
> les
> données du 1er combobox.
> Globalement mes bases se présentent comme suit :
> Allemagne Karlsruhe
> Allemagne Stuttgart
> France Paris
> France Rodez
> France Strasbourg
> Suisse Berne
> Suisse Genève
> Suisse Zurich
>
> Le 2nd combo cherche la ville dans la base par un tri du pays.
>
> J'espère avoir été claire. J'ai un fichier constitué comme ça, je peux
> l'envoyer à votre adresse si vous le voulez.
> Merci d'avance à tous ceux qui pourront m'aider.
>
> Bonne soirée,
> Jennifer
>
>
>
>
> "X" a écrit :
>
> > Bonjour,
> >
> > Faudrait quelques infos en +... Tu parles




Avatar
Jennifer
J'ai eu un msg indiqué invalide !
merci beaucoup !

"scraper" a écrit :

Bonjour Jennifer, dans le message
news:
tu disais :

> Bonjour, bonjour !
> Ca fait plaisir comme tout que tu aies une solution !
> Je vais recopier tout ça et comprendre (merci pour les commentaires)
> comment ça marche. Par contre, le fichier zip n'a pu passer.

ah ?
et pourquoi ?

as tu eu un message d'erreur ?

bof, pas grave, je te le place là :
http://scraper.chez-alice.fr/tempo/combos.zip



--

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

scraper




1 2