deletecontrol avec boucle

Le
Hidaholola
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
CErnst
Le #17328771
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"
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
Publicité
Poster une réponse
Anonyme