IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Message d'erreur incompréhensible dans un USERFORM [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 52
    Par défaut 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 :

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    la règle est ici une seule question/difficulté par discussion. Aucune limitation en ce qui concerne le nombre d'articles que peut contenir une listbox. Il en va différemment en ce qui concerne le nombre de ceux pouvant être exploités : il est limité à celui d'un integer. (32000 et des poussières); ceci étant dit --->> une liste de plus de 1000 articles est en général "imbuvable".
    Je n'ai pas ouvert ton classeur (je n'ouvre et n'ouvrirai jamais un classeur tiers)
    Une listbox ne peut être alimentée que par du texte. Une erreur est inévitable si tu cherches à y inscrire le contenu inexploitable (cellule en erreur) d'une cellule

  3. #3
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 52
    Par défaut
    Merci de répondre si rapidement, mais malheureusement, je ne comprends pas votre réponse. En effet, ma listbox n'est alimentée que par du texte étant donné qu'elle va chercher le contenu d'une cellule qui n'est absolument pas en erreur...

    Donc mon problème persiste ... SNIFF !

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Il n'y a aucun intérêt à disposer d'une entrée de Listbox avec 3205 caractères !
    Une Listbox ne doit pas être un substitut de feuille de calcul.

  5. #5
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 52
    Par défaut
    Aucun intérêt pour vous !
    Mais quand il s'agit de récupérer un descriptif qui se trouve dans une cellule, je ne vois pas comment faire autrement pour faire apparaitre dans un formulaire le contenu de cette cellule ...

    Ce genre de réflexion ne fait pas avancer la discussion...

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bien.
    Cette réponse à Patrice me convainc que je n'ai aucun intérêt à rester dans cette discussion.
    Salut.

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Citation Envoyé par leblesois Voir le message
    Aucun intérêt pour vous !
    Mais quand il s'agit de récupérer un descriptif qui se trouve dans une cellule, je ne vois pas comment faire autrement pour faire apparaitre dans un formulaire le contenu de cette cellule ...

    Ce genre de réflexion ne fait pas avancer la discussion...
    Pour récupérer le contenu d'une cellule, un label suffit !
    Et s'il s'agit de pouvoir modifier le texte, c'est un Textbox qui est le plus adapté.

  8. #8
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 52
    Par défaut
    Après plusieurs tests, il ressort que ce problème apparait dès qu'il y a au moins 2048 caractères dans une cellule... Les listbox alimentées par une boucle du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For N = 1 To NbCol
    Me.ListBox_Articles.List(I, N - 1) = c.Offset(, N - 1).Value
    Next N
    sont donc concernés par cela... mais pas celles alimentées par ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    For LIG = LBound(clé) To UBound(clé)
            For COL = LBound(BDD_ORIGINE, 2) To UBound(BDD_ORIGINE, 2)
                b(LIG, COL) = BDD_ORIGINE(index(LIG), COL)
            Next COL
    Next LIG
        Me.ListBox_Articles.List = b
    Bizarre, Bizarre....

    Si vous avez une explication, je suis preneur ! MERCI !

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo