[VBA-Excel]-Liste déroulante

Boujour,

Je cherche a créer une liste déroulante ou les données de cette liste sont situées dans les cellules "Z1:Z5" sachant que le nombre de données peut varier. Le nombre total de données est située dans la cellule L1.

Savez vous comment faire?

Merci
Configuration: Windows 2000
Internet Explorer 6.0

13 réponses

  1. Modérateur
    Ben je connais plutôt VBA pour ACCESS...

    Le principe est de concaténer des champs avec des ; pour les mettre en datasource de la liste, genre :

    list.rowsource = "a;b;c;"

    Selon moi, le nombre de données n'a pas d'importance, je crois qu'il faudrait plutôt travailler l'extraction du contenu de z1:z5.
    1. Je rappelle que le nombre de donnes peut varier, la liste va donc de Z1 et Z.
      1. Modérateur
        de Z1 et Z.
        ???
    2. Bonjour,

      suggestion :

      Sub ModifieListe()
          
          Dim Formule As String
          
          Formule = "=$Z$1:$Z$" & Val(Range("L1").Value)
          
          ' Ajout d'une nouvelle liste
          With ActiveCell.Validation
              .Delete
              .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
                      Operator:=xlBetween, Formula1:=Formule
          End With
      
      End Sub
      '
      

      Lupin
      1. Z1 et Z. le point correspond au nombre de données qui varie
        1. Modérateur
          comme au début, tu avais dit Z1:Z5, j'ai pensé que c'était la concaténation des données de ces 5 cellules qui'il te fallait...
        2. @bluxSi tu avais bien lu mon 1er message tu auras vu que j'avais précisé que le nombre de données etait variable ;)
        3. Modérateur
          @a.dequidtJ'ai bien lu ton message initial, mais il tendait à me faire croire que TOUTES tes données étaient dans Z1:Z5, en 'vrac', mais que l'on savait combien on en avait grâce au contenu de L1 :-)

          Voilà ce que je voyais dans ma tête :

          Z1 : a;b;c;d;e
          Z2 : f;g
          Z3 : h;i;j
          Z4 : k
          Z5 : l,m

          L1 : 13

          C'est singulier de voir que tout le monde ne voit pas les mêmes choses dans la même phrase. Généralement, celui qui la compose voit ce qu'il veut dire, alors que celui qui la lit interprète par rapport à ce qu'il a lu...
      2. Sub ModifieListe()

        Dim Formule As String

        Formule = "=$Z$1:$Z$" & Val(Range("L1").Value)

        ' Ajout d'une nouvelle liste
        With ActiveCell.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
        Operator:=xlBetween, Formula1:=Formule
        End With

        End Sub
        1. J'ai encore un petit probleme je voudrais que dans les cellules ou j'ai créer la liste de validation, je puisse modifier le contenu de la cellule, lorsque je l'ouvre un message apparait me disait que l'utilisateur a restreint les valeurs possibles.
          J'arrive a enlever ce message via Données>Validation>Alerte d'erreur
          Mais a la réouverture du fichier le probleme se réitère,

          Savez vous comment faire?

          Merci
          1. Bonjour,

            Personnellement, je ne comprends pas votre problème et je ne peux le reproduire.
            De plus, j'ai bien été témoin de votre disscussion, et je n'ai certes pas voulu m'insérer
            dans une discussion comme trouble fait, mais je ne sais pas si m'a suggextion va a été
            utile.

            Lupin
            1. Bonjour Lupin,

              Oui votre aide m'a été précisieuse, j'ai pu faire une liste de validation comme je le voulais.
              1. J'ai eu le même problème et j'ai trouver la solution si tu n'en as pas une: bouton droit sur ta cellule, "format cell", onglet protection, décoche l'option "locked"
                1. Contributeur
                  bonjour

                  Je cherche a créer une liste déroulante ou les données de cette liste sont situées dans les cellules "Z1:Z5" sachant que le nombre de données peut varier. Le nombre total de données est située dans la cellule L1.


                  Dans menu données/validation/onglet options choisir liste dans autoriser et dans source mettre la formule
                  =DECALER($Z$1;;;$L$1)  
                  
                  pour respecter la demande intégralement
                  ou
                  
                  =DECALER($Z$1;;;NBVAL(Z:Z)) 
                  
                  pour utiliser la formule de référence
                  ou simplissime
                  
                  =Z:Z
                  

                  La liste de validation se modifie automatiquement lorsque l'on rajoute une valeur dans la colonne Z.
                  Il suffit de modifier la lettre de la colonne pour avoir une liste située ailleurs.

                  Si l'on veut avoir la liste sur une autre feuille, il faut "nommer" la colonne, par exemple 'listeZ' et dans source mettre la formule
                  =listeZ