Selection Listbox
bonjour
si quel qu 'un peut m'aider a résoudre mon problème.
voila j'une liste box multiselect qui contient 8 colonne est alimenter par un bouton commande
j'aimerai si la ligne sélectionner contient une valeur "C_D" on vas exécuter une macro si contient "C_V" on n' exécute pas la macro
la valeur ce trouve dans la colonne 8 de liste box
voici le code que j'ai mais tjrs il exécute la macro
For i = N_select - 1 To 0 Step -1
If L_CONSO_2.List(i, 8) = "C_D" Then
Call Model_2
End If
Next i
j’espère que jetai clair dans mon explication merci d'avance
Slt,
essaie comme ca:
For i = N_select - 1 To 0 Step -1
If L_CONSO_2.List(i, 8).value = "C_D" Then
Call Model_2
End If
Next i
Bonjour,
Il te faut tester si la ligne est sélectionnée avec de tester si la colonne contient la valeur. Attention, la base des index est 0 et non 1 pour les lignes et colonnes donc L_CONSO_2.List(0, 0) retourne la valeur la plus en haute et à gauche (comme par exemple en A1) et par là, L_CONSO_2.List(L_CONSO_2.ListCount - 1, L_CONSO_2.ColumnCount - 1) retourne la valeur la plus en bas et à droite.
Voici un code qui fonctionne et qu'il ne te reste plus qu'à adapter à tes besoins :
Private Sub CommandButton1_Click()
Dim I As Integer
'attention, la base des colonnes comme des lignes est 0 et non 1 donc, décalage (7 pour huitième colonne)
For I = L_CONSO_2.ListCount - 1 To 0 Step -1
If L_CONSO_2.Selected(I) Then
Select Case L_CONSO_2.List(I, 7)
Case "C_D": Model_1 I
Case "C_V": Model_2 I
End Select
End If
Next I
End Sub
Sub Model_1(J As Integer)
'affiche la valeur de la colonne 2
MsgBox "La valeur " & L_CONSO_2.List(J, 1) & " a été sélectionnée !"
End Sub
Sub Model_2(J As Integer)
'affiche la valeur de la colonne 4
MsgBox "La valeur " & L_CONSO_2.List(J, 3) & " a été sélectionnée !"
End Sub
Salut
Merci m3ellem1 , Theze
J'ai essayer vos Code mais j'ai pas réussi a les faire fonction tjr la macro s’exécute
bref je crois que j'ai mal explique mon problème voici une partie de mon projet ou je bloque
vos trouveriez ci joint mon fichier
ce que je veux si quand je sélectionne une ligne ou plusieurs et l'une de ligne sectionner contient "C_D" ben on exécute une macro si les ligne sectionne ne contient pas "C_D" ben on n’exécute pas la macro
Merci
- Messages
- 2'415
- Excel
- 2019
- Inscrit
- 13/07/2017
- Emploi
- Formateur, animateur,tech.informatique
Bonjour toutes et tous
ci-joint,
macro ne s’exécute plus au démarrage de ton workbook
crdlt,
André
Merci r Andre13 pour to implication, mais le blem si pas excution de usf que je veux eliminer
si tu peux lire le code vba de l'application tu trouveras une macro appelé Sub Model_2
si cette dernier que veux l’exécuter en cas ou je sélectionne dans la listbox des item qui contient la valeur "C_D"
si des items sélectionne contient C_D ET C_V BEN la macro s"exécute automatiquement
si des les ligne sélectionne ne contient pas la valeur C_D BEN LA MACRO NE s’exécute pas tt simplement
merci a vous
Bonjour,
je t'ai déjà donné la solution qu'il te faut juste adapter !
Attaches le code ci-dessous au bouton souhaité :
Dim I As Integer
'attention, la base des colonnes comme des lignes est 0 et non 1 donc, décalage (7 pour huitième colonne)
For I = L_CONSO_2.ListCount - 1 To 0 Step -1
If L_CONSO_2.Selected(I) Then
Select Case L_CONSO_2.List(I, 7)
Case "C_D", "C_V": Model_2
End Select
End If
Next I
Tu devrais indenter ton code de cette façon par exemple car c'est un peu "fouilli" :
Sub Model_2()
With C_ARCH
.Range("A21:H21").Merge
.Range("D22:E22").Merge
.Range("D23:E23").Merge
.Range("D24:E24").Merge
.Range("D25:E25").Merge
With Range("A21:H21").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.599993896298105
.PatternTintAndShade = 0
End With
With Range("A21:H22")
.Font.Size = 14
.Font.Bold = True
.Borders(xlEdgeTop).LineStyle = xlDouble
.Borders(xlEdgeBottom).LineStyle = xlDouble
.Borders(xlInsideVertical).LineStyle = xlDouble
.Borders(xlEdgeTop).Weight = xlThick
End With
.Range("A21") = "Consommation Divers"
.Range("A22") = "N°"
.Range("A23") = "01"
.Range("A24") = "02"
.Range("A25") = "03"
.Range("B22") = "Demandeur"
.Range("C22") = "Structure"
.Range("D22") = "Document"
.Range("G22") = "Nbr Bon"
.Range("F22") = "/"
.Range("H22") = "Obs"
End With
End Sub
Salut Theze
dommage ca pas marche encore
je vais encore essayer demain
bonne soiré
Bonjour,
Passe la valeur de colonne de la ListBox de 7 à 8 dans le bloc "Select Case" :
Select Case L_CONSO_2.List(I, 8) '8 au lieu de 7
Salut theze
ca marche mtn le problème était plus haut dans le code
voici le code qui était au début et si pour que ca pas marche .
For I= N_select - 1 To 0 Step -1
If L_CONSO_2.Selected( I) = True Then
Me.L_CONSO_2.RemoveItem I
End If
Next I
For I = L_CONSO_2.ListCount - 1 To 0 Step -1
If L_CONSO_2.Selected(I) Then
Select Case L_CONSO_2.List(I, 8)
Case "C_D": Model_2
End Select
End If
Next I
je l'ai change comme ca et hop impeccable tout semble en marche
If L_CONSO_2.Selected(I) Then
Select Case L_CONSO_2.List(I, 8)
Case "C_D": Model_2
End Select
End If
Next I
For I= N_select - 1 To 0 Step -1
If L_CONSO_2.Selected( I) = True Then
Me.L_CONSO_2.RemoveItem I
End If
Next I
Merci theze pour votre aide........