Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Erreur "Type défini par l'utilisateur non défini

Piment

XLDnaute Occasionnel
A tous le bonjour de l'ile de la réunion.
Je reviens une fois de plus vers vous afin de m'aider à résoudre un nouveau problème que je n'arrive pas à comprendre:
J'ai une erreur "Type défini par l'utilisateur non défini" sur une déclaration de variable: Dim Base As New scripting.dictionary.
Je mets un fichier joint.
Si quelqu'un veut bien m'aider, merci à vous.
 

Pièces jointes

  • Test Magasin.xlsm
    27.5 KB · Affichages: 5

Piment

XLDnaute Occasionnel
Bonjour TooFatBoy,
Je suis sûr que tu peux m'aider.
En gros, ce dont j'ai besoin, c'est de récupérer les données d'un tableau structuré et de les envoyer dans un seul et même ListView.
La première Frame qui concerne les roses comme tu peux le constater fonctionne: les données sont récupérées dans le tableau "Tbl_List-Roses'. Les 2 lignes de codes dans la sub "Alimente_ListViewFleur"
Code:
LastRow = Wsa.Range("A" & Rows.Count).End(xlUp).Row
NbrColonne = Wsa.Range("A1").CurrentRegion.Columns.Count + 1
indique où se trouve les données à récupérer dans la ListView.
C'est ici, à mon avis qu'il faut agir: il faut lui indiquer le nom du tableau où se trouve les données. J'ai tenté de remplacer le "A" par le nom du tableau, mais ça ne marche pas.
Si on arrive à faire ça, il suffira de dupliquer la sub pour les autres tableaux nommés.
Je pourrais contourner le problème en mettant chaque tableau sur une feuille, mais ça va alourdir le classeur.
Si tu peux m'aider...
Merci à toi.
Excellente journée à toi.
 

TooFatBoy

XLDnaute Barbatruc
En gros, ce dont j'ai besoin, c'est de récupérer les données d'un tableau structuré et de les envoyer dans un seul et même ListView.
OK, mais Bernard a dit qu'on n'avait très probablement plus besoin de ListView. Du coup, qu'en est-il vu de chez toi ?


D'autre part, je ne comprends pas bien ta question.
Tu as remplie la ListView avec le tableau des roses, et tu veux continuer avec le tableau des œillets ???
Si oui, regarde la proposition en pj.


ps : j'ai renommé le deuxième tableau en "Tbl_List_Oeillets".

VB:
Sub Alimente_ListViewFleurs()
'
    With Magasin.ListView_List_Fleurs
        .ListItems.Clear
        .Gridlines = True
        .View = lvwReport
        .FullRowSelect = True
        .AllowColumnReorder = True
        With .ColumnHeaders
            .Clear
            .Add Text:="Catégorie", Width:=0
            .Add Text:="Nom", Width:=120
            .Add Text:="Couleur", Width:=100
            .Add Text:="Type Bouton", Width:=80
            .Add Text:="Prix/Botte", Width:=80
            .Add Text:="Nbre Tige/Botte", Width:=80
            .Add Text:="PU/Tige", Width:=80
            .Add Text:="Fournisseurs", Width:=100
        End With
    End With

    AjoutTableauDansListview ("Tbl_List_Roses")
    AjoutTableauDansListview ("Tbl_List_Oeillets")
    AjoutTableauDansListview ("Tbl_Divers_Fleurs")
    AjoutTableauDansListview ("Tableau39")

End Sub

Sub AjoutTableauDansListview(NomTableau As String)
' Remplissage de la ListView avec le tableau
Dim MaxRow As Long, MyRow As Long, MaxCol As Long, MyCol As Long, NbRow As Long

    With Magasin.ListView_List_Fleurs
        NbRow = .ListItems.Count
        MaxRow = IIf(Range(NomTableau).ListObject.DataBodyRange Is Nothing, 0, Range(NomTableau).ListObject.ListRows.Count)
        MaxCol = Range(NomTableau).ListObject.ListColumns.Count
        For MyRow = 1 To MaxRow
            .ListItems.Add
            For MyCol = 2 To MaxCol
                .ListItems(MyRow + NbRow).ListSubItems.Add Text:=Range(NomTableau).Cells(MyRow, MyCol).Value
            Next MyCol
        Next MyRow
    End With

End Sub
 

Pièces jointes

  • Test Magasin.xlsm
    54 KB · Affichages: 1

Piment

XLDnaute Occasionnel
Bonsoir TooFatBoy,
Désolé de te faire un retour si tardif, mais ma messagerie ne m'avait pas signalé ton post.
Si j'ai bien compris, la listView est chargée d'entrée avec le contenu de tous les tableaux.
Je te remets un nouveau fichier que j'ai modifié et qui reflète mieux ce que je cherche à faire.
Je pense que je pourrais utiliser les codes que tu me proposes . pour le moment, j'ai une vague idée de l'utilisation que je pourrais en faire. Ce sera dans une prochaine étape. Je t'expliquerais ...
Pour le moment, j'ai un problème à résoudre.
Comme tu pourras le constater dans le Fichier joint, j'ai modifié, un peu le fichier initial.
J'ai réussi à mettre les comboBox en cascade, à charger la ListView, et à effectuer le trie dans la listView.
Mon problème, c'est que le tri sur la comboBox 1 et 2 se fait, à priori correctement, mais le tri du comboBox3 ne se fait pas par rapport au résultat du tri de la comboBox2. Du coup le tri de la comboBox4 n'est pas bon.
Si tu pouvais y jeter un œil!
Ah, comme je n'avais pas vue ton post, j'ai lancé une nouvelle discussion sur ce sujet.
C'est en allant sur Excel Downloads et après avoir lancé la discussion que j'ai vu que j'avais un nouveau post.
En tous les cas, merci à toi.
Sauf erreur de ma part, je n'ai plus de retour de Dranreb.
Merci à toi.
 

Pièces jointes

  • Test Magasin.xlsm
    77.4 KB · Affichages: 2

TooFatBoy

XLDnaute Barbatruc
Désolé de te faire un retour si tardif, mais ma messagerie ne m'avait pas signalé ton post.
Si j'ai bien compris, la listView est chargée d'entrée avec le contenu de tous les tableaux.
Pas de soucis pour le délai.
Oui, la proposition remplie la ListView avec tous les tableaux. Ce n'est pas ce que tu demandais ?


OK


Je veux bien regarder, mais je pense que les outils de Bernard font déjà cela.


Sauf erreur de ma part, je n'ai plus de retour de Dranreb.
T'inquiète, à mon avis, ça ne saurait tarder.
 

Dranreb

XLDnaute Barbatruc
Il serait cependant possible d'utiliser 4 objets ComboBoxLiées dans le même UserForm. Mais pourquoi compliquer comme ça ? Il vaudrait mieux un seul tableau avec une colonne supplémentaire Catégorie faisant aussi l'objet d'une ComboBox. D'autant plus qu'avec un seul tableau on pourrait facilement sélectionner tous les articles d'un même fournisseur par exemple.
 
Dernière édition:

Piment

XLDnaute Occasionnel
le problème est qu'il va y avoir beaucoup d'éléments dans chaque tableau.: beaucoup variétés de roses différentes et de couleurs différentes, avec plusieurs fournisseurs. idem pour toutes les fleurs, et dieu sait s'il y en a.
Après échanges avec mon amie, cela sera plus aisé pour elle: elle veut passer une commande de rose: elle va sur la Frame Rose, la listView charge toutes les roses, elle choisie la rose, la couleur, la quantité et le fournisseurs. Elle valide, et dans l'absolue les données sont envoyées dans un bon de commande et reste plus qu'à imprimer ou à envoyer par Mail. Les données sont envoyées dans un tableau "Stock" et Archives des commandes. Je ne suis qu'à la première étape. Pour le reste je pense que je pourrais me débrouiller.
Je lui ai déjà fait un fichier pour la gestion de ses mariages, mais je n'avais pas eu à gérer une demande telle que celle là. Elle vient de faire l'acquisition d'une boutique de fleurs, et j'essaye de l'aider tant que je peux.
Merci à vous de vous pencher sur mon problème.
 

Dranreb

XLDnaute Barbatruc
Ce ne serait pas plus compliqué de taper "Rose" dans une ComboBox. Et ce serait plus souple si elle devait un jour créer des catégories supplémentaires : il n'y aurait rien à changer dans la programmation.
 

Piment

XLDnaute Occasionnel
Ok, je ne veux pas rester fermé sur une idée, et en plus je suis curieux de voir ce vous me proposez.
Je mets en place le bon de commande et le tableau de stock et je vous transmets le fichier modifié.
Merci à vous.
 

TooFatBoy

XLDnaute Barbatruc
Pardon de me mêler de ce qui ne me regarde peut-être pas, d'autant plus que ma réponse est peut-être complètement à côté de la plaque, mais je dirais qu'il ne faut pas confondre la façon de stocker les données et leur utilisation (utilisation aussi bien technique (programmation) que visuelle lors de l'utilisation du classeur).
 

Discussions similaires

Réponses
4
Affichages
424
Réponses
14
Affichages
357
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…