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 :

Obtenir l'identifiant d'un champ texte indépendant d'un formulaire dans un autre champ en cliquant dessus [AC-2003]


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Obtenir l'identifiant d'un champ texte indépendant d'un formulaire dans un autre champ en cliquant dessus
    Bonjour à tous,
    Je cherche depuis un moment le moyen d'obtenir l'identifiant (= "Nom", 1ère ligne de l'onglet "Autre" de la fenêtre propriété) d'un champ indépendant dans un autre champ indépendant dédié à celà du même (ou d'un autre...) formulaire.
    Exactement comme celà se passe lorsqu'à chaque fois que l'on clique sur un champ de formulaire et que s'affiche son nom dans cette 1ère ligne de l'onglet "Autre" de la fenêtre des propriétés.
    J'ai besoin de récupérer cette valeur pour la stocker et l'associer à d'autres valeurs dans une table.

    C'est probablement basique, mais je sèche!

    Merci par avance.

    P.S.: Maraïcher bio, je cherche à simuler une interface graphique pour gestion des parcelles de légumes (voir pièce jointe). Si quelqu'un a des idées et serait prêt à m'accompagner, c'est volontiers. Si en plus dans ma région, j'offre quelques légumes.
    Images attachées Images attachées  

  2. #2
    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,

    Un exemple : un double-clic sur le champ dont la propriété Nom de la zone de texte départ concernée, mettra à jour une autre zone de texte dont le nom est arrivée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub départ_DblClick(Cancel As Integer)
      Me.arrivée = Me.départ.Name
    End Sub
    Essai d'utiliser les bons termes

    A+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci,
    C'est déjà un pas. Mais peut on éviter de préciser : Me.arrivée = Me.départ.Name ?.
    Pourrait-on envoyer l'impulsion du double clic vers un seul et même code qui identifierait lui même successivement chaque champ cliqué ?
    Car sinon, je devrai mettre en place plusieurs centaines d'instructions semblables.
    Et en plus, je veux pouvoir, à l'aide de cases à cocher, et de macros conditionnelles, orienter l'effet du double clic vers d'autres instructions selon les besoins du moment.
    (exemple : ouvrir d'une requête rassemblant l'historique des cultures correspondant à ce champ - tiens,tiens... le champ informatique correspond au bout champ cultivé !)
    Mais bon, je peux toujours les déclencher à partir du champ unique "arrivée".

    Quand tu parles d'utiliser les bons termes.
    Désolé mais je me suis formé seul.
    Je fais pourtant des efforts.

  4. #4
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonsoir,

    J'espère avoir bien compris. Regarde du côté de Screen.ActiveControl.

    Essaie par exemple la propriété sur perte focus d'un champ (le code est extrait de l'aide).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub txtLeChamp_LostFocus()
     
    Dim ctlCurrentControl As Control
    Dim strControlName As String
    Set ctlCurrentControl = Screen.ActiveControl
    strControlName = ctlCurrentControl.Name
     
    MsgBox strControlName
     
    End Sub
    Pour plus de précisions sur les nombreuses possibilités d'utilisation, voir l'aide.

    J'espère que cela répond à ta demande.

    Domi2

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Ok, ça avance.
    Plus que quelques centaines de copier coller... et trouver comment relancer une macro lorsque le champ arrivée (que j'ai nommé Ident dans le formulaire1) change de valeur car l'évènement "Après MàJ" m'identifie pas la mise à jour par le code.

    Si maintenant j'arrivais à en faire une fonction lançable dans une macro par la commande "Executer code", je peux maitriser la suite.

    J'ai donc essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Function Ident()
    Dim ctlCurrentControl As Control
    Dim strControlName As String
    Set ctlCurrentControl = Screen.ActiveControl
    strControlName = ctlCurrentControl.Name
     
    Formulaires![Formulaire1]![Ident] = strControlName
    End Function
    mais du coup je n'accède probablement plus aux variables du formulaire.

    Si je peux encore avoir un petit coup de pouce, ça devrait le faire car je suis plus familier des macros que du code.

  6. #6
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Plus que quelques centaines de copier coller...
    Euh... J'ai de la peine à comprendre ton problème. Ce que tu veux faire semble assez particulier.

    1. Avec Screen.ActiveControl, tu peux récupérer le champ actif.
    2. Si nécessaire, tu peux assigner la valeur à une variable disponible dans toute l'application.
    3. Effectivement, la modification de valeur par le code n'entraîne pas le déclenchement d'événement, mais on peut peut-être y pallier par la comparaison de la valeur (.value) et de l'ancienne valeur (.OldValue) du champ.


    J'espère que cela pourra t'aider.

    Domi2

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut J'ai trouvé!
    Les variables étaient correctement renseignées mais le code ne trouvait pas l'objet "Formulaires" et donc ne renseignait pas le champs d'arrivée.

    Correction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Function Ident()
    Dim ctlCurrentControl As Control
    Dim strControlName As String
    Set ctlCurrentControl = Screen.ActiveControl
    strControlName = ctlCurrentControl.Name
     
    Forms![Formulaire1]![Ident] = strControlName
    End Function
    Donc, je peux continuer mon entreprise effectivement assez spéciale.
    Je suis ravi de pouvoir lancer toute une série de macros en les renseignant sur le champ qui a fait l'objet du clic.
    Et ce à partir d'une macro unique affectable d'un choix à un grand nombre de champs préalablement sélectionnés.

    Merci beaucoup pour l'aide.

  8. #8
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Re,

    Sorry, je n'avais pas regardé attentivement le code...

    N'oublie pas de compiler, ni de mettre Option Explicit en entête de tes modules de code. Ca aide pour le débogage...

    Si c'est ok, n'oublie pas de tagué

    Bon dév !

    Domi2

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

Discussions similaires

  1. [AC-2010] Formulaires:champs texte indépendant
    Par Chenin84 dans le forum IHM
    Réponses: 7
    Dernier message: 14/08/2011, 07h14
  2. [AC-2003] Champ texte indépendant et plantage
    Par Demes dans le forum VBA Access
    Réponses: 3
    Dernier message: 19/08/2009, 11h56
  3. [AJAX] remplissage des champs a partir d'une donne dans un autre champ
    Par zied.ellouze dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/02/2009, 10h07
  4. Champ texte indépendant et valeur
    Par Bonosvox dans le forum IHM
    Réponses: 5
    Dernier message: 19/05/2008, 18h58
  5. Réponses: 3
    Dernier message: 26/08/2006, 15h55

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