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 :

Boucle for/nex desactivation de contrôle dans un formulaire


Sujet :

IHM

  1. #1
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut Boucle for/nex desactivation de contrôle dans un formulaire
    Bonjour, sur un formulaire j'ai une multitude de contrôles commançant par "txt", je voudrais savoir comment les rendre tous invisible avec une boucle for/next, sur un évenement clic du formulaire.

    Merci

    Je pense que sa va etre quelque chose du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim ctl As Control
    For Each ctl In Me.Controls
        Select Case Left(ctl.Name, 3)
            Case "txt"
                ctl.Visible = False
     
        End Select
    Next ctl
    Mais sa ne marche pas

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Bonsoir,

    Une petite correction et cela devrait marcher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim ctl As Control
    For Each ctl In Me.Controls
        If Left(ctl.Name, 3)= "txt" then
                ctl.Visible = False                  
        End if
    Next
    Je n'ai pas vérifié
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    Essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim ctl As Control
    For Each ctl In Me.Controls
     
        if typeOf ctl is textbox then
     
            if Left(ctl.Name, 3)="txt" then
                ctl.Visible = False
            end if             
     
        End if
     
    Next ctl
    Sinon dit ce qui ne marche pas ? Est-ce que cela ne rend pas les controles invisibles ou ça plante ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Re ni l'une ni l'autre solution fonctionne?!!!

    En fait je n'ai pas de message d'erreur, mais rien ne se passe.

  5. #5
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Bonjour

    Essaie plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim ctl As Control
    For Each ctl In Controls
        If Left(ctl.Name, 3) = "txt" Then ctl.visible = False
    Next
    A+
    Gabout

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    Bizare ça devrait marché.

    Essaye en passant la commande sur une contrôle particulier ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.txtChamp1.vsisible = false
    ensuite essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dim c as control
    set c=me.txtChamp1
    c.visible=false
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Citation Envoyé par moilou2 Voir le message
    Re ni l'une ni l'autre solution fonctionne?!!!

    En fait je n'ai pas de message d'erreur, mais rien ne se passe.
    Les codes qui t'ont été fourni sont cohérents, où as-tu mis celui-ci ? Sur quel évènement ?

    Starec

  8. #8
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Re, j'ai mis ce code sur l'évenement clic de mon formulaire

    C'est pas sa???

  9. #9
    Invité
    Invité(e)
    Par défaut
    Re

    Citation Envoyé par moilou2 Voir le message
    Re, j'ai mis ce code sur l'évenement clic de mon formulaire

    C'est pas sa???
    cela dépend ce que tu veux, si c'est à l'ouverture de ton formulaire, il faut le faire sur le Load.

    Starec

  10. #10
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour.....

    ...sur l'évenement clic de mon formulaire
    ...en fait tu mets ton code sur l'événement sur lequel tu souhaite faire exécuter le code......(Sur Clic........Sur Ouverture....)
    ...je n'ai pas de message d'erreur, mais rien ne se passe.
    Si tu n'as pas de message d'erreur et que rien ne se passe...alors c'est que tu n'as aucuns contrôles commençant par "txt".....
    Vérifie encore une fois l'ensemble du nom des contrôles.......
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  11. #11
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Ba pourtant mes contrôles se nomes bien "txt_......". Pour le moment, j'ai 3 évenements sur mon formulaire, c'est peut être sa qui peut bloquer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Current()
    Dim ctl As Control
    For Each ctl In Me.Controls
        Select Case Left(ctl.Name, 3)
            Case "txt"
                ctl.Visible = False
        End Select
    Next ctl
     
    End Sub
    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
    16
    17
    18
    19
    20
    Private Sub Form_Load()
    DoCmd.Maximize
    Me.cmdRetourAccueil.BackColor = RGB(253, 233, 217)
     
    With Me.cmdRetourAccueil
            .MousePointer = 99
            .MouseIcon = LoadPicture(Application.CurrentProject.Path & "\Data\Harrow.cur")
    End With
     
    With Me.CmdeDossierMachine
            .MousePointer = 99
            .MouseIcon = LoadPicture(Application.CurrentProject.Path & "\Data\Harrow.cur")
    End With
     
    With Me.CmdeDossierMachine
            .Picture = LoadPicture(Application.CurrentProject.Path & "\Data\dossier.gif")
            .Caption = "Le Texte"
    End With
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Click()
     
    Dim ctl As Control
    For Each ctl In Me.Controls
        If Left(ctl.Name, 3) = "txt" Then
                ctl.Visible = False
        End If
    Next
     
    End Sub
    Voila, quand j'ouvre mon Form, tous les contrôles "txt_..." sont bien cachés, si je clique sur une des images de mon form, les contrôles "txt_..." liés à cette image s'ouvre bien, je voudrais donc que si je reclic n'importe ou sur mon form ils se referment, mais sa ne marche pas.

  12. #12
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Personne n'a une petite idée d'où peut venir le problème?

    Merci

  13. #13
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    As-tu fais les tests que je t'ai suggérés ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  14. #14
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour...

    je voudrais donc que si je reclic n'importe ou sur mon form ils se referment, mais sa ne marche pas.
    ....sauf erreur de ma part, cela est normal.....
    Avec ton code suivant......
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Form_Click()
     Dim ctl As Control
    For Each ctl In Me.Controls
        If Left(ctl.Name, 3) = "txt" Then
                ctl.Visible = False
        End If
    Next
    End Sub
    ....tu pense faire "référence" à l'ensemble du Formulaire, ce qui est en partie vraie...........mais seulement si tu clic sur un "objet" commun à l'ensemble de celui-ci (par exemple = la zone "Sélecteur" si tu as mis sa propriété sur Oui...)
    Donc comme je pense que l'ensemble de tes contrôles se trouve dans la partie "Détail" du formulaire, il te suffit de changer le code comme ci-dessous...:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Détail_Click()
    Dim ctl As Control
    For Each ctl In Me.Controls
        If Left(ctl.Name, 3) = "txt" Then
                ctl.Visible = False
        End If
    Next
    End Sub
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  15. #15
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Merci beaucoup c'est nikel

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

Discussions similaires

  1. Boucle for pour remplacer les virgules dans un userform
    Par floflo50100 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/04/2015, 16h27
  2. ajout dynamique de contrôle dans un formulaire
    Par celiaaa dans le forum IHM
    Réponses: 2
    Dernier message: 26/02/2007, 19h23
  3. Réponses: 4
    Dernier message: 16/08/2006, 14h01
  4. Réponses: 3
    Dernier message: 09/06/2006, 15h41
  5. Problème pour afficher un contrôle dans un formulaire
    Par JahRastafari dans le forum IHM
    Réponses: 5
    Dernier message: 16/06/2005, 10h15

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