IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Probleme de supression des controles sur formulaire


Sujet :

VBA Access

  1. #1
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut Probleme de supression des controles sur formulaire
    Bonjour.

    Je fait des essais pour créer un formulaire dynamique. Cependant je n'arrive pas à supprimer TOUS les controls.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Ctl As Control
     
     
        DoCmd.OpenForm "Test_dynamique", acDesign ', , , , acHidden
     
        'MsgBox Forms!test_dynamique.Controls.Count 'nombre de controle du formulaire
     
        For Each Ctl In Forms!test_dynamique.Controls
                'MsgBox Ctl.Name 'nom du controle courrant
                DeleteControl "Test_dynamique", Ctl.Name 'on supprime le controle courant
        Next Ctl
     
        'MsgBox Forms!test_dynamique.Controls.Count 'nombre de controle du formulaire
    Ce que je ne comprend pas c'est que cette boucle supprime tous les Controls sauf 1.........

    Je me suis inspiré de ce tutoriel : http://morsi.developpez.com/?page=Form#formdynamique

    P.S : dans le tuto il est écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ctl.DelectControl "NomForm", "NomControle"
    Cependant quand j'utilise cette synthaxe j'ai un message d'erreur "Propriété ou Methode non géré par cet objet"

    Merci d'avance pour vos aides
    Rien n'est rien!!! ... Tout est quelque chose!!!

    Petits liens utiles :
    -Chaine de connexion : http://www.connectionstrings.com/
    -ADO et ADO.net : Tuto ADO et ADO.net

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    bonjour,
    je pense qu'il s'agit du contrôle sur lequel tu as le focus.
    tu peux essayer de voir si c'est effectivement cela en faisant un avant le delete
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Tout d'abord merci pour ta réponse.

    En fait j'affiche le nom dans un msgbox déja. Pour ce qui est du focus vu que je suis en mode création je ne pense pas que ce soit un problème de focus.

    Par contre j'ai trouvé une solution......en fait je met deux fois de suite la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    For Each Ctl In Forms!test_dynamique.Controls
           MsgBox Ctl.Name 'nom du controle courrant
           DeleteControl "Test_dynamique", Ctl.Name 'on supprime le controle courant
        Next Ctl
     
        MsgBox Forms!test_dynamique.Controls.Count 'nombre de controle du formulaire
     
        For Each Ctl In Forms!test_dynamique.Controls
           'MsgBox Ctl.Name 'nom du controle courrant
           DeleteControl "Test_dynamique", Ctl.Name 'on supprime le controle courant
        Next Ctl
    La deuxième boucle me supprime le controle qui reste!!

    Ca fonctionne par contre c'est pas très pro je trouve...en attendant je fais comme ça mais si quelqu'un à une solution plus...propre .

    Encore merci!!
    Rien n'est rien!!! ... Tout est quelque chose!!!

    Petits liens utiles :
    -Chaine de connexion : http://www.connectionstrings.com/
    -ADO et ADO.net : Tuto ADO et ADO.net

  4. #4
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Je me permet de rajouter un message car en fait ma technique ne fonctionne pas.

    En effet là j'ai 6 éléments et ma première boucle m'en supprime 3 et la deuxième deux...du cout j'ai toujours un éléments qui reste......

    J'ai fait le test avec plein d'éléments et trois boucle...c'est toujours pareils. Chaque boucle enlève un nombre limité seulement d'éléments.

    Je ne comprend pas!!! ...et c'est frustrant tout mon formulaire fonctionne bien sauf cette suppression.

    Merci d'avance pour vos réponses
    Rien n'est rien!!! ... Tout est quelque chose!!!

    Petits liens utiles :
    -Chaine de connexion : http://www.connectionstrings.com/
    -ADO et ADO.net : Tuto ADO et ADO.net

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    salut,
    petite question bête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each Ctl In Forms!test_dynamique.Controls
           MsgBox Ctl.Name 'nom du controle courrant
          Next Ctl
    t'affiche-t-il bien tous les contrôles que tu attends ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Alors oui en effet ma boucle m'affiche bien tous les controls. (Bien vu je n'avais pas pensé à vérifier ça!!! )

    J'en conclut que le problème viens de la suppression.

    Dans le tutoriel la syntaxe de la suppression est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ctl.DelectControl "NomForm", "NomControle"
    Hors cela m'affiche un message d'erreur : "Propriété ou Methode non géré par cet objet"

    Donc j'ai enlevé le "Ctl" devant "DeleteControle" et ça m'affiche plus de message d'erreur. Il ya a peut-être une autre syntaxe de suppression mais je sais pas la quelle.

    En tout cas merci à toi pour ton aide
    Rien n'est rien!!! ... Tout est quelque chose!!!

    Petits liens utiles :
    -Chaine de connexion : http://www.connectionstrings.com/
    -ADO et ADO.net : Tuto ADO et ADO.net

  7. #7
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Bon alors finalement j'ai trouvé une solution à cette adresse :

    Solution

    Je l'ai un peu adepté ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Dim MesControls()             As String           'tableau contenant les noms des controles existant àl'ouverture du formulaire
     
        'on redimentionne le tableau MesControls
        ReDim MesControls(Forms!J_FicheRecetteSel.Détail.Controls.Count)
        'on initialise J
        INT_j = -1
        'Etabli la liste des controles à supprimer
        For Each CTR_Ctl In Forms!J_FicheRecetteSel.Détail.Controls
            INT_j = INT_j + 1
            MesControls(INT_j) = CTR_Ctl.Name
        Next CTR_Ctl
        'supprime les controles
        For INT_i = 0 To INT_j
            DeleteControl "J_FicheRecetteSel", MesControls(INT_i)
        Next INT_i
    En tout cas merci de ton aide!!!!
    Rien n'est rien!!! ... Tout est quelque chose!!!

    Petits liens utiles :
    -Chaine de connexion : http://www.connectionstrings.com/
    -ADO et ADO.net : Tuto ADO et ADO.net

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Sauvegarder l'état des controles sur un formulaire
    Par OtObOx dans le forum Windows Forms
    Réponses: 1
    Dernier message: 23/07/2014, 22h53
  2. Réponses: 8
    Dernier message: 07/08/2006, 17h40
  3. Réponses: 5
    Dernier message: 12/07/2006, 11h21
  4. [C#2.0]Dupliquer des controles sur une autre form
    Par chnew dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/05/2006, 09h05
  5. Probleme de gestion des controls
    Par Ob1 dans le forum Windows
    Réponses: 2
    Dernier message: 16/07/2005, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo