bonjour,
j'aimerais au chargement d'un form supprimer les boutons de commande
dans la section d=E9tail avant d'en cr=E9er de nouveaux.
Cette boucle marche mais en supprimant seulement un contr=F4le sur deux
sans doute un probl=E8me d'index:
For Each ctl1 In Forms(strForm).Section(acDetail).Controls
If TypeOf ctl1 Is CommandButton Then
DeleteControl strForm, ctl1.Name
End If
Next ctl1
En la r=E9p=E9tant un certain nombre de fois, tous les CommandButton sont
supprim=E9s, mais combien de fois faut-il la r=E9p=E9ter et c'est paq tr=E8=
s
=E9l=E9gant
2=E8me boucle:
For intI =3D Forms(strForm).Section(acDetail).Controls.count - 1 To 0
Step -1
If TypeOf ctl1 Is CommandButton Then
Application.DeleteControl _
strForm, Forms!formulaire1.Controls(intI).Name
End If
Next intI
cette boucle peut marcher si j'enl=E8ve le if TypeOf..; incompatibilit=E9
de type au niveau de ctl pourtant d=E9clar=E9 plus haut.mais =E9videmment,
=E7a supprime tous les contr=F4les.
Si quelqu'un a une id=E9e...
Merci
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
CErnst
C'est pas un problème d'index, cela vient du fait que si vous suuprimez le controle1, le controle 2 devient le controle 1 dans la boucle for each et quand votre boucle continue, le contrôle 2 est en fait l'ancien contrôle 3..... dans la boucle for each, garnissez un petit tableau en y insérant le nom des contrôles que vous voulez supprimer, puis vous passez en revue votre tableau et supprimez les contrôles voulus
"Hidaholola" a écrit dans le message de news:
bonjour, j'aimerais au chargement d'un form supprimer les boutons de commande dans la section détail avant d'en créer de nouveaux.
Cette boucle marche mais en supprimant seulement un contrôle sur deux sans doute un problème d'index:
For Each ctl1 In Forms(strForm).Section(acDetail).Controls If TypeOf ctl1 Is CommandButton Then DeleteControl strForm, ctl1.Name End If Next ctl1
En la répétant un certain nombre de fois, tous les CommandButton sont supprimés, mais combien de fois faut-il la répéter et c'est paq très élégant
2ème boucle: For intI = Forms(strForm).Section(acDetail).Controls.count - 1 To 0 Step -1 If TypeOf ctl1 Is CommandButton Then Application.DeleteControl _ strForm, Forms!formulaire1.Controls(intI).Name End If Next intI
cette boucle peut marcher si j'enlève le if TypeOf..; incompatibilité de type au niveau de ctl pourtant déclaré plus haut.mais évidemment, ça supprime tous les contrôles. Si quelqu'un a une idée... Merci
idaholola
C'est pas un problème d'index, cela vient du fait que si vous suuprimez le
controle1, le controle 2 devient le controle 1 dans la boucle for each
et quand votre boucle continue, le contrôle 2 est en fait l'ancien contrôle
3.....
dans la boucle for each, garnissez un petit tableau en y insérant le nom des
contrôles que vous voulez supprimer,
puis vous passez en revue votre tableau et supprimez les contrôles voulus
"Hidaholola" <rdelbeuf@alicepro.fr> a écrit dans le message de news:
b3c9d5cc-25f6-45ae-880f-142a704983bb@d1g2000hsg.googlegroups.com...
bonjour,
j'aimerais au chargement d'un form supprimer les boutons de commande
dans la section détail avant d'en créer de nouveaux.
Cette boucle marche mais en supprimant seulement un contrôle sur deux
sans doute un problème d'index:
For Each ctl1 In Forms(strForm).Section(acDetail).Controls
If TypeOf ctl1 Is CommandButton Then
DeleteControl strForm, ctl1.Name
End If
Next ctl1
En la répétant un certain nombre de fois, tous les CommandButton sont
supprimés, mais combien de fois faut-il la répéter et c'est paq très
élégant
2ème boucle:
For intI = Forms(strForm).Section(acDetail).Controls.count - 1 To 0
Step -1
If TypeOf ctl1 Is CommandButton Then
Application.DeleteControl _
strForm, Forms!formulaire1.Controls(intI).Name
End If
Next intI
cette boucle peut marcher si j'enlève le if TypeOf..; incompatibilité
de type au niveau de ctl pourtant déclaré plus haut.mais évidemment,
ça supprime tous les contrôles.
Si quelqu'un a une idée...
Merci
C'est pas un problème d'index, cela vient du fait que si vous suuprimez le controle1, le controle 2 devient le controle 1 dans la boucle for each et quand votre boucle continue, le contrôle 2 est en fait l'ancien contrôle 3..... dans la boucle for each, garnissez un petit tableau en y insérant le nom des contrôles que vous voulez supprimer, puis vous passez en revue votre tableau et supprimez les contrôles voulus
"Hidaholola" a écrit dans le message de news:
bonjour, j'aimerais au chargement d'un form supprimer les boutons de commande dans la section détail avant d'en créer de nouveaux.
Cette boucle marche mais en supprimant seulement un contrôle sur deux sans doute un problème d'index:
For Each ctl1 In Forms(strForm).Section(acDetail).Controls If TypeOf ctl1 Is CommandButton Then DeleteControl strForm, ctl1.Name End If Next ctl1
En la répétant un certain nombre de fois, tous les CommandButton sont supprimés, mais combien de fois faut-il la répéter et c'est paq très élégant
2ème boucle: For intI = Forms(strForm).Section(acDetail).Controls.count - 1 To 0 Step -1 If TypeOf ctl1 Is CommandButton Then Application.DeleteControl _ strForm, Forms!formulaire1.Controls(intI).Name End If Next intI
cette boucle peut marcher si j'enlève le if TypeOf..; incompatibilité de type au niveau de ctl pourtant déclaré plus haut.mais évidemment, ça supprime tous les contrôles. Si quelqu'un a une idée... Merci