Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

deletecontrol avec boucle

1 réponse
Avatar
Hidaholola
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

idaholola

1 réponse

Avatar
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