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

Macros et VBA Excel Discussion :

xlValidateList: taille maximale de la liste déroulante ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2011
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par défaut xlValidateList: taille maximale de la liste déroulante ?
    Bonjour à tous,

    Dans une feuille nommée "SG_" , j'ai un tableau "Tab_SG" contenant plus de 2500 variables
    J'ai une autre feuille nommée "IHM" avec un tableau permettant de faire des choix. A cette feuille IHM est associée des évènements parmis lesquels une validation des données. Je souhaite en effet mettre une liste déroulante en validation, contenant toutes les variables du tableau "Tab_SG". J'ai donc prérempli un tableau de string "SGList" en tant que liste de validation, et utilisé Join dans la formule:

    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
    21
    22
    23
    24
    25
     
      Set Tab_SG = shSG_.ListObjects("Tab_SG")
        Set Rtab3 = Tab_SG.Range
        Dim SGList() As String
        ReDim SGList(1 To Rtab3.Rows.Count - 1)
        For i = 1 To Rtab3.Rows.Count - 1
            SGList(i) = Rtab3.Cells(i + 1)
        Next i 
     
     
        With Rv2.Validation
          .Delete
         '.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
         'xlBetween, Formula1:="=CONFIG!$J$3:$J$7"
         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
          xlBetween, Formula1:=Join(SGList, ",")
          .IgnoreBlank = True
          .InCellDropdown = True
          .InputTitle = ""
          .ErrorTitle = ""
          .InputMessage = ""
          .ErrorMessage = ""
          .ShowInput = True
          .ShowError = True
         End With
    Rv2 correspond à une cellule du tableau IHM sur la ligne modifiée.

    J'ai une erreur 1004, car la liste SGList semble être trop grande. AU delà de 622 valeurs, ça plante.

    Une solution ?

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Je pense que c'est la propriété Formula1 qui est limitée en taille.
    La seule solution que je vois c'est d'enregistrer tes valeurs dans une zone d'une feuille puis de te référer à la zone.
    Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Formula1:="='TaFeuille'!$A$1:$A$" & MbElement
    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.

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    Cela varie en fonction de la version (255 à 8000 caractères au total).
    Pour ne pas avoir de pb, il faut pointer sur une liste de cellules.

    Exemple en PJ

    Boisgontier
    Fichiers attachés Fichiers attachés

  4. #4
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2011
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par défaut
    Ok merci pour ces infos.
    Je vais pointer directement dans la feuille alors.

  5. #5
    Membre très actif
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2011
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 260
    Par défaut
    Effectivement, comme ça cela fonctionne. C'est dommage que VBA ne permette pas de donner directement le nom d'une table dans une formule...
    Merci.

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

Discussions similaires

  1. [MVVM] Taille maximale d'une liste
    Par SIC83 dans le forum Silverlight
    Réponses: 8
    Dernier message: 12/06/2012, 09h47
  2. Réponses: 10
    Dernier message: 20/04/2007, 23h16
  3. ajustement de la taille de la liste déroulante des combobox
    Par mdevlieg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 09/08/2006, 13h36
  4. Taille : liste déroulante
    Par souska dans le forum Access
    Réponses: 2
    Dernier message: 20/09/2005, 23h42
  5. Taille d'une liste déroulante
    Par pingos dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 23/02/2005, 17h28

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