Changer la valeur d'une cellule a partir d une listbox

Hello petit blocage dans mon projet vba conernant l'objet listbox de mon userform:

J'initialise l'ensemble des valeurs situe dans le range B2:B400 de mon tableau excel dans ma listbox en veillant a supprimer les doulons comme ceci

Private Sub UserForm_Activate()

Dim Cell As Range

Dim Unique As New Collection

Dim Valeur As Range

Dim i As Integer

i = Range("B500").End(xlUp).Row

On Error Resume Next

For Each Cell In Range("B2:B" & i)

Unique.Add Cell, CStr(Cell)

Next Cell

On Error GoTo 0

For Each Valeur In Unique

Me.ListBox1.AddItem Valeur

Next Valeur

End Sub

Jusqu'ici tout va bien,

Mais, une fois les valeurs de la colonne B initialiser dans ma listbox je souhaite desormais pouvoir selectionner une ou plusieurs valeur dans cette liste, puis cliquer sur un bouton de commande qui va detecter les valeurs selectionner dans mon tableaux excel et pour chaque ligne ou ses valeurs sont presentes alors modifier le resultat de la cellule en colonne D par exemple :

voici mon code mais forcement ca ne marche pas :

Private Sub CommandButton1_Click()

Dim B as range

Dim D as range

Dim i as integer

Set B = Worksheets("Sheet1").Range("B2:B400")

Set D = Worksheets("Sheet1").Range("D2:D400")

For i = 1 To 400

If ListBox1.Selected(i) = B.Cells(i).value Then

D.Cells(i).Value = 3+2

End If

Next i

Unload Me

End Sub

Pouvez vous me dire ce qui cloche dans mon code et comment egalement faire une selection multiple dans ma list box svp ?

Merci d'avance

Hugo

Bonjour,

Essaie comme cela

Private Sub CommandButton1_Click()
Dim B As Range
Dim i As Integer
    With Worksheets("Sheet1")
        Set B = .Range("B2", .Range("B" & Rows.Count).End(xlUp))
        For i = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(i) = True Then
                B.Find(Me.ListBox1.List(i), , xlValues, xlWhole).Offset(, 2) = 3 + 2
            End If
        Next i
    End With
    Unload Me
End Sub

Pour autoriser la multisélection dans une Listbox, tu dois indiquer 1_fmMultiSelectMulti dans la propriété "Multiselect" de la Listbox.

A+

Merci pour ta reponse,

Cependant la colonne D etait un exemple en soit pour mon projet j'aurais besoin que pour chaque valeur de la colonne B qui match avec les valeur selectionner faire un calcul qui reprend plusieurs donne du tableaux et les afficher dans une autre colonne c est pourquoi la propriete offset ne m'arrange pas lol pour etre plus clair voice mon code:

Dim A As Range

Dim B As Range

Dim C As Range

Dim D As Range

Dim E As Range

Dim F As Range

Dim G As Range

Dim i as integer

Set A = Worksheets("Sheet1").Range("A2:A400")

Set B = Worksheets("Sheet1").Range("B2:B400")

Set C = Worksheets("Sheet1").Range("C2:C400")

Set D = Worksheets("Sheet1").Range("D2:D400")

Set E = Worksheets("Sheet1").Range("E2:E400")

Set F = Worksheets("Sheet1").Range("F2:F400")

Set G = Worksheets("Sheet1").Range("G2:G400")

For i = 1 To ListBox1.ListCount - 1

If CheckBox1.Value = True And ListBox1.Selected(i) = True Then

B.Find(Me.ListBox1.List(i), , xlValues, xlWhole).Select

A.Cells(i).Value = D.Cells(i).Value + E.Cells(i).Value + F.Cells(i).Value

If Abs(D.Cells(i).Value) <= (3 / 100) Then G.Cells(i).Value = Round((10 / 100) * (A.Cells(i).Value -C.Cells(i).Value), 0)

End If

Next i

Unload Me

Ainsi je souhaites appliquer ce calcul uniquement aux valeurs selectionner dans ma list box qui match avec les valeurs situe en colonne B

Pouvez vous m'aider svp

Tu n'as pas besoin de déclarer les plages A, C,D, etc.

Tu peux rechercher la cellule correspondant à l'éléments de la liste :

Set C=B.Find(Me.ListBox1.List(i), , xlValues, xlWhole)

puis effectuer les calculs avec cette cellule de référence.

C.offset(,-1)=C.offset(,2).Value+C.offset(,3).Value+C.offset(,4).Value

A+

Rechercher des sujets similaires à "changer valeur partir listbox"