Liste déroulante VBA
Résolu
savlynn
Messages postés
3
Statut
Membre
-
savlynn Messages postés 3 Statut Membre -
savlynn Messages postés 3 Statut Membre -
Bonjour à tous ,
J'ai créé un fichier et souhaite faire une liste déroulante à choix multiple sous VBA.
Cependant ne connaissant pas beaucoup cette implémentation , j'ai besoin de conseils.
En effet j'ai réussi à faire la liste pour la 1ere ligne cependant à chaque fois que je veux l'étendre il me met les mêmes résultats de la 1ère ligne. Or ce que je veux c'est que ces résultats ne soient pas indépendants de cette fameuse première ligne.
voici les codes
Pour la liste déroulante et le bouton commande:
Option Explicit
Private Sub CommandButton1_Click()
Dim i As Byte
Dim ValeurARetourner As String
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ValeurARetourner = ValeurARetourner & ListBox1.List(i) & " & "
End If
Next i
With Sheets("Plan d'action")
.Range("J2") = Left(ValeurARetourner, Len(ValeurARetourner) - 3)
.Range("K2").Activate
End With
UserForm1.Hide
Unload UserForm1
End Sub
Private Sub ListBox1_Click()
End Sub
Private Sub UserForm_Initialize()
Dim i As Integer, Derlig As Integer
ListBox1.Clear
With Sheets("Données")
Derlig = .Cells(65536, 6).End(xlUp).Row
For i = 2 To Derlig
ListBox1.AddItem .Cells(i, 6).Value
Next i
End With
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ListBox1.Selected(i) = False
End If
Next i
End Sub
Pour afficher la liste déroulante:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$J$2" Then
Target.Value = ""
Load UserForm1
UserForm1.Show
End If
End sub
Je vous remercie d'avance pour votre aide
cordialement
J'ai créé un fichier et souhaite faire une liste déroulante à choix multiple sous VBA.
Cependant ne connaissant pas beaucoup cette implémentation , j'ai besoin de conseils.
En effet j'ai réussi à faire la liste pour la 1ere ligne cependant à chaque fois que je veux l'étendre il me met les mêmes résultats de la 1ère ligne. Or ce que je veux c'est que ces résultats ne soient pas indépendants de cette fameuse première ligne.
voici les codes
Pour la liste déroulante et le bouton commande:
Option Explicit
Private Sub CommandButton1_Click()
Dim i As Byte
Dim ValeurARetourner As String
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ValeurARetourner = ValeurARetourner & ListBox1.List(i) & " & "
End If
Next i
With Sheets("Plan d'action")
.Range("J2") = Left(ValeurARetourner, Len(ValeurARetourner) - 3)
.Range("K2").Activate
End With
UserForm1.Hide
Unload UserForm1
End Sub
Private Sub ListBox1_Click()
End Sub
Private Sub UserForm_Initialize()
Dim i As Integer, Derlig As Integer
ListBox1.Clear
With Sheets("Données")
Derlig = .Cells(65536, 6).End(xlUp).Row
For i = 2 To Derlig
ListBox1.AddItem .Cells(i, 6).Value
Next i
End With
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ListBox1.Selected(i) = False
End If
Next i
End Sub
Pour afficher la liste déroulante:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$J$2" Then
Target.Value = ""
Load UserForm1
UserForm1.Show
End If
End sub
Je vous remercie d'avance pour votre aide
cordialement
A voir également:
- Liste déroulante VBA
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
- Site dangereux liste - Guide
5 réponses
Bonjour,
Je ne connais pas assez le VBA pour te renseigner mais tu peux peut-être trouver des réponses sur
Cordialement
Je ne connais pas assez le VBA pour te renseigner mais tu peux peut-être trouver des réponses sur
ce lien
Cordialement
Bonjour savlynn,
Cela me semble plus clair en effet :D
Voici une proposition avec une variable publique nommée "Cible" qui représente la cellule sur laquelle l'opérateur effectue le double-clic.
J'ai limité la plage active à J2:J100. A toi de l'adapter si besoin.
https://www.cjoint.com/c/FKckg6xQQjT
A+
Cela me semble plus clair en effet :D
Voici une proposition avec une variable publique nommée "Cible" qui représente la cellule sur laquelle l'opérateur effectue le double-clic.
J'ai limité la plage active à J2:J100. A toi de l'adapter si besoin.
https://www.cjoint.com/c/FKckg6xQQjT
A+
Bonjour,
Il faudrait que tu donnes quelques éclaircissements sur ta demande :
"En effet j'ai réussi à faire la liste pour la 1ere ligne cependant à chaque fois que je veux l'étendre il me met les mêmes résultats de la 1ère ligne. Or ce que je veux c'est que ces résultats ne soient pas indépendants de cette fameuse première ligne."
Je n'ai rien compris !
La valeur à retourner est systématiquement placée dans 'Plan d'action'!J2 avec la ligne de code :
Est-ce que tu souhaites qu'à chaque sollicitation du bouton de commande les valeurs à ajouter viennent se placer les unes en dessous des autres (J3, J4, etc) ?
A+
Il faudrait que tu donnes quelques éclaircissements sur ta demande :
"En effet j'ai réussi à faire la liste pour la 1ere ligne cependant à chaque fois que je veux l'étendre il me met les mêmes résultats de la 1ère ligne. Or ce que je veux c'est que ces résultats ne soient pas indépendants de cette fameuse première ligne."
Je n'ai rien compris !
La valeur à retourner est systématiquement placée dans 'Plan d'action'!J2 avec la ligne de code :
With Sheets("Plan d'action")
.Range("J2") = Left(ValeurARetourner, Len(ValeurARetourner) - 3)
End With
Est-ce que tu souhaites qu'à chaque sollicitation du bouton de commande les valeurs à ajouter viennent se placer les unes en dessous des autres (J3, J4, etc) ?
A+
Bonjour PapyLuc51, Gyrus
Tout d'abord je vous remercie de vos réponses rapides.
Je vais regarder le lien et voir si je trouve la solution.
Concernant ta question Gyrus, en fait je veux que quand je sélectionne la cellule (J2) , une liste déroulante apparaît et une fois les critères validés s'affiche sur cette même cellule (J2) .
Ensuite quand je sélectionne la cellule d'en dessous (J3) , la même liste déroulante apparaît et une fois les critères validés s'affiche sur J3 et ainsi de suite.
Sachant que les résultat en J2 et J3 peuvent être différent.
J'espère que ma demande est plus claire
Cordialement
Tout d'abord je vous remercie de vos réponses rapides.
Je vais regarder le lien et voir si je trouve la solution.
Concernant ta question Gyrus, en fait je veux que quand je sélectionne la cellule (J2) , une liste déroulante apparaît et une fois les critères validés s'affiche sur cette même cellule (J2) .
Ensuite quand je sélectionne la cellule d'en dessous (J3) , la même liste déroulante apparaît et une fois les critères validés s'affiche sur J3 et ainsi de suite.
Sachant que les résultat en J2 et J3 peuvent être différent.
J'espère que ma demande est plus claire
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour Gyrus,
Ta proposition correspond parfaitement à ce que je veux, j'ai recopié tes codes dans mon fichier et tout fonctionne comme je le souhaite.
Plusieurs jours que je bloquai la dessus, je vais pouvoir passer à autre chose maintenant grâce a toi.
J'ai plus qu'à ajouter de la couleur pour rendre ca un peu plus gai.
Je te remercie encore pour ta réponse rapide et claire
Cordialement
Savlynn
Ta proposition correspond parfaitement à ce que je veux, j'ai recopié tes codes dans mon fichier et tout fonctionne comme je le souhaite.
Plusieurs jours que je bloquai la dessus, je vais pouvoir passer à autre chose maintenant grâce a toi.
J'ai plus qu'à ajouter de la couleur pour rendre ca un peu plus gai.
Je te remercie encore pour ta réponse rapide et claire
Cordialement
Savlynn