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

Piment

XLDnaute Occasionnel
J'ai testé tes nouveaux codex et j'ai un beug dans la sub "cmd_Enregistrer_Click()", à la ligne
Code:
.Rows(0).Cells(2).AddComment "Ajouté"
Que signifie cette ligne.
Malgré tout il me rajoute bien dans le tableau les données mais en tout début de tableau. Le Filtre n'a pas l'air de fonctionner.
 

Piment

XLDnaute Occasionnel
J'ai testé la modification du prix d'une fleur (Cadaque Jaune GB ETS FERRARI):
Il a envoyé dans le tableau 2 lignes: 1 ligne (Cadaque Jaune GB ETS FERRARI) avec le nouveau Prix et le nouveau Nbre de Tige/Botte et le nouveau PrixU, une 2ème ligne avec les mêmes éléments et @ devant Cadaque. Normalement il aurait dû chercher Cadaque et modifier sa ligne.
J'ai vérifié dans l'Usf "Commande", il remonte bien un seul Cadaque avec le nouveau tarif. La listView de l''Usf "Commande" n'affiche pas le @ devant: il fonctionne correctement. Il n'y a bien qu'un seul Cadaque: celui qui subit le changement.
 

ChTi160

XLDnaute Barbatruc
Bonjour Claude ,Le Fil ,le Forum
ce que j'ai modifié dans la procédure pour sélectionner la dernière ligne restante lors du Filtre .
VB:
Sub Load_Listview(Fields)
Dim Rows, Cols, Lst
' on charge la listview avec les données récupérées par le get_fields
    With Me.ListView_List_Fleurs
       With .ListItems
                .Clear
        For Rows = 0 To UBound(Fields, 2)
            Set Lst = .Add(, , Fields(0, Rows))
            For Cols = 1 To UBound(Fields, 1)
                Select Case Cols
                Case 5, UBound(Fields, 1) ' les champs 4 et max sont des euros
                    Lst.ListSubItems.Add Text:=Format(Fields(Cols, Rows), "currency")
                Case Else
                    Lst.ListSubItems.Add Text:=Fields(Cols, Rows)
                End Select
            Next
         Next
        End With
  '''''''''''''''''''''''''''''''''''''''''''''''''''ci-dessous'
       If .ListItems.Count = 1 Then
         ' Appeler le gestionnaire d'événements Click pour simuler un clic
                ListView_List_Fleurs_ItemClick .ListItems(1)
       End If
          .ListItems(1).Selected = False
     Set .SelectedItem = Nothing
    End With
End Sub
Bonne Journée
Jean marie
 

fanch55

XLDnaute Barbatruc
J'ai testé la modification du prix d'une fleur (Cadaque Jaune GB ETS FERRARI):
Il a envoyé dans le tableau 2 lignes: 1 ligne (Cadaque Jaune GB ETS FERRARI) avec le nouveau Prix et le nouveau Nbre de Tige/Botte et le nouveau PrixU, une 2ème ligne avec les mêmes éléments et @ devant Cadaque. Normalement il aurait dû chercher Cadaque et modifier sa ligne.
J'ai vérifié dans l'Usf "Commande", il remonte bien un seul Cadaque avec le nouveau tarif. La listView de l''Usf "Commande" n'affiche pas le @ devant: il fonctionne correctement. Il n'y a bien qu'un seul Cadaque: celui qui subit le changement.
Ci-joint le dernier classeur que tu m'as posté avec des corrections effectuées qui devraient résoudre ce que tu as signalé .
 

Pièces jointes

  • Test Magasin Essaie 1 Tableau F55-2.xlsm
    191.8 KB · Affichages: 5

Piment

XLDnaute Occasionnel
Jean-Marie,Fanch55, TooFatBoy, Dranreb, le Forum bonjour à tous.
Jean-Marie, super, tu me fais gagner du temps. Je regarde de plus près les changements et je reviens vers toi. Merci pour ta contribution.
Fanch55, Merci d'avoir corrigé. Je regarde, là aussi de plus près les changements apportés, et je te fais un retour.
 

fanch55

XLDnaute Barbatruc
Fanch55, j'ai testé ton fichier, j'ai toujours le beug sur la ligne:
VB:
.Rows(0).Cells(2).AddComment "Ajouté"
Le beug se trouve dans la Sub "Cmd_Enregistrer_Click()".
Merci à toi.
Peux-tu remplacer le code de la sub par :
VB:
Private Sub Cmd_Enregistrer_Click()
Dim GF
    With [Tbl_Liste_Fleurs]
        If ActiveSheet.Name <> .Parent.Name Then .Parent.Activate
       ' on vérifie l'existence de la fleur (Catégorie + Nom + Couleur + type bouton)
       If Get_Fields(GF, _
               " 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 & "'  " & _
               " 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)
            [Tbl_Liste_Fleurs[Nom]].Find("@*", LookIn:=xlValues).Select
            Selection = Mid(Selection, 2)
            ActiveWindow.ScrollRow = Selection.Row
            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).Resize(, 7).Value = Array(Me.Cbx_Catégorie, _
                                               Me.Cbx_Noms, _
                                               Me.Cbx_Couleurs, _
                                               Me.Cbx_TypBouton, _
                                               Me.Cbx_Fournisseurs, _
                                               CCur(Tbx_PrixBotte), _
                                                CDbl(Me.Tbx_NbrTigeBot))
    '                                CCur(Me.Tbx_PrixTige)) la cellule comporte déjà la formule de calcul via Ts
           ' on n'a pas pris le même principe que la modif en ajoutant un @ en début de nom
           ' car on doit trier les fleurs pour "ordonner" l'ajout
            .Rows(0).Cells(2).ClearComments
            .Rows(0).Cells(2).AddComment "Ajouté"
            Trier_Fleurs
            [Tbl_Liste_Fleurs[Nom]].Find("Ajouté", LookIn:=xlComments).Select
            ActiveWindow.ScrollRow = Selection.Row
            Selection.Comment.Delete
            MsgBox ("Nouvel élément Ajouté au Tableau")
       End If
    End With

End Sub

Si toujours pb, tu peux faire une copie du message d'erreur ?
 

fanch55

XLDnaute Barbatruc
Lancez l'enregistreur de macro et insérez un commentaire dans une cellule.
Je suis curieux de voir le code, j'ai eu dans le temps des pb avec les Comments car ils avaient été remplacés par des Notes dans certaines versions d'office .

Une alternative qui devrait fonctionner :
VB:
Private Sub Cmd_Enregistrer_Click()
Dim GF
    With [Tbl_Liste_Fleurs]
        If ActiveSheet.Name <> .Parent.Name Then .Parent.Activate
       ' on vérifie l'existence de la fleur (Catégorie + Nom + Couleur + type bouton)
       If Get_Fields(GF, _
               " 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 & "'  " & _
               " 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)
            [Tbl_Liste_Fleurs[Nom]].Find("@*", LookIn:=xlValues).Select
            Selection = Mid(Selection, 2)
            ActiveWindow.ScrollRow = Selection.Row
            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).Resize(, 7).Value = Array(Me.Cbx_Catégorie, _
                                               Me.Cbx_Noms, _
                                               Me.Cbx_Couleurs, _
                                               Me.Cbx_TypBouton, _
                                         "@" & Me.Cbx_Fournisseurs, _
                                               CCur(Tbx_PrixBotte), _
                                                CDbl(Me.Tbx_NbrTigeBot))
    '                                CCur(Me.Tbx_PrixTige)) la cellule comporte déjà la formule de calcul via Ts
            Trier_Fleurs
            [Tbl_Liste_Fleurs[Fournisseurs]].Find("@*", LookIn:=xlValues).Select
            Selection = Mid(Selection, 2)
            ActiveWindow.ScrollRow = Selection.Row
            MsgBox ("Nouvel élément Ajouté au Tableau")
       End If
    End With

End Sub
 

Piment

XLDnaute Occasionnel
Fanch55, Jean-Marie, Dranreb, TooFatBoy, Le Forum, bonjour à tous.
Fanch55, la dernière version fonctionne. Je ne comprenais pas pourquoi tu voulais mettre ce commentaire sur la cellule. Elle n'y est plus, c'est très bien.
J'ai essayé de rajouter la valeur du Tbx_PrixTige
VB:
 "     `PU/Tige`='" & Me.Tbx_PrixTige & "'  " & _
mais je n'ai pas réussi. Je ne veux pas que ce soit le tableau qui fasse le calcul. J'aimerais que la valeur du Tbx_PrixTige soit "importée" comme le reste des données.
On est d'accord que ce formulaire me permet d'ajouter une nouvelle fleur, mais aussi de modifier les éléments d'une fleur existante (Type Bouton, Prix..).
Merci à toi.
Je vous souhaite, à tous, une bonne journée.
 

TooFatBoy

XLDnaute Barbatruc
Je ne comprenais pas pourquoi tu voulais mettre ce commentaire sur la cellule. Elle n'y est plus, c'est très bien.
Si j'ai bien compris, c'est juste pour que la ligne modifiée soit la "première ligne affichée".
Autrement dit, pour caler l'affichage du tableau sur la ligne modifiée.

Une fois que l'affichage est calé ainsi, le commentaire est supprimé.
Ça sert juste de repère pour retrouver la bonne ligne du tableau.
 

Piment

XLDnaute Occasionnel
Salut TooFaBoy.
Ouais, mais quel était l'intérêt??
Fanch55 pour répondre à ton post #55:
VB:
Sub Note()

' Note Macro

    Range("C11").AddComment
    Range("C11").Comment.Visible = False
    Range("C11").Comment.Text Text:="payet claude:" & Chr(10) & "Nouvelle Fleur"
    Range("D15").Select
End Sub
 

Discussions similaires

Réponses
69
Affichages
5 K
Réponses
12
Affichages
624

Statistiques des forums

Discussions
314 716
Messages
2 112 159
Membres
111 447
dernier inscrit
jasontantane