[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. 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 
    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. Bonjour Lupin,

        Oui votre aide m'a été précisieuse, j'ai pu faire une liste de validation comme je le voulais.
        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. 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. 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. 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. 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. 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. 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.