Multiselect listbox répartir dans différentes colonnes
Bonjour à tous,
Je suis nouveau sur ce forum et novice en VBA.
J'ai un problème que je n'arrive pas à résoudre, est-ce que l'un d'entre vous saurait m'aider, s'il vous plait ?
J'ai un fichier excel avec une listbox multiselection avec une limite de 10 item sélectionnable (si plus de 10 items sélectionnées, un message d'erreur apparaît). Sachant que ma listbox apparaît lorsque je clique sur les cellules comprise entre B2:K3000 (Voir fichier ci-joint)
J'aimerais faire en sorte de répartir mes items sélectionnées dans des colonnes différentes.
- -> Si j'ouvre ma listbox en cliquant sur la ligne 2, faire en sorte que mon item 1 se retrouve dans la cellule B2, mon item 2 dans la colonne C2,...
- -> Si j'ouvre ma listbox en cliquant sur la ligne 3, faire en sorte que mon item 1 se retrouve dans la cellule B3, mon item 2 dans la colonne C3,...
L'un d'entre vous saurait-il m'aider, s'il vous plait ?
Par avance, merci de votre aide.
Cordialement,
Loïs
Bonjour,
Règle 1 - Indenter son code...
Règle 2 - Déclarer ses variables, toutes, toujours, en tête de procédure...
Les autres attendront un peu !
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("B2:K3000")) Is Nothing Then
Cancel = True
With UserForm1
.lgn = Target.Row
.Show
End With
End If
End SubCe que j'ai supprimé n'avait pas d'utilité (même sans déclencher d'erreur). Ce que j'ai ajouté est nécessaire.
Public lgn As Integer
Private Sub CommandButton1_Click()
Dim a, i%
With Me.ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then a = a & "|" & .List(i)
Next i
a = Split(a, "|")
If UBound(a) > 10 Then
MsgBox "Vous ne pouvez pas sélectionner plus de 10 phrases de risque", vbInformation, _
"Sélections trop nombreuses"
Exit Sub
End If
End With
With ActiveSheet
For i = 1 To UBound(a)
.Cells(lgn, i + 1) = a(i)
Next i
End With
Unload Me
End SubCordialement.
Bonjour MFerrand,
Désolé de ne réagir que maintenant (Pas de connexion internet chez mon grand père)
Merci beaucoup pour la rapidité de ta réponse, cela me semble correspondre parfaitement à mon besoin.
Juste une dernière petite question, saurais tu m'indiquer sur quel paramètre de ton code influer pour que les données s'affichent dans d'autres colonnes ?
J'ai besoin de créer plusieurs listbox du même type pour renseigner différentes colonnes de mon tableau.
Imaginons que je souhaites renseigner en plus les colonnes de Q2:Z3000. Dans ton code, je n'arrive pas à trouver à quoi toucher.
En tout cas, merci encore pour ton aide inestimable.
Bonne journée et bonne fêtes de fin d'année.
Cordialement,
Loïs
Rebonjour MFerrand,
C'est bon j'ai trouvé la solution à ma question. A la fin de ton code, il suffit de jouer sur le chiffre du ".Cells(lgn, i + 1) = a(i)"
Ex : Pour que ces données se retrouvent dans la cellule Q, il suffit d'indiquer ".Cells(lgn, i + 16) = a(i)"
En tout cas, merci encore pour ton aide.
Cordialement,
Loïs
Bonjour,
Une commande d'affectation à Excel implique toujours une expression du type : plage = ...
Si tu as d'autres éléments à affecter, il faut sans doute revoir l'ensemble de la procédure.
Cordialement.