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 :

Contrôle texte affichant une colonne N+1 d'une Combo-box


Sujet :

IHM

  1. #1
    Membre du Club
    Homme Profil pro
    Retraité à 65 ans
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité à 65 ans

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 61
    Points
    61
    Par défaut Contrôle texte affichant une colonne N+1 d'une Combo-box
    Bonjour,

    Un bête truc que je ne comprends plus ?

    Dans une nouvelle application MsAccess 2010 (.accdb), j'ai un formulaire avec une combobox "cboFirme" qui me permet de sélectionner une firme. La combobox affiche la première colonne dont la largeur est > 0, ici c'est column(0) avec le nom de la firme.
    J'ai 2 contrôles de type text où je souhaite afficher la région de la firme, "ctlFirmeRégion" (2ème colonne), et son numéro de téléphone, "ctlFirmeTél" (3ème colonne).
    Les propriétés de source de ces contrôles contiennent "=[cboFirme].[column](1)" et "...(2)", syntaxe confirmée dans l'aide.
    A l'affichage du formulaire, les 2 champs affichent "#Nom ?".
    Où est donc mon erreur ? Problème de compatibilité de versions ?

    A titre d'info, sous Windows XP Sp3, je viens de passer à Access 2010 (Microsoft Office Professional Plus 2010, version 14.0.5128.5000 (32 bits)), après avoir développé une floppée d'applications depuis Access v2 jusqu'à la 2003. Ces "anciennes" applications n'ont pas été converties en format Access 2010, elles restent des .mdb qui utilisent avec succès une syntaxe comme "=cboPers.column(2)" même sous Access 2010.

    Merci d'avance si quelqu'un peut éclairer ma lanterne. Je n'ai rien trouvé dans la FAQ ni sur d'autres sites, je continue à cherche et si je trouve, je posterai ici la solution.
    Michel

    Office 2019 Pro Plus, Win10 Pro 64 bits ; Access et VBA depuis Access 2 ; encore actif même si retraité ; seul utilisateur de mon PC.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 286
    Points : 383
    Points
    383
    Par défaut Solution de contournement ?
    Bonjour,

    Dans l'événement "Après MAJ" de cboFirme
    tu places le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub cboFirme_AfterUpdate()
          Me.ctlFirmeRégion = Me.cboFirme.Column(1)
          Me.ctlFirmeTél= Me.cboFirme.Column(2)
    End Sub
    Et tu devrais obtenir le résultat escompté : à chaque sélection de ligne dans ta combo, les deux zones de texte reflèteront bien la valeur des deux autres colonnes (cachées) de ta combo.

    Michel

  3. #3
    Membre du Club
    Homme Profil pro
    Retraité à 65 ans
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité à 65 ans

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 61
    Points
    61
    Par défaut
    Salut à toutes et tous,

    Je sais que cela fait presque 6 ans que j'ai posté sur ce problème et il me sembait y avoir répondu mais comme le problème refait surface, persiste et frappe ...

    La solution proposée par Orion34080 n'est intéressante que pour une cbo modifiée et pas pour une cbo qui affiche l'enregistrement courant. Par ailleurs, il ne s'agit pas de colonnes cachées, AMHA.

    Avec mon programme développé et opérationnel depuis 2008 et en constante amélioration où il s'agit de noter mes activités quotidiennes, en indiquant pour chacune son Domaine (Windows, Access, Bricolages etc) et les Personnes liées, j'ai donc un formulaire Notes avec 2 sous-formulaires pour choisir par Cbo le(s) Domaine(s) et Personne(s). Pour le domaine, j'ai un champ "dérivé" dans lequel j'indique le sommaire des particularités du Domaine, avec la formule :
    =Nz(cboDomaine.Column(2)) ou son équivalent =Nz([cboDomaine].[Column](2))
    correspondant à la 3ème colonne affichée de la requête de ma cbo. J'ai un mécanisme similaire pour indiquer l'adresse de la Personne. La fonction Nz(MyVar[, valifNull]) sert pour le cas où aucun Domaine ou Personne n'est associé à la Note affichée et où la cbo est vide et ses colonnes sont donc de valeur Null.

    Après une révision majeure de la base Programme pour passer du format .MDB en .ACCDB, j'ai e.a. ajouté des filtres et séquences de tri ET surtout l'affichage de plusieurs champs liés pour les Domaines. Et cela fonctionnait impeccablement avec les bons affichages.

    Donc, développement et tests terminés, je connecte une autre base Data et bardaf, c'est l'embardée : les champs liés au Domaine affichent "#Nom ?" tandis que celui de la Personne affiche correctement l'adresse de la Personne. Les syntaxes et toutes les propriétés des champs sont identiques. Supprimer la foction NZ() ne change rien.

    Je vais tenter de remédier au problème avec une solution similaire à celle d'Orion34080 mais sur l'évènement Current mais cela me fait ch... choir les cheveux de constater ces comportements erratiques d'Access.

    Si vous avez un tuyau, merci d'avance.
    Michel

    Office 2019 Pro Plus, Win10 Pro 64 bits ; Access et VBA depuis Access 2 ; encore actif même si retraité ; seul utilisateur de mon PC.

  4. #4
    Membre du Club
    Homme Profil pro
    Retraité à 65 ans
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité à 65 ans

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 61
    Points
    61
    Par défaut
    Suite de mes recherches. J'ai donc mis le code suivant dans l'évènement OnCurrent de mon sous-formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Compare Database
    Private Sub Form_Current()
        Me.ctlDomN° = Nz(Me.cboDomaine.Column(5))
        Me.ctlChkObsDom = Nz(Me.cboDomaine.Column(6))
        Me.ctlGroupeN° = Nz(Me.cboDomaine.Column(7))
        Me.ctlGroupe = Nz(Me.cboDomaine.Column(2))
        Me.ctlChkObsGrp = Nz(Me.cboDomaine.Column(8))
    End Sub
    A l'exécution, j'ai un message pour la 1ère ligne d'impossibilité d'attribuer une valeur à l'objet. Je pensais que c'était parce qu'il avait les propriétés Activé = NON et Verrouillé = OUI. J'ai modifié ces propriétés : idem. J'ai alors supprimé la propriété Source du Contrôle.

    Et cela fonctionne ... sauf que le sous-formulaire étant en continu, les champs dérivés du 2ème Domaine (Logiciels perso) affichent tous les valeurs dérivées du 1er Domaine (Access). Résultat qui rend inutile à 100 % l'affichage de ces informations.

    Donc, jusqu'à nouvel ordre, Access 2010 ne permet que de temps à autre et de manière imprévisible d'afficher dans un contrôle les informations provenant d'autres colonnes de la Cbo que celle affichée. Je devrais me sentir heureux d'être retraité car comment expliquer à un client ou boss que MS produit des logiciels imprévisibles au comportement variant d'un instant à l'autre.

    Provisoirement, je vais rendre invisibles ces contrôles d'affichage de valeurs dérivées et mettre en commentaire l'évènement Oncurrent. NA !

    PS : en plus, je perds au moins une vingtaine de secondes lorsqu'en mode Création, je sélectionne le sous-formulaire puis un de ses contrôles avant d'avoir la main pour voir sa Fenêtre de Propriétés. Je me demande ce qu'Access turbine pendant ce temps. Essayerait-il de dégoûter ses utilisateurs et développeurs ?
    Michel

    Office 2019 Pro Plus, Win10 Pro 64 bits ; Access et VBA depuis Access 2 ; encore actif même si retraité ; seul utilisateur de mon PC.

  5. #5
    Membre du Club
    Homme Profil pro
    Retraité à 65 ans
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité à 65 ans

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 61
    Points
    61
    Par défaut Perte de temps !!!
    Je suppose qu'il est illusoire de chercher à comprendre comment cela fonctionne correctement maintenant. Mes étapes :
    1. Utilisation - pour confirmation - de l'évènement AfterUpdate de la Cbo (avec le même code que pour le OnCurrent) : les valeurs ne sont affichées que lorsqu'un Domaine est choisi dans la CBO mais alors comme pour OnCurrent, tous les domaines de la Notes affichent les mêmes valeurs : sans intérêt ? Donc j'ai supprimé ces Events.
    2. Juste pour voir, je remets la source du contrôle pour le 1er des 4 champs avec :
    =Nz(cboDomaine.Column(5))
    et ... affichage ok. Puis le 2ème : ok. Jusqu'au 5ème : affichages ok aussi bien pour les valeurs numériques que de texte ou de check-box. A nouveau, passage à la base Data réelle et ... ? Ouiiiiii cela fonctionne.

    Pourquoi cela ne fonctionnait-il pas pendant un certain temps ? Juste pour faire perdre du temps, sans doute.

    L'important c'est que cela fonctionne mais je ne peux pas juste indiquer "résolu" sans savoir pourquoi et en apprendre quelque chose ? D'autant que mon PC continue à ramer dans la session Access à chaque changement de focus en mode Création !
    Michel

    Office 2019 Pro Plus, Win10 Pro 64 bits ; Access et VBA depuis Access 2 ; encore actif même si retraité ; seul utilisateur de mon PC.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/03/2012, 15h04
  2. [XL-2007] Afficher la liste des PivotItems dans une colonne
    Par Camaytoc dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/01/2012, 22h50
  3. Réponses: 4
    Dernier message: 11/12/2011, 20h29
  4. [XL-2003] Trier une colonne de moyenne, rattachée à une colonne de noms
    Par floctc dans le forum Excel
    Réponses: 3
    Dernier message: 11/03/2011, 09h57
  5. Réponses: 5
    Dernier message: 13/07/2010, 12h06

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