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 automatique sur clic dans cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut Liste déroulante automatique sur clic dans cellule
    Bonjour à tous,

    J'ai un fichier Excel comprenant 31 feuilles de calcul. Chaque feuille a 71 lignes d'écriture.

    Je souhaite mettre en place une liste déroulante ou autre dans chacune des cellules de la colonne C de chacune des feuilles. Cette liste doit appraître à chaque fois que je clique sur une cellule de la colonne.

    Les données sources de la liste se trouvent dans la feuille "Bat", des cellules A1 à A74.

    Pouvez-vous m'expliquer comment faire s'il vous plait ?

    J'ai essayé avec Validation - Liste déroulante, mais c'est fastidieux sur 31 feuilles.

    Merci par avance pour l'aide que vous pourrez m'apporter.

    J'ai essayé de faire ça, mais ça ne marche pas
    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
     
     
    Private Sub Worksheet_BeforeClick(ByVal Target As Range, Cancel As Boolean)
    Range("C7:C78").Select
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=$Y$1:$Y$74"
            .IgnoreBlank = True
            .InCellDropdown = True
            .ShowInput = True
            .ShowError = True
        End With
        Range("C7").Select
    End Sub
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  2. #2
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Bonjour
    Voici qq chose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Test()
    With Sheets("Bat")
    .Activate
    .Range("A2:A74").Select
    ActiveWorkbook.Names.Add Name:="LaPlage", RefersTo:="=" & "Bat!" & Selection.Address
    End With
     
    With Sheets("Feuil2").Range("a1").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=LaPlage"
    End With
     
    End Sub

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Répondre liste déroulante
    Bonjour,
    Personnellement je travaille avec excel 2007
    Pas de macro pour ce besoin mais : Pour créer une liste déroulante ,
    Dans une colonne d'une feuille, saisir la liste des entrées (ex: x prénoms)
    Saisir la plage de saisie (ex : des prénoms)
    Nommer la liste : menu -> Formule -->Définir un nom ( indiquer : nom, endroit ou la liste se trouve, et référence plage)
    intégrer la liste dans une cellule : menu : Données --> validation des données
    (dans autoriser : mettre liste et dans source indiquez le nom que vous avez donné à votre liste.
    Ensuite par copier/coller vous pouvez reproduire votre cellule xfois
    Vous pouvez modifier votre liste sans rien redéfinir mais tout simplement en insérant une ligne et un autre mot
    J'espère avoir bien répondu à votre besoin.
    ChipCan

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour QuestVBA,

    Voici le code que j'ai mis mais dans la cellule n'apparaît que "LaPlage", j'ai du commettre une erreur mais je ne sais pas où.

    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
     
     
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    With Sheets("Bat")
    .Activate
    .Range("A1:A74").Select
    ActiveWorkbook.Names.Add Name:="LaPlage", RefersTo:="=" & "Bat!" & Selection.Address
    End With
     
    With Sheets("L24").Range("C7").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="LaPlage"
    End With
    End Sub
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  5. #5
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Salut

    Un petit "=" devant LaPLage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    With Sheets("Bat")
    .Activate
    .Range("A1:A74").Select
    ActiveWorkbook.Names.Add Name:="LaPlage", RefersTo:="=" & "Bat!" & Selection.Address
    End With
     
    With Sheets("L24").Range("C7").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=LaPlage"
    End With
    End Sub

  6. #6
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Merci Quest VBA, ça marche bien pour la feuille L24, mais j'ai 31 feuilles nommée différement, est-ce que je peux remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    With Sheets("L24").Range("C7").Validation
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    With ActiveSheets.Range("C7").Validation
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  7. #7
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Tu peux faire une boucle sur les feuilles (avec ActiveSheets tu risques d'avoir un débogage)

    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
    With Sheets("Bat")
    .Activate
    .Range("A1:A74").Select
    ActiveWorkbook.Names.Add Name:="LaPlage", RefersTo:="=" & "Bat!" & Selection.Address
    End With
     
     
    For Each sh In Sheets
     
    If sh.Name = "Bat" Then GoTo line1:
     
    With Sheets(sh.Name).Range("C7").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=LaPlage"
    End With
     
    line1:
    Next sh

  8. #8
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Super ça marche très bien.

    Merci beaucoup
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

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

Discussions similaires

  1. [XL-2010] Liste déroulante conditionnelle sur plusieurs cellulles
    Par Chtibigourdan dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/02/2013, 17h12
  2. Liste déroulante basée sur un même champ dans plusieurs tables
    Par theclaw dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 29/04/2011, 18h58
  3. Réponses: 5
    Dernier message: 15/12/2009, 19h47
  4. Liste déroulante pointant sur une page
    Par krfa1 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/03/2005, 09h26
  5. [VB6] [MSHFlexGrid] Tri sur clic dans la première ligne
    Par degreste dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/03/2003, 00h42

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