Gestion d'une ListBox

4 réponses
Avatar
JeanYvesGascon
Bonjour,

Dans un excel (2002&2003), je souhaiterais pouvoir alimenter un USF

1) que je charge depuis la feuiille "Formation"

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)

If Target.Column =3D 7 Then
F_RIF_1.Show
End If
Cancel =3D True
End Sub

Et" F_RIF" (USF) s'ouvre en =E9tant initialis=E9 ainsi

Private Sub UserForm_Initialize()

With ListBox1
.ColumnCount =3D 4
.ColumnWidths =3D "80;100;100;50"
.RowSource =3D "Transit_RdV_RIF!a2:d1000"
.MultiSelect =3D fmMultiSelectSingle
End With
End Sub

en chargeant les valeurs contenues dans la feuille "Transit_RdV_RIF"

Jusque l=E0, tout se d=E9roule comme pr=E9vu, sauf que, je n'ai besoin que
d'une part, des lignes dont la valeur est nulle (=3D " ") de la colonne
A (date)
d'autre part, des valeurs des colonnes B (Noms), C (Pr=E9noms) & D (N=B0
de T=E9l).

en vue d'une s=E9lection pour alimenter la feuille "Formation" qui est
ma cellule active du d=E9part
afin de r=E9cup=E9rer le nom, Pr=E9nom et le N=B0 de T=E9l.

L=E0 je s=E8che ..... comme une =E9toile =E0 mar=E9e basse

Merci de vos =E9clairages

Cordialement

JeanYves

4 réponses

Avatar
LSteph
Bonjour,

A adapter ceci sans doute:

Private Sub UserForm_Initialize()
Dim c As Range, i As Long, j As Integer
With ListBox1
.ColumnCount = 4
.ColumnWidths = "80;100;100;50"

.MultiSelect = fmMultiSelectSingle
End With

For Each c In Range("A2:A" & [b65536].End(xlUp).Row).Cells
If IsEmpty(c) Then

ListBox1.AddItem c
For j = 1 To 3
ListBox1.List(i, j) = c.Offset(0, j)
Next j

i = i + 1
End If
Next c

End Sub

'LSteph


On Nov 3, 6:41 pm, JeanYvesGascon wrote:
Bonjour,

Dans un excel (2002&2003), je souhaiterais pouvoir alimenter un USF

1) que je charge depuis la feuiille "Formation"

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)

        If Target.Column = 7 Then
            F_RIF_1.Show
        End If
        Cancel = True
End Sub

Et" F_RIF" (USF) s'ouvre en étant initialisé ainsi

Private Sub UserForm_Initialize()

    With ListBox1
        .ColumnCount = 4
        .ColumnWidths = "80;100;100;50"
        .RowSource = "Transit_RdV_RIF!a2:d1000"
        .MultiSelect = fmMultiSelectSingle
    End With
End Sub

en chargeant les valeurs contenues dans la feuille "Transit_RdV_RIF"

Jusque là, tout se déroule comme prévu, sauf que, je n'ai besoin qu e
d'une part, des lignes dont la valeur est nulle (= " ") de la colonne
A (date)
d'autre part, des valeurs des colonnes B (Noms), C (Prénoms) & D (N°
de Tél).

en vue d'une sélection pour alimenter la feuille "Formation" qui est
ma cellule active du départ
afin de récupérer le nom, Prénom et le N° de Tél.

Là je sèche ..... comme une étoile à marée basse

Merci de vos éclairages

Cordialement

JeanYves
Avatar
JeanYvesGascon
On 4 nov, 11:14, LSteph wrote:
Bonjour,

A adapter ceci sans doute:

Private Sub UserForm_Initialize()
Dim c As Range, i As Long, j As Integer
    With ListBox1
        .ColumnCount = 4
        .ColumnWidths = "80;100;100;50"

        .MultiSelect = fmMultiSelectSingle
    End With

    For Each c In Range("A2:A" & [b65536].End(xlUp).Row).Cells
    If IsEmpty(c) Then

       ListBox1.AddItem c
       For j = 1 To 3
       ListBox1.List(i, j) = c.Offset(0, j)
       Next j

       i = i + 1
    End If
    Next c

End Sub

'LSteph

On Nov 3, 6:41 pm, JeanYvesGascon wrote:







> Bonjour,

> Dans un excel (2002&2003), je souhaiterais pouvoir alimenter un USF

> 1) que je charge depuis la feuiille "Formation"

> Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
> As Boolean)

>         If Target.Column = 7 Then
>             F_RIF_1.Show
>         End If
>         Cancel = True
> End Sub

> Et" F_RIF" (USF) s'ouvre en étant initialisé ainsi

> Private Sub UserForm_Initialize()

>     With ListBox1
>         .ColumnCount = 4
>         .ColumnWidths = "80;100;100;50"
>         .RowSource = "Transit_RdV_RIF!a2:d1000"
>         .MultiSelect = fmMultiSelectSingle
>     End With
> End Sub

> en chargeant les valeurs contenues dans la feuille "Transit_RdV_RIF"

> Jusque là, tout se déroule comme prévu, sauf que, je n'ai besoin que
> d'une part, des lignes dont la valeur est nulle (= " ") de la colonne
> A (date)
> d'autre part, des valeurs des colonnes B (Noms), C (Prénoms) & D (N °
> de Tél).

> en vue d'une sélection pour alimenter la feuille "Formation" qui est
> ma cellule active du départ
> afin de récupérer le nom, Prénom et le N° de Tél.

> Là je sèche ..... comme une étoile à marée basse

> Merci de vos éclairages

> Cordialement

> JeanYves



Stéphane,

Je ne sais comment te remercier pour ton éclairage salvateur
Ai eu juste à oter le rowsource et préciser l'onglet
For Each c In Range("Transit_RdV_RIF!A2:A" &
[b65536].End(xlUp).Row).Cells

voici ce que cela donne

Private Sub UserForm_Initialize()

Dim c As Range
Dim i As Long
Dim j As Integer

With ListBox1
.ColumnCount = 4
.ColumnWidths = "80;100;100;50"
.MultiSelect = fmMultiSelectSingle
End With

For Each c In Range("Transit_RdV_RIF!A2:A" &
[b65536].End(xlUp).Row).Cells
If IsEmpty(c) Then
ListBox1.AddItem c
For j = 1 To 3
ListBox1.List(i, j) = c.Offset(0, j)
Next j
i = i + 1
End If
Next c
End Sub

Maintenant de souhaiterai pouvoir copier les valeurs selectionnées
la première dans la cellule active (qui me sert à appeler le
formulaire par un double click)
la deuxième décalée à droite ( ActiveCell.Offset(,1), je pense)
et la troisième décalée de deux crans à droite (ActiveCell.Offset(, 2),
je crois)

Sans vouloir abuser

Très cordialement

Jean-Yves
Avatar
MichD
Bonjour,

Procédure dans le formulaire :

'-----------------------
Sub Test()
Dim A As Long, B As Long
Application.EnableEvents = False
With Me.ListBox1
For A = 0 To .ListCount - 1
If .Selected(A) = True Then
ActiveCell.Offset(B).Resize(1, 3) = _
Range(.RowSource).Rows(A + 1).Value
B = B + 1
End If
Next
End With
Application.EnableEvents = True
End Sub
'-----------------------


MichD
------------------------------------------
"JeanYvesGascon" a écrit dans le message de groupe de discussion :


On 4 nov, 11:14, LSteph wrote:
Bonjour,

A adapter ceci sans doute:

Private Sub UserForm_Initialize()
Dim c As Range, i As Long, j As Integer
With ListBox1
.ColumnCount = 4
.ColumnWidths = "80;100;100;50"

.MultiSelect = fmMultiSelectSingle
End With

For Each c In Range("A2:A" & [b65536].End(xlUp).Row).Cells
If IsEmpty(c) Then

ListBox1.AddItem c
For j = 1 To 3
ListBox1.List(i, j) = c.Offset(0, j)
Next j

i = i + 1
End If
Next c

End Sub

'LSteph

On Nov 3, 6:41 pm, JeanYvesGascon wrote:







> Bonjour,

> Dans un excel (2002&2003), je souhaiterais pouvoir alimenter un USF

> 1) que je charge depuis la feuiille "Formation"

> Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
> As Boolean)

> If Target.Column = 7 Then
> F_RIF_1.Show
> End If
> Cancel = True
> End Sub

> Et" F_RIF" (USF) s'ouvre en étant initialisé ainsi

> Private Sub UserForm_Initialize()

> With ListBox1
> .ColumnCount = 4
> .ColumnWidths = "80;100;100;50"
> .RowSource = "Transit_RdV_RIF!a2:d1000"
> .MultiSelect = fmMultiSelectSingle
> End With
> End Sub

> en chargeant les valeurs contenues dans la feuille "Transit_RdV_RIF"

> Jusque là, tout se déroule comme prévu, sauf que, je n'ai besoin que
> d'une part, des lignes dont la valeur est nulle (= " ") de la colonne
> A (date)
> d'autre part, des valeurs des colonnes B (Noms), C (Prénoms) & D (N°
> de Tél).

> en vue d'une sélection pour alimenter la feuille "Formation" qui est
> ma cellule active du départ
> afin de récupérer le nom, Prénom et le N° de Tél.

> Là je sèche ..... comme une étoile à marée basse

> Merci de vos éclairages

> Cordialement

> JeanYves



Stéphane,

Je ne sais comment te remercier pour ton éclairage salvateur
Ai eu juste à oter le rowsource et préciser l'onglet
For Each c In Range("Transit_RdV_RIF!A2:A" &
[b65536].End(xlUp).Row).Cells

voici ce que cela donne

Private Sub UserForm_Initialize()

Dim c As Range
Dim i As Long
Dim j As Integer

With ListBox1
.ColumnCount = 4
.ColumnWidths = "80;100;100;50"
.MultiSelect = fmMultiSelectSingle
End With

For Each c In Range("Transit_RdV_RIF!A2:A" &
[b65536].End(xlUp).Row).Cells
If IsEmpty(c) Then
ListBox1.AddItem c
For j = 1 To 3
ListBox1.List(i, j) = c.Offset(0, j)
Next j
i = i + 1
End If
Next c
End Sub

Maintenant de souhaiterai pouvoir copier les valeurs selectionnées
la première dans la cellule active (qui me sert à appeler le
formulaire par un double click)
la deuxième décalée à droite ( ActiveCell.Offset(,1), je pense)
et la troisième décalée de deux crans à droite (ActiveCell.Offset(,2),
je crois)

Sans vouloir abuser

Très cordialement

Jean-Yves
Avatar
JeanYvesGascon
On 5 nov, 01:41, "MichD" wrote:
Bonjour,

Procédure dans le formulaire :

'-----------------------
Sub Test()
Dim A As Long, B As Long
Application.EnableEvents = False
With Me.ListBox1
    For A = 0 To .ListCount - 1
        If .Selected(A) = True Then
            ActiveCell.Offset(B).Resize(1, 3) = _
                Range(.RowSource).Rows(A + 1).Value
            B = B + 1
        End If
    Next
End With
Application.EnableEvents = True
End Sub
'-----------------------

MichD
------------------------------------------
"JeanYvesGascon"  a écrit dans le message de groupe de discussion :


On 4 nov, 11:14, LSteph wrote:









> Bonjour,

> A adapter ceci sans doute:

> Private Sub UserForm_Initialize()
> Dim c As Range, i As Long, j As Integer
>     With ListBox1
>         .ColumnCount = 4
>         .ColumnWidths = "80;100;100;50"

>         .MultiSelect = fmMultiSelectSingle
>     End With

>     For Each c In Range("A2:A" & [b65536].End(xlUp).Row).Cells
>     If IsEmpty(c) Then

>        ListBox1.AddItem c
>        For j = 1 To 3
>        ListBox1.List(i, j) = c.Offset(0, j)
>        Next j

>        i = i + 1
>     End If
>     Next c

> End Sub

> 'LSteph

> On Nov 3, 6:41 pm, JeanYvesGascon wrote:

> > Bonjour,

> > Dans un excel (2002&2003), je souhaiterais pouvoir alimenter un USF

> > 1) que je charge depuis la feuiille "Formation"

> > Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
> > As Boolean)

> >         If Target.Column = 7 Then
> >             F_RIF_1.Show
> >         End If
> >         Cancel = True
> > End Sub

> > Et" F_RIF" (USF) s'ouvre en étant initialisé ainsi

> > Private Sub UserForm_Initialize()

> >     With ListBox1
> >         .ColumnCount = 4
> >         .ColumnWidths = "80;100;100;50"
> >         .RowSource = "Transit_RdV_RIF!a2:d1000"
> >         .MultiSelect = fmMultiSelectSingle
> >     End With
> > End Sub

> > en chargeant les valeurs contenues dans la feuille "Transit_RdV_RIF"

> > Jusque là, tout se déroule comme prévu, sauf que, je n'ai besoi n que
> > d'une part, des lignes dont la valeur est nulle (= " ") de la colon ne
> > A (date)
> > d'autre part, des valeurs des colonnes B (Noms), C (Prénoms) & D (N °
> > de Tél).

> > en vue d'une sélection pour alimenter la feuille "Formation" qui es t
> > ma cellule active du départ
> > afin de récupérer le nom, Prénom et le N° de Tél.

> > Là je sèche ..... comme une étoile à marée basse

> > Merci de vos éclairages

> > Cordialement

> > JeanYves

Stéphane,

Je ne sais comment te remercier pour ton éclairage salvateur
Ai eu juste à oter le rowsource et préciser l'onglet
For Each c In Range("Transit_RdV_RIF!A2:A" &
[b65536].End(xlUp).Row).Cells

voici ce que cela donne

Private Sub UserForm_Initialize()

    Dim c As Range
    Dim i As Long
    Dim j As Integer

    With ListBox1
        .ColumnCount = 4
        .ColumnWidths = "80;100;100;50"
        .MultiSelect = fmMultiSelectSingle
    End With

    For Each c In Range("Transit_RdV_RIF!A2:A" &
[b65536].End(xlUp).Row).Cells
        If IsEmpty(c) Then
                ListBox1.AddItem c
            For j = 1 To 3
                ListBox1.List(i, j) = c.Offset(0, j)
            Next j
            i = i + 1
        End If
    Next c
End Sub

Maintenant de souhaiterai pouvoir copier les valeurs selectionnées
la première dans la cellule active (qui me sert à appeler le
formulaire par un double click)
la deuxième décalée à droite ( ActiveCell.Offset(,1), je pense)
et la troisième décalée de deux crans à droite (ActiveCell.Offset (,2),
je crois)

Sans vouloir abuser

Très cordialement

Jean-Yves



merci pour tout

finalement j'aborde les choses différement que j'exposerai
ulterieurement.

JY