[Résolu] Suppression de controles, pb de logique ???

Suppression de controles, pb de logique ??? [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 11-04-2006 à 19:51:42    

Bonsoir à tous
 
Je suis sortie de mon trou de souris avec un nouveau pb
 
Je veux supprimer les contrôles d'un formulaire, voila mon bout de code :

For Each ctl In Forms!ListePanierTravail.Controls
 
      DeleteControl "ListePanierTravail", ctl.Name
Next


A priori, pas bien compliqué mais ca ne marche pas, il ne me supprime que la moitié des controles
en débuggant je m'aperçois que le fait de "deleter" un contrôle induit un "next",
du coup le "next" de la boucle "For each" fait qu'il ne traite qu'un controle sur 2
 
Je pense que c'est plus un problème de logique qu'autre chose mais je n'arrive pas à m'en dépatouiller
Pourrais encore faire appel à votre aide ?
 
D'avance merci


Message édité par Parmenion le 12-04-2006 à 18:00:09
Reply

Marsh Posté le 11-04-2006 à 19:51:42   

Reply

Marsh Posté le 12-04-2006 à 10:30:00    

Fais une boucle normale avec un indice i
Mais tu dois partir de Controls.count (ou Controls.count-1 je sais plus comment sont indicés les objets de cette collection) pour arriver à 1 (ou 0).
En effet si tu supprimes un objet de la collection, l'objet suivant prend son indice; donc il faut commencer par la fin pour que le traitement ne soit pas perturbé.
 
La boucle For Each n'est pas bien étudiée pour gérer ce genre de cas


Message édité par tegu le 12-04-2006 à 10:30:32
Reply

Marsh Posté le 12-04-2006 à 17:58:44    

Bonjour,
 
Ca marche Nickel !
Je pensais bien que je m'y prenait mal
 
L'indice commence bien à 0
 
Merci beaucoup pour ton aide
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed