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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 : 64
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    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

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    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
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    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

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    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

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

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    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

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    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

  7. #7
    Membre à l'essai
    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
    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

+ 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