Liste déroulante limitée à 255 caractères

J’extrais des valeurs Texte d’une liste déroulante, par exemple par la méthode Column(x). Mais lorsque certains textes sont longs, Access n’affiche que 255 caractères. Comment faire ?

Exemple

Effectivement, les textes des listes déroulantes sont limités à 255 caractères, même si le champ de table est un Mémo qui contiendrait 2000 caractères.

Dans l’exemple ci-dessous, la liste déroulante extrait des informations de la table tbl Environnement dont il était question dans l’article Nom d’utilisateur et autres informations. Pour mémoire, cette table contient 3 champs : Id (NuméroAuto), Variable (Texte) et Valeur (Mémo). La liste a donc pour source la requête suivante :

  • La liste s’appelle cmbEnvironnement.
  • La zone de texte de gauche (« Valeur extraite de la liste ») a pour source cette formule :
    =[cmbEnvironnement].[Column](2)
    comme vous avez pu le voir dans ces articles.

Il se trouve que la variable d’environnement PATH sélectionnée ici fait 432 caractères. Mais la valeur extraite de la liste par la fonction Column() n’en renvoie que 255.

Une solution

La solution pour palier ce problème consiste à extraire les données par un autre moyen que la liste, par exemple directement de la table. Voici la source de la zone de droite :

Nous utilisons la fonction RechDom() – ou DLookup() en anglais, qui effectue une recherche dans une table. La fonction est traitée en détail dans cet article. Cette fonction nous sert à chercher…

  • le champ Valeur
  • dans la table tbl Environnement
  • sur la ligne dont la clef Id est égale au choix fait dans la liste cmbEnvironnement.

Et cette fois, on extrait bien tous les caractères !

Petit détail cosmétique

La zone de droite affiche la mention #Erreur lorsque le formulaire s’ouvre et qu’aucun choix n’est encore fait dans la liste déroulante cmbEnvironnement. La raison est que, dans ce cas, le filtre de la fonction RechDom() devient : "Id=" (rien après le signe « = »). Ajoutez un traitement de ce vide par la fonction Nz(), et ce sera réglé :

Ah, j’oubliais…

Le nombre de caractères est calculé par la fonction Len() – ou NbCar() en français. Donc si les 2 zones d’affichage s’appellent txtValeur1 et txtValeur2, les 2 tailles se calculent par :

  • =Len(txtValeur1)
  • =Len(txtValeur2)

Vous aimerez aussi...

2 réponses

  1. Oken2 dit :

    Merci…votre article vient de me sortir d’un gros pétrin…bonne continuation

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *