Liste déroulante choix multiple (VBA)

missdidy86

XLDnaute Nouveau
Bonjour à tous,

J'ai un tableau excel que je dois faire pour le travail et j'aurai quelques soucis avec vba que je ne connais pas du tout... :(

Sur mon tableau, j'ai une feuille avec sur une colonne une liste de maçons et sur une autre j'ai par exemple "Soumissionnaire maçonnerie". Dans la colonne "Soumissionnaire maçonnerie", j'aimerai qu'en double-cliquant sur la cellule, j'ai ma liste de maçons et que je puisse en sélectionner plusieurs. Chose que j'ai réussi à faire après des heures passées. Le problème suivant, pour chaque sélection, je voulais qu'il y ait un retour à la ligne, j'y ai réussi à moitié... j'ai utilisé la commande & vbNewLine & vbNewLine il me met une ligne vide entre deux. Car si je mets que & vbNewLine il me manque chaque fois une lettre à la fin.. je ne sais pas pourquoi... je vous montrerai mon code ci-dessous.

Ce que j'aimerai faire maintenant, c'est passer ma liste de maçons qui se trouve sur la même feuille sur une autre feuille... car là je l'ai mise sur une autre colonne comme noté ci-dessus car je ne sais pas comment faire autrement avec les codes vba...
J'aimerai aussi répéter mon code vba sur toute une colonne, ma colonne en question et la "I"

Voici le code de mon userform :


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) & vbNewLine & vbNewLine
End If
Next i
With Sheets("Feuil1")
.Range("I2") = Left(ValeurARetourner, Len(ValeurARetourner) - 3)
.Range("I3").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

Derlig = Sheets("Feuil1").Cells(65536, 19).End(xlUp).Row
For i = 1 To Derlig
ListBox1.AddItem Cells(i, 19).Value
Next i
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ListBox1.Selected(i) = False
End If
Next i
End Sub

et le code de ma feuil1 :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$I$2" Then
Target.Value = ""
Load UserForm1
UserForm1.Show
End If
End Sub

Si quelqu'un peut m'aider ?

J'espère avoir été claire. Comme c'est un fichier pour le travail, je ne peux malheureusement pas vous mettre les données du tableau pour exemple.

En fichier joint, voici mon tableau vide.

Un grand merci d'avance.
 

Pièces jointes

  • tableau excel.jpg
    tableau excel.jpg
    56.8 KB · Affichages: 988
  • tableau excel.jpg
    tableau excel.jpg
    56.8 KB · Affichages: 920
  • tableau excel.jpg
    tableau excel.jpg
    56.8 KB · Affichages: 994
Dernière édition:

Robert

XLDnaute Barbatruc
Re : Liste déroulante choix multiple (VBA)

Bonjour Missdidy et bienvenue, bonjour le forum,

Comme tu es nouvelle ici je te recommande vivement de lire la
Lien supprimé du forum qui donne tous les bons plans pour obtenir de l'aide rapidement. Dans ton cas, ce qui manque, c'est un fichier exemple pour que l'on puisse faire tourner tes codes et peut-être trouver une solution...
 

Robert

XLDnaute Barbatruc
Re : Liste déroulante choix multiple (VBA)

Bonjour MissDidy, bonjour le forum,

Ton code modifié :
Code:
Option Explicit

Private Sub UserForm_Initialize()
Dim Derlig As Integer

With Sheets("Feuil1")
    Derlig = .Cells(Application.Rows.Count, 19).End(xlUp).Row
    ListBox1.List = .Range("S1:S" & Derlig).Value
End With
End Sub


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 = IIf(ValeurARetourner = "", ListBox1.List(i), ValeurARetourner & "," & ListBox1.List(i))
    End If
Next i
With Sheets("Feuil1")
    .Range("I2") = Replace(ValeurARetourner, ",", vbNewLine & vbNewLine)
    .Range("I3").Activate
End With
Unload UserForm1
End Sub
 

Robert

XLDnaute Barbatruc
Re : Liste déroulante choix multiple (VBA)

Bonjour MissDidy, bonjour le forum,

Ce code concerne le retour à la ligne ?
Comment est-ce que je dois faire pour répéter mon userform sur toute la colonne ?
En fait j'ai modifié le code d'initialisation de l'UserForm en lui enlevant les lignes inutiles. Le code qui concerne le retour à la ligne se trouve dans le clic du CommandButton1.
Pour avoir l'Userform sur toutes les lignes de la colonne I (à placer dans l'onglet où tu veux que ça agisse) :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 9 Or Target.Row < 2 Then Exit Sub 'si le double-clic a lieu ailleurs que dans la colonne 9 (= I) ou dans la ligne 1, sort de la procédure
Cancel = True 'évite le mode édition lié au double-clic
Target.Value = "" 'vide la cellule double-cliquée
UserForm1.Show 'affiche l'UserForm1
End Sub
 

Maud44

XLDnaute Junior
Re : Liste déroulante choix multiple (VBA)

Bonjour quel code puis-je faire pour pouvoir sélectionner dans une liste déroulante plusieurs personnes a la fois ?
Sur ce fichier par exemple : feuille 3 : liste des agents qui apparait dans feuille 1 en E2 avec la liste des agents en cochant plusieurs agents ...
 

Pièces jointes

  • Classeur diffusionV2.xlsx
    30.1 KB · Affichages: 228
  • Classeur diffusionV2.xlsx
    30.1 KB · Affichages: 263
  • Classeur diffusionV2.xlsx
    30.1 KB · Affichages: 291

Discussions similaires

Statistiques des forums

Discussions
298 001
Messages
1 965 034
Membres
200 810
dernier inscrit
lejibe