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

IHM Discussion :

Vider en boucle tous les contrôles d'un formulaire à l'ouverture [AC-2007]


Sujet :

IHM

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Saint Denis (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 127
    Points : 78
    Points
    78
    Par défaut Vider en boucle tous les contrôles d'un formulaire à l'ouverture
    Bonjour,
    J'ai un formulaire ayant comme source une requête multi-table pour la selection d'informations pour l'impression d'un document word qui récupèrera ces informations pour les insérer dans des signets.
    Le problème à l'ouverture, il me charge systématiquement tous les contrôles avec les valeurs de la 1er ligne de la selection.
    J'ai une liste déroulante basé sur cette même requête qui me permet ainsi de visualiser les informations sur la valeur d'un champ selectionné.
    Donc a l'ouverture de ce formulaire de visualisations et non d'enregistrements de données, il faudrait pouvoir parcourir l'assemble des contrôles et de les vider un par un.
    Je suis parti sur cette base, mais j'obtiens des messages d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Form_Open(Cancel As Integer)
    ' Sur ouverture du formulaire, vider tous les champs
     
    Dim Ctrl As Control
     
    For Each Ctrl In Me.Controls
        If Len(Me.Controls) < 1 Then
        Me.Controls = ""
        End If
    Next
     
    End Sub
    Ce que je n'arrive pas à faire c'est de déclarer la variable à prendre en compte pour determiner si le champs en cours de contrôle est vide ou pas, si il est non vide (donc remplis) le vider...

    Merci de votre aide.

  2. #2
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    salut,

    As-tu essayé de remplacer dans ta boucle les 'Controls' par 'Ctrl' ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each Ctrl In Me.Controls
        If Len(Me.Ctrl ) <> 0 Then
        Me.Ctrl = ""
        End If
    Next

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    Pour Access tous les éléments d'un formulaires sont des controles (zone de texte, étiquette, boutons,,..), donc il est normal d'avoir des messages d'erreur lorsque l'on essaye de vider tous les controles.

    Il faut tester d'abors si le controle est une zone de texte.
    Après recherche, j'ai trouvé la propriété qu'il faut tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Ctrl.ControlType
    ' 109 zone de texte
    ' 104 bouton
    ' 111 combo
    ' 100 étiquette
    ' je n'ai pas recherché les autres types de contoles
    '
    edit: désolé jimay pour le télescopage

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Saint Denis (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 127
    Points : 78
    Points
    78
    Par défaut Un peu d'aide pour la syntax ?
    Ok, je comprends mieux mon erreur, il s'agit en effet uniquement d'une dizaine de contrôles texte qui sont à prendre en compte dans mon formulaire.

    109 zone de texte
    Mais comment attribuer la vérification de cette propriété au sein de ma boucle ?

    Merci, pour votre aide

  5. #5
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each Ctrl In Me.Controls
        If Ctrl.ControlType = 109 then
            If Len(Me.Ctrl ) <> 0 Then
                Me.Ctrl = "" 
            End If
        End If
    Next

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Saint Denis (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 127
    Points : 78
    Points
    78
    Par défaut
    Merci Jimay de ton aide, mais hélas, j'obtiens un msg d'erreur dès que j'ouvre mon forrmulaire : Membre de methode ou de données introuvable
    Mais je pense que l'on approche du but...

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re
    T'aurais pas oublié le

  8. #8
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each Ctrl In Me.Controls
        If Ctrl.ControlType = 109 then
            If isnull(Len(Ctrl)) Then
                Ctrl = "" 
            End If
        End If
    Next
    j'avais mis des Me. en trop ^^

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    j'avais mis des Me. en trop ^^
    J'avais même pas fait gaffe

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Saint Denis (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 127
    Points : 78
    Points
    78
    Par défaut Toujours cette foutue Syntaxe !!!
    je viens scrupuleusement de recopier ton code dans ma procédure,
    j'ai pas oublié le Dim
    mais j'obtiens maintenant le message suivant :

    Imposible d'attribuer une valeur à cet objet
    Pourtant à l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If isnull(Len(Ctrl)) Then
    Ctrl est bien reconnue puisque le point d'arrêt se trouve sur la ligne suivante :
    Je donne ma langue au chat...

  11. #11
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    re,

    peut-être utiliser Ctrl.Value = "" au lieue de Ctrl = "" ?

  12. #12
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Saint Denis (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 127
    Points : 78
    Points
    78
    Par défaut
    C'est super sympas Jimay de te pencher autant sur mon problème, mais je viens de faire un autre essai en déclarant le nom du contrôle contenant une chaine de caractère et de la remplacer par une chaine vide
    J'obtiens encore le même message : Imposible d'attribuer une valeur à cet objet
    Mais cela proviens du fait que la source est une requête avec la jonction de 3 tables sur des champs en communs (CodeDossier, et CodeCLient)
    Et que l'on ne peut modifier aucun enregistrement.
    Je dois changer de stratégie :
    Actuellement je lance un formulaire ou à l'aide d'une liste déroulante basée sur une requête avec un filtre sur une partie du CodeDossier
    [Comme CAT*] sur ce champ...
    Mais des l'ouverture de ce formulaire, comme les champs font références au champs de ma requête : ils sont chargées avec les données de la première ligne de cette requête sélection.
    Donc c'est impossible de les mettre à blanc.
    La nouvelle approche que je dois prendre, c'est de choisir le codeDossier à traiter à l'aide d'une liste déroulante.
    Ne pas déclarer de source à ce formulaire, et de mettre des champs indépendant.
    Ensuite en VBA dès le CodeDossier selectionné, remplir les champs en question à partir de la ligne provenant de la requête (le recordset ?)
    Qu'en pensez-vous ? yà t'il plus simple ?

  13. #13
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    non, tu as raison, je pense que cette solution sera la plus simple à mettre en place
    Au moins j'aurais au moins appris des trucs sur les recordsets et les sources d'enregistrements ^^


    si tu as encore besoin d'aide, hésite pas

  14. #14
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Saint Denis (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 127
    Points : 78
    Points
    78
    Par défaut
    Merci pour votre aide, et je considère le sujet 'résolu' en ce qui concerne la fonction de parcourir les contrôles d'un formulaire et de les mettre à 'blanc'

    Mais juste une petite précision:j'ai crée un petit form test avec 4 contrôles textes indépendant et créer un bouton pour effacer le contenu des 4 champs.
    mais cette instruction était sans effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If isnull(Len(Ctrl)) Then
    Mais ca marche impec avec cette instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Len(Ctrl ) <> 0 Then
    Dans ce cas, j'obtiens bien mes 4 champs vide !

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

Discussions similaires

  1. Vider tous les contrôles d'un formulaire
    Par c.piette dans le forum Général VBA
    Réponses: 5
    Dernier message: 12/05/2015, 15h30
  2. verrouiller tous les contrôles d'un formulaire
    Par STANDBOY dans le forum IHM
    Réponses: 2
    Dernier message: 07/11/2010, 17h44
  3. [AC-2007] Supprimer tous les contrôle d'un formulaire
    Par othke dans le forum IHM
    Réponses: 0
    Dernier message: 07/07/2010, 12h59
  4. Effacer tous les contrôles d'un formulaire
    Par guen dans le forum Access
    Réponses: 4
    Dernier message: 08/09/2006, 22h19
  5. Réponses: 1
    Dernier message: 27/10/2004, 15h36

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