je cr=E9=E9 un menu dynamique a partir d'une requete sur une=20
table Access, comme ci-dessous, pas de probl=E8me
'Construction du menu dynamique Ville
Dim LenrVille As Integer
Dim Laville As String
LenrVille =3D 0
Do Until ADOrst.EOF
LenrVille =3D LenrVille + 1
On Error Resume Next 'permet de charger un =E9l=E9ment sur le=20
pr=E9c=E9dent
Load MnuVilleIndex(LenrVille) 'charge le nouvel =E9l=E9ment
MnuVilleIndex(LenrVille).Visible =3D True 'assure la=20
visibilit=E9
Laville =3D ADOrst("nomcom") 'r=E9cup=E8re le texte
MnuVilleIndex(LenrVille).Caption =3D Laville 'affecte le=20
texte =E0 l'Item du menu
ADOrst.MoveNext
'If ADOrst.EOF =3D True Then
'LenrVille =3D LenrVille + 1
'Load MnuVilleIndex(LenrVille) 'charge le nouvel=20
=E9l=E9ment
'MnuVilleIndex(LenrVille).Visible
'MnuVilleIndex(LenrVille).Caption =3D "Autre ville..."
Loop
Je voudrais ajouter une ligne "Autre ville..."
et comme je l'ai ecrit cela Beug
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
JCM
Re bonjour
J'ai trouvé la réponse :
'Construction du menu dynamique Ville Dim LenrVille As Integer Dim Laville As String LenrVille = 0 Do Until ADOrst.EOF LenrVille = LenrVille + 1 On Error Resume Next 'permet de charger un élément sur le précédent Load MnuVilleIndex(LenrVille) 'charge le nouvel élément MnuVilleIndex(LenrVille).Visible = True 'assure la visibilité Laville = ADOrst("nomcom") 'récupère le texte MnuVilleIndex(LenrVille).Caption = Laville 'affecte le texte à l'Item du menu ADOrst.MoveNext If ADOrst.EOF = True Then LenrVille = LenrVille + 1 Load MnuVilleIndex(LenrVille) 'charge le nouvel élément MnuVilleIndex(LenrVille).Caption = "Autre ville..." End If Loop
Merci pour votre aide Cordialement Jean Claude
-----Message d'origine----- Bonjour a tous
je créé un menu dynamique a partir d'une requete sur une table Access, comme ci-dessous, pas de problème
'Construction du menu dynamique Ville Dim LenrVille As Integer Dim Laville As String LenrVille = 0 Do Until ADOrst.EOF LenrVille = LenrVille + 1 On Error Resume Next 'permet de charger un élément sur
le
précédent Load MnuVilleIndex(LenrVille) 'charge le nouvel élément MnuVilleIndex(LenrVille).Visible = True 'assure la visibilité Laville = ADOrst("nomcom") 'récupère le texte MnuVilleIndex(LenrVille).Caption = Laville 'affecte le texte à l'Item du menu ADOrst.MoveNext 'If ADOrst.EOF = True Then 'LenrVille = LenrVille + 1 'Load MnuVilleIndex(LenrVille) 'charge le nouvel élément 'MnuVilleIndex(LenrVille).Visible 'MnuVilleIndex(LenrVille).Caption = "Autre ville..." Loop
Je voudrais ajouter une ligne "Autre ville..." et comme je l'ai ecrit cela Beug
Merci de vos réponses Cordialement JCM .
Re bonjour
J'ai trouvé la réponse :
'Construction du menu dynamique Ville
Dim LenrVille As Integer
Dim Laville As String
LenrVille = 0
Do Until ADOrst.EOF
LenrVille = LenrVille + 1
On Error Resume Next 'permet de charger un élément sur le
précédent
Load MnuVilleIndex(LenrVille) 'charge le nouvel élément
MnuVilleIndex(LenrVille).Visible = True 'assure la
visibilité
Laville = ADOrst("nomcom") 'récupère le texte
MnuVilleIndex(LenrVille).Caption = Laville 'affecte le
texte à l'Item du menu
ADOrst.MoveNext
If ADOrst.EOF = True Then
LenrVille = LenrVille + 1
Load MnuVilleIndex(LenrVille) 'charge le nouvel élément
MnuVilleIndex(LenrVille).Caption = "Autre ville..."
End If
Loop
Merci pour votre aide
Cordialement
Jean Claude
-----Message d'origine-----
Bonjour a tous
je créé un menu dynamique a partir d'une requete sur une
table Access, comme ci-dessous, pas de problème
'Construction du menu dynamique Ville
Dim LenrVille As Integer
Dim Laville As String
LenrVille = 0
Do Until ADOrst.EOF
LenrVille = LenrVille + 1
On Error Resume Next 'permet de charger un élément sur
le
précédent
Load MnuVilleIndex(LenrVille) 'charge le nouvel élément
MnuVilleIndex(LenrVille).Visible = True 'assure la
visibilité
Laville = ADOrst("nomcom") 'récupère le texte
MnuVilleIndex(LenrVille).Caption = Laville 'affecte le
texte à l'Item du menu
ADOrst.MoveNext
'If ADOrst.EOF = True Then
'LenrVille = LenrVille + 1
'Load MnuVilleIndex(LenrVille) 'charge le nouvel
élément
'MnuVilleIndex(LenrVille).Visible
'MnuVilleIndex(LenrVille).Caption = "Autre ville..."
Loop
Je voudrais ajouter une ligne "Autre ville..."
et comme je l'ai ecrit cela Beug
'Construction du menu dynamique Ville Dim LenrVille As Integer Dim Laville As String LenrVille = 0 Do Until ADOrst.EOF LenrVille = LenrVille + 1 On Error Resume Next 'permet de charger un élément sur le précédent Load MnuVilleIndex(LenrVille) 'charge le nouvel élément MnuVilleIndex(LenrVille).Visible = True 'assure la visibilité Laville = ADOrst("nomcom") 'récupère le texte MnuVilleIndex(LenrVille).Caption = Laville 'affecte le texte à l'Item du menu ADOrst.MoveNext If ADOrst.EOF = True Then LenrVille = LenrVille + 1 Load MnuVilleIndex(LenrVille) 'charge le nouvel élément MnuVilleIndex(LenrVille).Caption = "Autre ville..." End If Loop
Merci pour votre aide Cordialement Jean Claude
-----Message d'origine----- Bonjour a tous
je créé un menu dynamique a partir d'une requete sur une table Access, comme ci-dessous, pas de problème
'Construction du menu dynamique Ville Dim LenrVille As Integer Dim Laville As String LenrVille = 0 Do Until ADOrst.EOF LenrVille = LenrVille + 1 On Error Resume Next 'permet de charger un élément sur
le
précédent Load MnuVilleIndex(LenrVille) 'charge le nouvel élément MnuVilleIndex(LenrVille).Visible = True 'assure la visibilité Laville = ADOrst("nomcom") 'récupère le texte MnuVilleIndex(LenrVille).Caption = Laville 'affecte le texte à l'Item du menu ADOrst.MoveNext 'If ADOrst.EOF = True Then 'LenrVille = LenrVille + 1 'Load MnuVilleIndex(LenrVille) 'charge le nouvel élément 'MnuVilleIndex(LenrVille).Visible 'MnuVilleIndex(LenrVille).Caption = "Autre ville..." Loop
Je voudrais ajouter une ligne "Autre ville..." et comme je l'ai ecrit cela Beug
Merci de vos réponses Cordialement JCM .
Zoury
Salut Jean-Claude! :O)
Do Until .... <BIG SNIP> ADOrst.MoveNext If ADOrst.EOF = True Then LenrVille = LenrVille + 1 Load MnuVilleIndex(LenrVille) 'charge le nouvel élément MnuVilleIndex(LenrVille).Caption = "Autre ville..." End If Loop
Je te recommende de sortir ce If de la boucle. Tu exécuteras *toujours* ce bout de code et ce *à la fin* de la boucle. Ça n'est pas conditionel, alors autant le sortir de le boucle et ne pas mettre de condition. Dis toi qu'à chaque itération de la boucle, ton code testera la condition ( If ADOrst.EOF = True Then) inutilement.
Comme ceci : '*** Do Until .. ' ton code Loop If ADOrst.EOF = True Then LenrVille = LenrVille + 1 Load MnuVilleIndex(LenrVille) 'charge le nouvel élément MnuVilleIndex(LenrVille).Caption = "Autre ville..." End If '***
Maintenant, si on fait un peu de "refactoring" comme on appelle dans le jargon, on pourrait faire un méthode avec ces lignes de codes : '*** LenrVille = LenrVille + 1 Load MnuVilleIndex(LenrVille) 'charge le nouvel élément MnuVilleIndex(LenrVille).Caption = "Autre ville..." '*** car elles reviennent régulièrement et forme une action défini, soit d'ajouter un menu. tu pourrais avoir quelque chose comme ceci par exemple : '*** Private Sub AddMenu(ByRef Caption As String, Optional ByRef NewMenu As Boolean = False) Static lIndex As Long If (NewMenu) Then lIndex = 1 Else lIndex = lIndex + 1 End If Load MnuVilleIndex(lIndex ) MnuVilleIndex(lIndex ).Caption = Caption End Sub '***
aussi cette ligne est inutile : '*** LenrVille = 0 '*** car VB initialise les variables automatiquement et donc LenrVille vaut déjà 0.
Tu obtiendrais donc ceci : '*** ' on initialise la trappe en dehors de la boucle. ' mais si tu peux ne pas le mettre ' du tout ce serait beaucoup mieux... ;O) On Error Resume Next Do Until ADOrst.EOF Call AddMenu(ADOrst("nomcom"), True) Call ADOrst.MoveNext Loop Call AddMenu("Autre ville...") '***
Do Until ....
<BIG SNIP>
ADOrst.MoveNext
If ADOrst.EOF = True Then
LenrVille = LenrVille + 1
Load MnuVilleIndex(LenrVille) 'charge le nouvel élément
MnuVilleIndex(LenrVille).Caption = "Autre ville..."
End If
Loop
Je te recommende de sortir ce If de la boucle. Tu exécuteras *toujours* ce
bout de code et ce *à la fin* de la boucle. Ça n'est pas conditionel, alors
autant le sortir de le boucle et ne pas mettre de condition. Dis toi qu'à
chaque itération de la boucle, ton code testera la condition ( If ADOrst.EOF
= True Then) inutilement.
Comme ceci :
'***
Do Until ..
' ton code
Loop
If ADOrst.EOF = True Then
LenrVille = LenrVille + 1
Load MnuVilleIndex(LenrVille) 'charge le nouvel élément
MnuVilleIndex(LenrVille).Caption = "Autre ville..."
End If
'***
Maintenant, si on fait un peu de "refactoring" comme on appelle dans le
jargon, on pourrait faire un méthode avec ces lignes de codes :
'***
LenrVille = LenrVille + 1
Load MnuVilleIndex(LenrVille) 'charge le nouvel élément
MnuVilleIndex(LenrVille).Caption = "Autre ville..."
'***
car elles reviennent régulièrement et forme une action défini, soit
d'ajouter un menu.
tu pourrais avoir quelque chose comme ceci par exemple :
'***
Private Sub AddMenu(ByRef Caption As String, Optional ByRef NewMenu As
Boolean = False)
Static lIndex As Long
If (NewMenu) Then
lIndex = 1
Else
lIndex = lIndex + 1
End If
Load MnuVilleIndex(lIndex )
MnuVilleIndex(lIndex ).Caption = Caption
End Sub
'***
aussi cette ligne est inutile :
'***
LenrVille = 0
'***
car VB initialise les variables automatiquement et donc LenrVille vaut déjà
0.
Tu obtiendrais donc ceci :
'***
' on initialise la trappe en dehors de la boucle.
' mais si tu peux ne pas le mettre
' du tout ce serait beaucoup mieux... ;O)
On Error Resume Next
Do Until ADOrst.EOF
Call AddMenu(ADOrst("nomcom"), True)
Call ADOrst.MoveNext
Loop
Call AddMenu("Autre ville...")
'***
Do Until .... <BIG SNIP> ADOrst.MoveNext If ADOrst.EOF = True Then LenrVille = LenrVille + 1 Load MnuVilleIndex(LenrVille) 'charge le nouvel élément MnuVilleIndex(LenrVille).Caption = "Autre ville..." End If Loop
Je te recommende de sortir ce If de la boucle. Tu exécuteras *toujours* ce bout de code et ce *à la fin* de la boucle. Ça n'est pas conditionel, alors autant le sortir de le boucle et ne pas mettre de condition. Dis toi qu'à chaque itération de la boucle, ton code testera la condition ( If ADOrst.EOF = True Then) inutilement.
Comme ceci : '*** Do Until .. ' ton code Loop If ADOrst.EOF = True Then LenrVille = LenrVille + 1 Load MnuVilleIndex(LenrVille) 'charge le nouvel élément MnuVilleIndex(LenrVille).Caption = "Autre ville..." End If '***
Maintenant, si on fait un peu de "refactoring" comme on appelle dans le jargon, on pourrait faire un méthode avec ces lignes de codes : '*** LenrVille = LenrVille + 1 Load MnuVilleIndex(LenrVille) 'charge le nouvel élément MnuVilleIndex(LenrVille).Caption = "Autre ville..." '*** car elles reviennent régulièrement et forme une action défini, soit d'ajouter un menu. tu pourrais avoir quelque chose comme ceci par exemple : '*** Private Sub AddMenu(ByRef Caption As String, Optional ByRef NewMenu As Boolean = False) Static lIndex As Long If (NewMenu) Then lIndex = 1 Else lIndex = lIndex + 1 End If Load MnuVilleIndex(lIndex ) MnuVilleIndex(lIndex ).Caption = Caption End Sub '***
aussi cette ligne est inutile : '*** LenrVille = 0 '*** car VB initialise les variables automatiquement et donc LenrVille vaut déjà 0.
Tu obtiendrais donc ceci : '*** ' on initialise la trappe en dehors de la boucle. ' mais si tu peux ne pas le mettre ' du tout ce serait beaucoup mieux... ;O) On Error Resume Next Do Until ADOrst.EOF Call AddMenu(ADOrst("nomcom"), True) Call ADOrst.MoveNext Loop Call AddMenu("Autre ville...") '***