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éer une liste déroulante dans une cellule avec vba [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Créer une liste déroulante dans une cellule avec vba
    Bonjour, j'aimerai s'avoir, si cela est possible bien sur, est-ce qu'il est possible avec vba de créer une liste déroulante dans une certaine celulle qui varie selon le code.

    Je veux une liste déroulante simple comme, si j'utiliserai validations des données et list.
    Le problème est que je peux pas créer la liste au début, puisque la position de la celulle va être déterminé par le code.

    De plus, j'aimerai bien vous fournire le code mais il fait plus de 3 page...

    J'espère avoir été claire dans mes termes utilisés.

    Merci de l'aide!!

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Un exemple de code pour créer une liste par validation de données (l'enregistreur automatique de macro est mon ami) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        With Range("C3").Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=A1:A4"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    Il te suffit de changer les paramètre de la ligne Formula pour changer les données de la liste.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci, pour votre réponse aussi rapide. C'est ce que je voulais!

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    La prochaine fois, essaye l'enregistreur automatique de macro. Il apporte beaucoup de réponses.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    J'ai un problème avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets("Planification").Cells(l + 7, i + 2).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                            xlBetween, Formula1:="=Complémentaire!F4:F" + Strings.Trim(Str(finSecteur))
    + Strings.Trim(Str(finSecteur)) me donne toujours un erreur: 1004 Erreur définie par l'application ou par l'objet.

    Alors que sur ce site

    Il le font comme cela:

    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
    'the function below updates the source range for the data validation 
    'based on the number of rows provided by the input 
    Private Sub Update_DataValidation(ByVal intRow As Integer)
    'the reference string to the source range 
    Dim strSourceRange As String 
     
    strSourceRange = "=Sheet1!A1:A" + Strings.Trim(Str(intRow))
    With Sheet2.Range("J2").Validation
        .Delete 
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ 
        Operator:= xlBetween, Formula1:=strSourceRange 
        .IgnoreBlank = True 
        .InCellDropdown = True 
        .InputTitle = "" 
        .ErrorTitle = "" 
        .InputMessage = "" 
        .ErrorMessage = "" 
        .ShowInput = True 
        .ShowError = True 
    End With 
    End Sub
    J'ai essayer de le mettre dans une variable string, mais ça me donne la même erreur. Cela fonctionne, quand je mets seulement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets("Planification").Cells(l + 7, i + 2).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                            xlBetween, Formula1:="=Complémentaire!F4:F20"
    Merci de votre aide!

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Je ne pense pas que ça va résoudre ton problème mais, pour faire une concaténation de chaîne de caractère, il est conseillé de mettre un & plutôt qu'un +, ça évite les ambiguïtés et les erreurs si l'un des éléments n'est pas une chaîne.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/06/2012, 14h22
  2. Selectionner une valeur dans une liste déroulante sur le net avec vba
    Par zneidi77 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/06/2012, 15h48
  3. Réponses: 4
    Dernier message: 20/02/2012, 16h59
  4. Réponses: 1
    Dernier message: 12/12/2011, 10h07
  5. [VB6]Créer une liste déroulante dans une dataGrid
    Par mcay dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/05/2006, 09h32

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