Microsoft 365 Filtre listview comboBox en cascades avec tableau structuré

Piment

XLDnaute Occasionnel
Bonjour à tous,
Une fois encore je me retourne vers vous afin de m'aider.
J'ai un problème avec le filtre de ma listView.
Les ComboBox 1 et 2 fonctionnent à priori sans problème, par contre la comboBox 3 ne filtre pas par rapport à la comboBox 2: donc forcément le tri de la comboBox 4 est faussé.
Si quelqu'un a la bonté de jeter un coup d'œil sur le fichier joint et trouver l'erreur, je lui en serais reconnaissant.
Merci à vous.
 

Pièces jointes

  • Test Magasin.xlsm
    77.4 KB · Affichages: 6

fanch55

XLDnaute Barbatruc
Comme la base est Excel et ne comporte pas de clé et comme le dit @TooFatBoy , c'est un subterfuge pour afficher la ligne ajoutée ou modifiée pour vérification immédiate visuelle .
C'est un pis-aller dont le risque est d'avoir plusieurs cellules avec des arobases si une exécution tourne mal .
Pour ma part, je travaillerai directement sur les lignes de table sans passer par un userform.
J'avais laissé la formule présente initialement dans la colonne "PU/TIGE" (=[@[Prix/Botte]]/[@[Nbre Tige/Botte]] ) et commenté la maj dans la sub d'enregistrement.
Ci-dessous la sub corrigée sans la vérif visuelle .
VB:
Private Sub Cmd_Enregistrer_Click()
    With [Tbl_Liste_Fleurs]
       ' on vérifie l'existence de la fleur (Catégorie + Nom + Couleur + type bouton)
       If Get_Fields(Null, _
               " select *  from " & Get_Table([Tbl_Liste_Fleurs]) & _
               " where " & Sqleq("Catégorie", Me.Cbx_Catégorie) & _
               "   and " & Sqleq("Nom", Me.Cbx_Noms) & _
               "   and " & Sqleq("Couleur", Me.Cbx_Couleurs) & _
               "   and " & Sqleq("Type Bouton", Me.Cbx_TypBouton)) Then
          ' la fleur existe, on met à jour les champs secondaires (Fournisseur + Prix/Botte + Nbre Tige/Botte)
           Update_Fields _
               " Update " & Get_Table([Tbl_Liste_Fleurs]) & _
               " Set   `Fournisseurs`='" & Me.Cbx_Fournisseurs & "', " & _
               "          `Prix/Botte`='" & Me.Tbx_PrixBotte & "', " & _
               "                 `Nom`='" & Me.Cbx_Noms & "', " & _
               "     `Nbre Tige/Botte`='" & Me.Tbx_NbrTigeBot & "', " & _
               "             `PU/Tige`='" & Me.Tbx_PrixTige & "'  " & _
               " where " & Sqleq("Catégorie", Me.Cbx_Catégorie) & _
               "   and " & Sqleq("Nom", Me.Cbx_Noms) & _
               "   and " & Sqleq("Couleur", Me.Cbx_Couleurs) & _
               "   and " & Sqleq("Type Bouton", Me.Cbx_TypBouton)
            MsgBox ("Element modifié")
       Else
          ' la fleur n'existe pas, on l'ajoute
            .ListObject.ListRows.Add 1   ' ici on rajoute une ligne en haut du tableau
            .Rows(0).Value = Array(Me.Cbx_Catégorie, _
                                    Me.Cbx_Noms, _
                                    Me.Cbx_Couleurs, _
                                    Me.Cbx_TypBouton, _
                                    Me.Cbx_Fournisseurs, _
                                CCur(Me.Tbx_PrixBotte), _
                                CDbl(Me.Tbx_NbrTigeBot), _
                                CCur(Me.Tbx_PrixTige))
            Trier_Fleurs
            MsgBox ("Nouvel élément Ajouté au Tableau")
       End If
    End With
End Sub
 

Piment

XLDnaute Occasionnel
Je corrige le code, et je fais le point avec mon amie. L'idée d'entrer directement les données dans le tableau est à creuser. Au départ, l'idée était de lui faciliter au maximum le travail: le tableau va avoir beaucoup, beaucoup de lignes: un Usf: on saisi les données et hop elles sont intégrées dans le tableau.
Je te fais un retour.
Merci à toi.
 

TooFatBoy

XLDnaute Barbatruc
Au départ, l'idée était de lui faciliter au maximum le travail: le tableau va avoir beaucoup, beaucoup de lignes: un Usf: on saisi les données et hop elles sont intégrées dans le tableau.
Je te fais un retour.
Nous on écrirait directement dans le tableau parce qu'on a peut-être un peu plus l'habitude que ton amie d'utiliser Excel, ses tableaux et leurs filtres. ;)
 

Dranreb

XLDnaute Barbatruc
Bonjour.
C'est cette mise à jour par UserForm que permet aussi mon classeur.
Il ne resterait qu'à y ajouter une procédure pour garnir un feuille Commande pour chaque fournisseur ayant des lignes avec une quantité commandée, et une autre pour remettre à 0 les quantités commandées en les y ajoutant préalablement au Stock.
 

Dranreb

XLDnaute Barbatruc
Il n'y a qu'une seule feuille commande ?
Comment on fait alors ?
On crée alors un PDF pour chaque fournisseurs ayant des quantités commandées ?
J'ai trouvé ue modèle de la feuille commande dans un de vos fichiers mais je ne sais comment doivent être renseignées les colonnes Désignation et Descriptif à partir de la base Fleurs
 
Dernière édition:

Piment

XLDnaute Occasionnel
Effectivement. Il y a une seule feuille "Commande". Exemple: on fait une commande chez le Fournisseur "ETS FERRARI". Les données sont envoyées dans la feuille "Commande" avec le bouton "Enregistrer".
Avec le bouton "Archiver la Commande": on fait une copie de la feuille "Commande" dans un autre fichier Excel "Archive Commande", et un PDF est généré et stocké dans un dossier "Archivage Commande".
 

Dranreb

XLDnaute Barbatruc
En attendant je vous ai mis sur le bouton OK une procédure qui extrait une collection de toutes les lignes de fleurs ayant une quantité commandée à raison d'une feuille par fournisseur.
Après avoir réglé le problème de leur mise en page exacte, il ne restera plus qu'à définir à quel moment on ajoute la quantité commandée dans le stock avant de l'effacer.
 

Pièces jointes

  • CLsCasPiment.xlsm
    192.6 KB · Affichages: 4

Piment

XLDnaute Occasionnel
Fanch55, Jean-Marie, TooFatBoy, Dranreb:
J'ai fais le point avec mon amie. Et sans surprise, j'ai dû modifier quelque peu le Tableau de base.
Du coup, je suis entrain de rectifier les codes en conséquence. Je vous fais un retour dès que possible.
Dranreb, j'ai regardé votre fichier: il y avait une petite faute de frappe sur la sub "CBnOKCmd_Click()" à la ligne:
VB:
         Set WshR = Worksheets.Add(after:=Worksheets.Count)
Faute frappe sur le Worksheets.
Je remettrais le fichier sur lequel je travaille après avoir apporter les modif. Autant que vous ayez le bon fichier.
Merci à vous, à plus tard.
 

TooFatBoy

XLDnaute Barbatruc
J'ai fais le point avec mon amie. Et sans surprise, j'ai dû modifier quelque peu le Tableau de base.
En quoi ça la concerne ??? 🤔

Si elle s'intéresse aux tableaux, je peux dors et déjà te dire que c'est mal barré. 😕
Ça veut dire qu'elle va écrire directement dans les tableaux sans passer par le UserForm...
Là ça n'aura peut-être pas de conséquences fâcheuses parce que c'est un projet très simple, mais ça montre qu'elle n'a pas compris qu'elle n'a pas besoin d'aller voir les tableaux puisque tout devrait se passer dans les UserForm.
 
Dernière édition:

Piment

XLDnaute Occasionnel
Fanch55, Jean-Marie, TooFatBoy, Dranreb:
ToofatBoy: ben c'est elle qui va s'en servir. J'essaie de faire, avec votre précieuse aide, quelque chose où elle retrouve ses marques.
Je vous vous mets le fichier modifié.
Jean-Marie, tu peux regarder ta Sub "Load_Listview(Fields).
Beug sur la ligne :
VB:
 Lst.ListSubItems.Add Text:=Fields(Cols, Rows)
J'ai changé le chiffre 5 en 6 puisque j'ai une colonne supplémentaire, mais ça ne marche pas. Si tu pouvais commenter tes codes, ça m'aiderait à comprendre. Merci à toi.
Fanch55: apparemment je ne peux pas modifier une ligne existante à partir de l'Usf "Alimenter_Catalogue". C'est ça?.
Je ne peux que rajouter une ligne, c'est ça.
Merci à vous.
 

Pièces jointes

  • Test Magasin Essaie 1 Tableau.xlsm
    195.2 KB · Affichages: 5

Discussions similaires

Réponses
69
Affichages
4 K
Réponses
12
Affichages
310

Statistiques des forums

Discussions
312 207
Messages
2 086 247
Membres
103 163
dernier inscrit
Pelaez