OVH Cloud OVH Cloud

Problème de listindex .List = myArray

3 réponses
Avatar
Alain
Bonjour,
voilà je réitère ma demande, car j'ai oublié de préciser que lorsque je
filtre sur ma feuille, cela fonctionne très bien, en revanche, quand je
passe par un listbox, cela fonctionne très bien, sauf lorsqu'il y a un seul
enregistrement.
il me dit erreur d'exécution 381.Impossible de définir la propriété
List.index de table de propriété non valide.
cela plante au niveau de .List = myArray
Merci
Alain

Sheets("Tableau").Select
Range("A1:M400").Select
Selection.AutoFilter Field:=2, Criteria1:=Label9
myArray =
Sheets("Tableau").Range("C2:C300").SpecialCells(xlCellTypeVisible).Value
With Me.ListBox1
.List = myArray
End With

3 réponses

Avatar
michdenis
Bonjour Alain,

La propriété List de l'objet ListBox requiert non pas une valeur d'une cellule mais un tableau. Ce tableau peut être
d'une dimension ou de 2 dimensions. La valeur d'une seule cellule ne peut être considéré comme un tableau. De plus, pour
pouvoir utiliser le type de procédure que tu soumets, il faudrait que la plage de résultat du filtre automatique soit en
continue C2:C6 ...et non (C2,C4,C6) et le résultat du filtre automatique ne peut pas garantir que tu obtiendras
toujours une plage de cellules en continu. Je suppose donc que la procédure doit se planter même si tu as plus d'un
enregistrement comme résultat de ton filtre. Il s'agit simplement qu'au moins une cellule ne soit pas en continu dans la
plage de résultat.


Tu pourrais plutôt utiliser quelque chose dans le genre :
'---------------------------
Dim Rg As Range

'Ligne de code de ton filtre automatique ...

On Error Resume Next
Set Rg = Range("A1:A10").SpecialCells(xlCellTypeConstants)
If Not Rg Is Nothing Then
With Me.ListBox1
.Clear
For Each c In Rg
.AddItem c.Value
Next
End With
Else
On Error GoTo 0
MsgBox "Aucun enregistrement de trouvé !"
End If
'---------------------------



Salutations!






"Alain" a écrit dans le message de news:
Bonjour,
voilà je réitère ma demande, car j'ai oublié de préciser que lorsque je
filtre sur ma feuille, cela fonctionne très bien, en revanche, quand je
passe par un listbox, cela fonctionne très bien, sauf lorsqu'il y a un seul
enregistrement.
il me dit erreur d'exécution 381.Impossible de définir la propriété
List.index de table de propriété non valide.
cela plante au niveau de .List = myArray
Merci
Alain

Sheets("Tableau").Select
Range("A1:M400").Select
Selection.AutoFilter Field:=2, Criteria1:=Label9
myArray Sheets("Tableau").Range("C2:C300").SpecialCells(xlCellTypeVisible).Value
With Me.ListBox1
.List = myArray
End With
Avatar
Alain
Merci Denis, je teste et te réponds
Alain

"michdenis" a écrit dans le message de
news:O%
Bonjour Alain,

La propriété List de l'objet ListBox requiert non pas une valeur d'une
cellule mais un tableau. Ce tableau peut être

d'une dimension ou de 2 dimensions. La valeur d'une seule cellule ne peut
être considéré comme un tableau. De plus, pour

pouvoir utiliser le type de procédure que tu soumets, il faudrait que la
plage de résultat du filtre automatique soit en

continue C2:C6 ...et non (C2,C4,C6) et le résultat du filtre automatique
ne peut pas garantir que tu obtiendras

toujours une plage de cellules en continu. Je suppose donc que la
procédure doit se planter même si tu as plus d'un

enregistrement comme résultat de ton filtre. Il s'agit simplement qu'au
moins une cellule ne soit pas en continu dans la

plage de résultat.


Tu pourrais plutôt utiliser quelque chose dans le genre :
'---------------------------
Dim Rg As Range

'Ligne de code de ton filtre automatique ...

On Error Resume Next
Set Rg = Range("A1:A10").SpecialCells(xlCellTypeConstants)
If Not Rg Is Nothing Then
With Me.ListBox1
.Clear
For Each c In Rg
.AddItem c.Value
Next
End With
Else
On Error GoTo 0
MsgBox "Aucun enregistrement de trouvé !"
End If
'---------------------------



Salutations!






"Alain" a écrit dans le message de
news:

Bonjour,
voilà je réitère ma demande, car j'ai oublié de préciser que lorsque je
filtre sur ma feuille, cela fonctionne très bien, en revanche, quand je
passe par un listbox, cela fonctionne très bien, sauf lorsqu'il y a un
seul

enregistrement.
il me dit erreur d'exécution 381.Impossible de définir la propriété
List.index de table de propriété non valide.
cela plante au niveau de .List = myArray
Merci
Alain

Sheets("Tableau").Select
Range("A1:M400").Select
Selection.AutoFilter Field:=2, Criteria1:=Label9
myArray > Sheets("Tableau").Range("C2:C300").SpecialCells(xlCellTypeVisible).Value
With Me.ListBox1
.List = myArray
End With






Avatar
Alain
En fait Denis,je te ré-expose mon pb
J'ai un tableau de A2: H300
Dans le Workbook_Open une proc me trie le tableau
J'ai un ComboBox3 dans lequel je choisis un nom, puis ce nom devient le
critère de filtre. Je souhaite que les lignes filtrées (visibles) aillent
dans listbox1
Cela fonctionne mais dès que le résultat du filtre est égal à un
enregistrement, cela plante.
Effectivement ton explication est très claire, mais je n'arrive pas à
adapter ta proc.
J'ai l'impression que je vais encore passer une nuit blanche ;-)
Alain


"michdenis" a écrit dans le message de
news:O%
Bonjour Alain,

La propriété List de l'objet ListBox requiert non pas une valeur d'une
cellule mais un tableau. Ce tableau peut être

d'une dimension ou de 2 dimensions. La valeur d'une seule cellule ne peut
être considéré comme un tableau. De plus, pour

pouvoir utiliser le type de procédure que tu soumets, il faudrait que la
plage de résultat du filtre automatique soit en

continue C2:C6 ...et non (C2,C4,C6) et le résultat du filtre automatique
ne peut pas garantir que tu obtiendras

toujours une plage de cellules en continu. Je suppose donc que la
procédure doit se planter même si tu as plus d'un

enregistrement comme résultat de ton filtre. Il s'agit simplement qu'au
moins une cellule ne soit pas en continu dans la

plage de résultat.


Tu pourrais plutôt utiliser quelque chose dans le genre :
'---------------------------
Dim Rg As Range

'Ligne de code de ton filtre automatique ...

On Error Resume Next
Set Rg = Range("A1:A10").SpecialCells(xlCellTypeConstants)
If Not Rg Is Nothing Then
With Me.ListBox1
.Clear
For Each c In Rg
.AddItem c.Value
Next
End With
Else
On Error GoTo 0
MsgBox "Aucun enregistrement de trouvé !"
End If
'---------------------------



Salutations!






"Alain" a écrit dans le message de
news:

Bonjour,
voilà je réitère ma demande, car j'ai oublié de préciser que lorsque je
filtre sur ma feuille, cela fonctionne très bien, en revanche, quand je
passe par un listbox, cela fonctionne très bien, sauf lorsqu'il y a un
seul

enregistrement.
il me dit erreur d'exécution 381.Impossible de définir la propriété
List.index de table de propriété non valide.
cela plante au niveau de .List = myArray
Merci
Alain

Sheets("Tableau").Select
Range("A1:M400").Select
Selection.AutoFilter Field:=2, Criteria1:=Label9
myArray > Sheets("Tableau").Range("C2:C300").SpecialCells(xlCellTypeVisible).Value
With Me.ListBox1
.List = myArray
End With