1 pièce(s) jointe(s)
Message d'erreur incompréhensible dans un USERFORM
Bonjour le Forum,
je vous explique mon problème. Je viens de créer un "super fichier" de suivi avec des tas de formulaires, ...
Dans un de ses formulaires, j'ai une listbox, qui se charge sans problème. J'ai également créé, entre autres, un combobox qui permet de filtrer la Listbox sur une de ses colonnes (="Catégorie").
Si je sélectionne une catégorie, tout fonctionne bien, le filtrage se fait parfaitement, sauf pour UNE des catégories !!!! (dans mon cas "Mobilier").
En effet, lorsque je sélectionne cette catégorie (et uniquement celle-ci, d'ou ma surprise), j'obtiens le message suivant :
Citation:
Erreur d'exécution '-2147352571 (80020005)' : Impossible de définir la propriété List. Le type ne correspond pas.
En faisant 'jouer' le code via F8 ... F8, j'arrive à déterminer que le problème vient au niveau du code suivant :
Code:
1 2 3 4 5 6 7 8 9 10
| For Each c In Application.index(Workbooks(ThisWorkbook.Name).Sheets("articles").[DONNEES_ARTICLES], , 1)
If c.Offset(, 5) = Me.Cbb_Catégorie Then
Me.ListBox_Articles.AddItem
Me.ListBox_Articles.List(I, 0) = c.Value
For N = 1 To NbCol
Me.ListBox_Articles.List(I, N - 1) = c.Offset(, N - 1).Value
Next N
I = I + 1
End If
Next c |
de la ligne
Code:
Me.ListBox_Articles.List(I, N - 1) = c.Offset(, N - 1).Value
et cela au moment où la valeur de la cellule sur lequel on travaille possède 3205 caractères.
Ma question est donc la suivante, pourquoi à l'initialisation du formulaire la taille de la cellule ne pose pas de problème pour la listbox, alors qu'avec le code ci-dessus SI ?
Deuxième question : excel limite le nombre de caractères à combien dans une "cellule" d'une listbox ?
Dernière question : comment résoudre mon problème ?
Afin d'illustrer mon problème, je vous ai mis en PJ le formulaire (réduit au mimimum pour vous le transmettre) posant problème avec son code (lui aussi réduit au minimum).
Merci d'avance pour votre aide
Pas de String, pas de Range ???
Citation:
Envoyé par
leblesois
Pour les colonnes, Integer
Pour les Lignes et autres variables numériques Long
(Merci pour ton aide !)
Quelques conseils :
- commencer tous les modules par Option Explicit, ce qui oblige à déclarer toutes les variables ;
- déclarer toutes les variables avec le type ad hoc ;
- limiter leur portée au strict nécessaire (i.e. locale, privée, publique ou globale) ;
- ne jamais utiliser .Select, éviter les objets actifs : Selection, Activecell, Activesheet, ... ;
- envisager tous les types potentiels de chaque variable pour éviter les erreurs, dans le doute prévoir un gestionnaire d"erreur ;
- éviter d'utiliser des propriétés ou méthodes d'objet qui pourraient ne pas exister (Ex: au lieu de Sheets(1).Range("A1") écrire Workheets(1).Range("A1") ;
- éviter les références implicites (i.e. partielles), privilégier les références explicites (ex: au lieu de =Cells(1,2) écrire =Worksheets(1).Cells(1,2).Value) ;
- éviter d'utiliser le Presse-Papier, préférer la copie directe (une seule instruction) : Source.Copy Destination ou Destination.valeur = Source.Valeur