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 :

Création de liste déroulante à partir de donnée variable [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Par défaut Création de liste déroulante à partir de donnée variable
    Bonjour,

    J'ai un problème dans l'écriture d'une fonction qui doit créer une liste déroulante dans une cellule (validation) en se basant sur des valeurs qui sont dans une colonne d'une autre feuille. Ce qui me complique la tâche c'est que la longueur de la liste n'est pas constante et varie en fonction de la colonne.

    Je suis parti de ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     Cells(1, 5).Select
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=$A$1:$A$8"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = "Sélection"
            .ErrorTitle = ""
            .InputMessage = "Choisissez une valeur"
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    mais je n'arrive pas à écrire le champ "Formula1" sachant que la nom de la feuille où se trouve la liste avec les valeurs est passé en paramètre ainsi que la colonne visée et que la dernière ligne de la liste doit soit être aussi passée en paramètre soit idéalement calculée.

    J'espère que j'ai été clair dans la description de mon problème. En parcourant le forum, je n'ai pas vu de solution à mon problème.

    Merci d'avance pour votre aide

    Renaud

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour

    Ma réponse sous forme d'un exemple :

    - Remplis comme tu l'entends la colonne A de Feuil1 , à partir de A1
    - lance ce code depuis une autre feuille :
    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
     Dim F As Worksheet, adresse As String
      Set F = Worksheets("Feuil1")
      derlig = F.Range("A" & Rows.Count).End(xlUp).Row
      adresse = F.Range("A1:A" & derlig).Address
      With Cells(1, 5).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
         xlBetween, Formula1:="=" & F.Name & "!" & adresse
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = "Sélection"
        .ErrorTitle = ""
        .InputMessage = "Choisissez une valeur"
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
      End With
    et va voir ce que tu as en cellule E1

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 725
    Par défaut
    Bonjour,

    Voici un exemple (en supposant que tes listes commencent en D1 sur Feuil2 & Feuil3 sinon tu peux utiliser une plage nommée à portée locale ayant le même nom sur chaque onglet; sinon pour calculer la zone à réellement sélectionner, tu as donné trop peu d'informations):

    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
    Sub creerValidationDeDonnees(sheetName As String)
        With Cells(1, 5).Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=" & Worksheets(sheetName).Range("D1").CurrentRegion.Address(, , , True)
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = "Sélection"
            .ErrorTitle = ""
            .InputMessage = "Choisissez une valeur"
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    End Sub
     
    Sub test1()
        creerValidationDeDonnees "Feuil2"
    End Sub
     
    Sub test2()
        creerValidationDeDonnees "Feuil3"
    End Sub
    Edit: grillé... :-)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Par défaut
    Merci pour vos réponses rapide, je regarde ça au plus vite et vous dit quoi

  5. #5
    Membre très actif Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Par défaut DOUBLE VALIDATION
    Bonjour à tous,
    Sans vouloir vous importuner les amis, je me demande seulement s'il est vraiment nécessaire de passer par le VBA pour réaliser un truc pareil, en plus d'Excel 2010 qui permet la validation sur des feuilles différentes, à mon avis quelques petits jeux de formules permettrait de le faire à l'exemple du fichier Ms Excel que j'attache à ce poste.

    A moins que je n'aie pas trop compris le problème.

    Bien cordialement.
    Fichiers attachés Fichiers attachés
    Entre la canne à pèche et le poisson c'est certainement la canne que je choisirais, puis apprendrais à m'en servir.
    Si on vous souffle une solution au complet c'est que vous n'auriez rien compris du problème.
    Consultez la , de forte chances que votre problème y figure et c'est plus vite que de poser une question et en attendre la réponse.
    FAQ Excel: http://excel.developpez.com/faq/

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour XLRATOR
    Tu n' "importunes" personne, bien au contraire.
    Ta solution n'est toutefois pas confortable du tout si le développeur utilise par ailleurs VBA car la cohabitation, sur une feuille de calcul, de résultats issus de formules et de saisies ou de résultats issus de VBA est toujours source de problèmes divers et variés et dans plusieurs sens. Entre autres (mais pas uniquement) les modifications par formules ne génèrent aucun évènement.
    Le demandeur n'ayant pas précisé cet aspect et ayant ouvert cette discussion dans la section VBA, je ne peux que présumer que son projet utilise également VBA (et ne cours donc aucun risque). D'autant que nous ignorons tout du reste de son appli et des cellules susceptibles d'être impactées en cascade.

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

Discussions similaires

  1. [MySQL] liste déroulante à partir de base de donnée
    Par nouna dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/01/2012, 17h08
  2. [MySQL] Liste déroulante à partir des données de la base
    Par worldhugo dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 11/01/2009, 19h23
  3. Charger une liste déroulante à partir d'une base de donnée
    Par mr_simon dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 04/07/2007, 08h32
  4. Réponses: 4
    Dernier message: 25/05/2007, 15h25
  5. [ODBC] Liste déroulante à partir des données d'Access
    Par Aillyzeux dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/04/2007, 13h38

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