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 :

Liste déroulante glissante : A1 -> B1:B9 ; A10 -> B10:B19 [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Novembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Novembre 2015
    Messages : 2
    Par défaut Liste déroulante glissante : A1 -> B1:B9 ; A10 -> B10:B19
    Bonjour ! Nouvel inscrit, je risque d'avoir besoins de vos lumières ^^

    Je me penche en ce moment sur un questionnaire, essentiellement basé sur des listes déroulantes, avec quelques champs libres. Le questionnaire a proprement parlé est en feuille1 et les modalities des réponses sont en feuille2.

    Je cherche à établir des listes déroulantes glissantes, quelque chose de très simple, répondant à la logique suivante :

    ListDer1 (en A1 feuille1) prend ses modalités de réponses dans la plage B1:10 de la feuille2

    ListDer2 (en A10 feuill1) prend ses modalités de réponses dans la plage B10:19 de la feuille2

    ...

    Un truc tout con donc, avec un écartement constant, m'évitant de devoir selectionner manuellement "validation des données" "Sélection de la plage" pour chacune. Au delà du côté fastidieux la première fois, il est aussi question de maintenance, forcément ^^

    J'imagine que c'est relativement simple, j'ai cherché sur le net bien sur, mais je trouve des choses toujours un peu différentes et généralement un peu plus complexe. Il est dommage que la liste déroulante ne soit pas déclenchable par formule, auquel cas on pourrait faire glisser les arguments de plages, ce serait si facile

    Typiquement, l'idéal serait d'éditer manuellement deux questions completes, de les sélectionner, de glisser avec le coin inférieur droit, et ô magie... J'ai meme eu un petit espoir Mais non, malheureusement.

    Je peux tenter en VBA, si vous avez des propositions.

    Dans tous les cas merci d'avance, et pardonnez les éventuelles fautes de forme, je ne suis pas encore familier avec le forum ! N'hésitez pas si cela manque cruellement d'info. Concernant le fichier en particulier, je ne peux le partager en l'état, confidential, mais j'imagine qu'il est possible d'en faire une simulation toute bête M'enfin je pense que la problématique est suffisamment limpide, mais à nouveau n'hésitez à me reprendre.

    Liste Deroulante Glissante Forum.xlsx

    Edit : La réponse m'a été donnée sur un autre forum, je ne sais pas s'il est de bon ton d'en mentionner le lien ici, ni meme s'il me faut cloture ce fil en résolu, je reviendrai voir quelle est la solution la plus appropriée, si un modo passé par là

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour Dakitess,

    Alors, pour information, l'enregistreur de macro te permet d'avoir rapidement un bout de code pour répondre à ton besoin.
    Ainsi, sur le fichier que tu as envoyé, tu trouves 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub Macro1()
    '
    ' Macro2 Macro
    '
     
    '
        Range("A1").Select
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="='Modalités de réponse'!B1:B9"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
        Range("A10").Select
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="='Modalités de réponse'!B19:B19"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    End Sub
    Ainsi, avec quelque modification, on peut rapidement faire :
    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
    26
    27
    28
    29
    30
    31
    Sub menu_deroulant()
    Dim dern As Integer
    Dim nb_list As Integer
    Dim i As Integer
    Dim oRng As Range
    Dim oList As Range
     
    With Worksheets("Modalités de réponse")
        dern = .Cells(Rows.Count, 2).End(xlUp).Row
        nb_list = Int((dern - 1) / 9) + 1
    End With
     
    Set oRng = Worksheets("Questionnaire").Range("A1")
    For i = 1 To nb_list
        Set oList = oRng.Offset((i - 1) * 9, 0)
        With oList.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="='Modalités de réponse'!B" & (9 * (i - 1)) + 1 & ":B" & (10 * i) - 1
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    Next i
     
    End Sub
    Voila ! En espérant que ça serve quand même ! ^^

    Cordialement,
    Kimy

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Novembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Novembre 2015
    Messages : 2
    Par défaut
    Je te remercie pour ton aide ! Elle m'aide grandement à y voir plus clair dans la notion d'enregistreur de macro dont je ne savais que penser ^^

    Effectivement bien pratique avec un peu de retouche !

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

Discussions similaires

  1. valeur d'une liste déroulante
    Par leeloo076 dans le forum ASP
    Réponses: 7
    Dernier message: 15/04/2004, 16h11
  2. liste déroulante
    Par leeloo076 dans le forum ASP
    Réponses: 12
    Dernier message: 23/03/2004, 10h35
  3. liste déroulante avec session
    Par leeloo076 dans le forum ASP
    Réponses: 3
    Dernier message: 19/03/2004, 11h01
  4. liste déroulante en ASP vbscript
    Par leeloo076 dans le forum ASP
    Réponses: 9
    Dernier message: 17/03/2004, 16h42
  5. Listes déroulantes liées entre elles
    Par denisC dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/07/2002, 15h53

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