Erreur d'execution381, a cause d'un listbox?

barry white

XLDnaute Junior
Bonjour à tous,

Je suis confronté à un bug avec le code ci-dessous qui se trouve dans une UserForm_Initialize :

Code:
With Sheets("feuil1")
    LS_NUM_PAT.List = .Range("C1:C" & .Range("C65536").End(xlUp).Row).Value
End With

But de ce code, alimenter une listbox. Le code fonctionne tres bien quand j'ai plus d'une ligne rempli. Dés que j'ai qu'une seule ligne, le message " erreur d'execution 381. Impossible de définir la propriété list. Indec de table de propriété non valide" apparait.

Pourquoi???

Merci d'avance pour votre aide.
 

Dranreb

XLDnaute Barbatruc
Re : Erreur d'execution381, a cause d'un listbox?

Bonjour.
Comme ça :
VB:
On Error Resume Next
LS_NUM_PAT.List = .Range("C1:C" & .Range("C65536").End(xlUp).Row).Value
If Err Then LS_NUM_PAT.List = Array(.Range("C1").Value)
On Error GoTo 0
À tester.
Cordialement.
 

barry white

XLDnaute Junior
Re : Erreur d'execution381, a cause d'un listbox?

Merci pour ta réponse.

Mais malheuresment ton code ne marche pas. j'ai le message "Erreur de compilation. Référence incorecte ou non qualifiée" qui apparait. VBA me selection le range indiqué en rouge :


Code:
LS_NUM_PAT.List = .Range("C1:C" & [COLOR=#ff0000][B].Range[/B][/COLOR]("C65536").End(xlUp).Row).Value
If Err Then LS_NUM_PAT.List = Array(.Range("C1").Value)
On Error GoTo 0

J'ai fait le test avec une ligne et 10 lignes, meme message d'erreur.

Moi pas comprendre... :)

Merci encore de ton aide
 

laetitia90

XLDnaute Barbatruc
Re : Erreur d'execution381, a cause d'un listbox?

bonjour tous :):)

tu peus utiliser AddItem ou tablo
un exemple avec AddItem

Code:
 For Each c In Range("c1:c" & Range("c65536").End(xlUp).Row)
 ListBox1.AddItem c
 Next c

met le nom de ta listbox
 

barry white

XLDnaute Junior
Re : Erreur d'execution381, a cause d'un listbox?

Petite précision depuis que j'utilise ce code dans l'initialisation de ma usf, apres selection d'une valeur et validation, toutes les valeurs se trouvent entre des guillemets. Existe t il une fonction qui permet de supprimer ces guillemets et récupérer uniquement la valeur (dans mon cas ça sera toujours des chiffres). J'ai trouvé une solution de contournement qui consiste à ecrire la valeur dans la cellule et la les guillemets ne sont pas present! Solution que je ne trouve pas Tip-Top ;-)

Merci d'avance pour votre aide.
 

barry white

XLDnaute Junior
Re : Erreur d'execution381, a cause d'un listbox?

re tous :):)si tu pouvez mettre un fichier exemple bien plus simple bien sur avec le format reel des tes cells!!!

que veus tu dire par

Bonjour à tous,

Merci de te pencher sur mon pb laetitia, donc je m'explique.

Avant d'appliquer ton code, j'avais pour initialisation de ma USF le code ci-dessous :

Code:
Private Sub UserForm_Initialize()


LS_NUM_PAT.List = Sheets("feuil1").Columns(3).SpecialCells(2).Value

end sub


Dans ce USF j'ai un bouton (BT_SUPPR_FIC) qui contient le code suivant (j'ai enlevé les parties inutil) :

Code:
Private Sub BT_SUPPR_FIC_Click()

Dim fso As Object, Src$, FicSup$, Fich$
Dim rep, NomFicTemp, NoMFeuiL, Reponse, nomficsupPAT2, nomficsupPAT, NumpaT, Nomfich, Repfic As String
Dim derlig, i As Integer

NoMFeuiL = ActiveWorkbook.ActiveSheet.name
NomFicTemp = ActiveWorkbook.name

nomficsupPAT = LS_NUM_PAT.value

'suite

Dans le cas ou la feuil 1 avait plus d'une ligne, la valeur selectioner dans le listbox nomficsupPAT ressort bien (ex : 607120 , c'est que des chiffres que j'ai dans cette listbox).

Ce code marchait nikel! Sauf quand la feuil1 contenait qu'une seule ligne, l'appli Bugé.

Donc grace à toi, ce BUg à disparu grace au code suivant pour l'initialisation :

Code:
For Each c In Range("c1:c" & Range("c65536").End(xlUp).Row)
LS_NUM_PAT.AddItem c
Next c

Quand j'execute le bouton BT_SUPPR_FIC_Click (code ecrit plus haut), la valeur nomficsupPAT me ressort comme ça : "607120" et non 607120

Dans la listbox c'est bien 607120 . Je ne comprends pas pourquoi les guillmet s'introduisent dans la variable, d'autant plus quand j'ecris la valeur sur une case, les guillements ne sont plus là.

Donc la solution que j'ai appliqué c'est d'ecrire la valeur dans une case XLS et de relire la case en question. Je trouve cette solution pas propre...

Merci pour ton aide et merci pour l'aide des autres aussi. :D:D
 

Discussions similaires

Réponses
17
Affichages
1 K

Statistiques des forums

Discussions
312 502
Messages
2 089 040
Membres
104 010
dernier inscrit
Freba