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
Il faut faire pareil qu'avec l' userform commande et renseigner le combobox avec la table des fournisseurs .
Code Usf Alimenter_Catalogue modifié
Code Usf Fournisseurs modifié
 

Pièces jointes

  • Test Magasin 2 F55.xlsm
    155.1 KB · Affichages: 0

Piment

XLDnaute Occasionnel
Fanch55, Le Forum, bonjour à vous.
Fanch55, désolé de ne répondre que maintenant: depuis le cyclone quelques soucis de connexion.
De mon coté, je me suis efforcé de trouver une solution.
Je te mets le fichier en pièces jointes.
J'ai joué avec la Frame: après la fermeture de l'Usf "Fournisseur", click sur la Frame: chargement du ComboBox pour qu'il prenne en compte le nouveau fournisseur.
Seul problème, une fois encore soucis de calcul: sub Txt_NbrTigeBot_Oeillet_Change me donne "incompatibilité de type". Mais il m'envoie quand même les données dans le tableau, et le calcul se fait correctement. C'est après avoir inscrit les données dans le tableau qu'il "beug". Je comprends pas. Si tu as des explications je suis preneurs (histoire de ne pas mourir idiot).
Il va de soi que j'adopte ce que tu m'as proposé.
Une fois de plus grand merci à toi.
 

Pièces jointes

  • Test Magasin 2.xlsm
    150.8 KB · Affichages: 0

ChTi160

XLDnaute Barbatruc
bonsoir le fil
le fichier avec quelques modifications
j'ai ajouté une variable "Ok_Change" qui permet d'éviter l'erreur lors du déclanchement du
Private Sub Txt_NbrTigeBot_Oeillet_Change()
lorsque ce Control est Vidé !
j'ai aussi modifié la Macro qui transfere les données vers le Tableau structuré (car pourquoi utiliser unTableau structuré si l'on ne profite pas de ces Procédures et autres Méthodes )
bonne fin de Soirée et Bonjour à Claude Lol
jean marie
 

Pièces jointes

  • Test Magasin 2 Piment.xlsm
    128.1 KB · Affichages: 0

TooFatBoy

XLDnaute Barbatruc
j'ai aussi modifié la Macro qui transfere les données vers le Tableau structuré (car pourquoi utiliser unTableau structuré si l'on ne profite pas de ces Procédures et autres Méthodes )
Toutafé ! 👍
Et tant qu'à utiliser les spécificités des TS, autant s'affranchir de la dépendance à la feuille. ;)

Du coup je propose, mais ce n'est bien qu'une proposition, de remplacer :
VB:
Private Sub Cdb_Enregist_Oeillets_Click()
Dim Ligne As ListRow
Dim TblO As ListObject  'on dit que TblO est l'objet

'*****************************Ajouter de nouveaux oeillets : "Tbl_List_Oeillet"******************************

'  Set Ws = Sheets("Elements Fleurs")
'Ws.Select
        Set TblO = Ws.ListObjects("Tbl_List_Oeillet")         'ou se trouve tbl qui est l'objet appelé tableau1
       Set Ligne = TblO.ListRows.Add                            'ici on rajoute une ligne au tableau1
'        Lig = Ws.Range("Tbl_List_Oeillet").Rows.Count + 1 'on se positionne sur la ligne ajoutée
        On Error Resume Next
    
       
          Ligne.Range(1) = Me.Txt_Nom_Oeillet
          Ligne.Range(2) = Me.Txt_Couleur_oeillet
          Ligne.Range(3) = Me.Txt_TypBout_Oeillet
          Ligne.Range(4) = Me.Cbx_FournisseursO
          Ligne.Range(5) = CCur(Text_PrixBotte_Oeillet)
          Ligne.Range(6) = CDbl(Me.Txt_NbrTigeBot_Oeillet)
          Ligne.Range(7) = CCur(Me.Txt_PrixTige_Oeillet)
       
    MsgBox ("Nouvel élément Ajouté au Tableau")
   
    Ok_Change = False
        Me.Txt_Nom_Oeillet = ""
        Me.Txt_Couleur_oeillet = ""
        Me.Txt_TypBout_Oeillet = ""
        Me.Cbx_FournisseursO = ""
        Me.Text_PrixBotte_Oeillet = ""
        Me.Txt_NbrTigeBot_Oeillet = ""
        Me.Txt_PrixTige_Oeillet = ""
    Ok_Change = True
'    Range("N1").Select

End Sub
par :
VB:
Private Sub Cdb_Enregist_Oeillets_Click()
' ***************************** Ajouter de nouveaux oeillets : "Tbl_List_Oeillet" ******************************
Dim Lig As Long

    With Range("Tbl_List_Oeillet")
        With .ListObject.ListRows
            .Add            ' Ici on rajoute une ligne au tableau1
            Lig = .Count    ' On se positionne sur la ligne ajoutée
        End With
        .Cells(Lig, 1) = Me.Txt_Nom_Oeillet
        .Cells(Lig, 2) = Me.Txt_Couleur_oeillet
        .Cells(Lig, 3) = Me.Txt_TypBout_Oeillet
        .Cells(Lig, 4) = Me.Cbx_FournisseursO
        .Cells(Lig, 5) = CCur(Text_PrixBotte_Oeillet)
        .Cells(Lig, 6) = CDbl(Me.Txt_NbrTigeBot_Oeillet)
        .Cells(Lig, 7) = CCur(Me.Txt_PrixTige_Oeillet)
    End With

    MsgBox ("Nouvel élément Ajouté au Tableau")

    Ok_Change = False
    Me.Txt_Nom_Oeillet = ""
    Me.Txt_Couleur_oeillet = ""
    Me.Txt_TypBout_Oeillet = ""
    Me.Cbx_FournisseursO = ""
    Me.Text_PrixBotte_Oeillet = ""
    Me.Txt_NbrTigeBot_Oeillet = ""
    Me.Txt_PrixTige_Oeillet = ""
    Ok_Change = True

End Sub



Je ne comprends pas, et je ne trouve pas pourquoi, dans le fichier de ChTi160, le calcul automatique de Txt_PrixTige_Oeillet ne se fait plus lorsqu'on fait une saisie dans Txt_NbrTigeBot_Oeillet, comme ça le faisait dans le fichier de fanch55.
Quelqu'un peut-il me donner la raison, SVP ?
 

Piment

XLDnaute Occasionnel
Fanch55, Jean-Marie, TooFatBoy , le Forum, bonjour ensoleillé de la Réunion,
Ma Messagerie ne me signale plus vos contributions, ce qui entraîne un retard dans mes réponses: désolé.
Je suis ravis de vous voir vous mettre à contribuer, d'une part à m'aider, et d'autre part à me permettre de progresser dans la pratique du VBA.
Je suis impressionné par l'empathie que vous témoignez à celles et ceux qui cherchent de l'aide sur ce forum.
Vraiment, énorme MERCI à vous.
* Pour répondre à Fanch55 dans son poste #18: le fichier que j'ai joint est le fichier sur lequel je travaille. Histoire de montrer que de mon côté, je ne reste pas les bras croisés à attendre que tu fasses le boulot.
Je travaille à intégrer tes codes dans mon fichier. Dans la journée, je t'envoie le fichier modifié.
* Jean-Marie, heureux de te voir nous rejoindre sur ce fil. Je regarde ton fichier et je te fais un retour.
* TooFatBoy, heureux de voir que tu suis toujours le z'affaire, et que tu y apportes ta contribution.
Je vous fais un retour dans la journée.
Bon dimanche à vous.
 

fanch55

XLDnaute Barbatruc
Perso, faire autant de contrôles dans un userform pour 4 types de fleurs avec les mêmes champs homonymes, je pense que c'est beaucoup de travail avec 4 fois plus de chances de se planter dans un nom .
Le classeur ci-joint propose l'ajout de fleur pour un type à choisir ( avec possibilité d'ajouter un fournisseur )
Ce n'est pas la panacée car il ne propose que l'ajout, pas la mise à jour ( mais ça, c'est une autre histoire .... )
 

Pièces jointes

  • Test Magasin 2 F55.xlsm
    170.9 KB · Affichages: 0

TooFatBoy

XLDnaute Barbatruc
Perso, faire autant de contrôles dans un userform pour 4 types de fleurs avec les mêmes champs homonymes, je pense que c'est beaucoup de travail avec 4 fois plus de chances de se planter dans un nom .
On est donc au moins quatre à être d'accord sur ce point, dont... Piment himself. ;)

En effet, je me demande si Piment n'est pas justement en train de travailler sur un fichier avec une base de données composée d'un seul tableau au lieu de quatre... 🤔
 
Dernière édition:

Piment

XLDnaute Occasionnel
Fanch55, Jean-Marie, TooFtBoy, le Forum, bonjour à vous.
Dans un premier temps: Jean-Marie, merci pour ta proposition. Et comme tu as approuvé les modifications proposées par TooFatBoy, je modifie tes codes en conséquence. Seulement, le "Txt_PrixTige_Oeillet" ne fonctionne pas: le calcul ne se fait pas. Du coup, je pense, j'ai un beug "Incompatibilité de type" dans la sub "Cdb_Enregistrer_Oeillet" sur la ligne ".Cell(Lig,7)=Ccur(Me.Txt_PrixTige_Oeillet". Si tu pouvais voir ce qu'il en est ?
Fanch55, ta proposition d'un seul formulaire pour alimenter n'importe lequel des tableaux est TOP.
Si tu voulais bien te pencher sur la mise à jour, s'il te plaît.
Je confirme les écrits de TooFatBoy, je vais me pencher sur un fichier avec un seul tableau. Comme vous le voyez je suis attentif à vos recommandations et la dernière proposition de Fanch55 permet encore plus de fluidité par rapport à ce que j'avais laborieusement essayé de produire.
Merci à vous.
 

Piment

XLDnaute Occasionnel
Fanch55, Jean-Marie, TooFatBoy, le Forum, bonjour à tous.
Fanch55 j'ai essayé de reprendre le fichier avec un seul tableau, mais je rencontre 1 beug : sur le Formulaire "Commande".
Le beug sur le formulaire "Commande" survient lorsque l'on choisi "Fournisseurs". Je pense que le " Private Sub ComboBox5_Change()" génère le beug. Je trouve pas pourquoi.
Pour le reste, ça à l'air de fonctionner.
Je te mets le fichier en pièces jointes.
Dans l'attente, bonne journée à vous
 

Pièces jointes

  • Test Magasin Essaie 1 Tableau.xlsm
    147.1 KB · Affichages: 0

Piment

XLDnaute Occasionnel
Bonjour Dranreb,
Comme je vous l'ai dit, je ne comprends rien dans vos codes. Il m'est difficile de parler de ce que je ne comprends pas.
Ce que me propose Fanch55, je comprends quelque peu, et je peux avancer sur cette base.
Mais, comme je vous l'ai dit aussi, je ne suis pas fermé à ce que vous m'avez proposé. Si vous le voulez, au fur et à mesure de l'avancée de mon projet, faites moi des propositions.
J'ai regardé votre fichier joint: l'usf "UFmMagasin", qui correspond à mon Usf "Commande" dans le dernier fichier joint du post #27, ne répond pas comme il faudrait : lors de la saisie dans le 2ème comboBox, la ListView doit filtrer sur le "Nom", puis la 3ème ComboBox sur la "Couleur"...
J'ai l'intention de continuer à faire des posts au fur et à mesure de l'avancée de mon projet.
Ce que je mettrais sur le fil, pourrait servir à d'autres.
Donc, allez-y, faites moi des propositions: vous voyez bien que je prends en compte les suggestions que vous m'avez faites: un seul tableau pour recenser les fleurs, pas 4 tableaux : je pars avec un seul tableau.
J'apprécie l'intérêt que vous portez à mon projet. Sachez que je regarderai avec attention ce que vous pourriez me proposer. Mais ne perdez pas de vue que je ne suis qu'un bricoleur du Dimanche, qui veut aider une amie.
Je ne suis qu'un joueur amateur d'une division Régionale, je ne pourrais pas jouer un match International.
En tout état de cause, soyez assuré de toute ma reconnaissance pour le travail fourni et à venir.
Claude.
 

Dranreb

XLDnaute Barbatruc
Il y a une page d'aide qui explique toutes les méthodes, propriétés et évènements des objets ComboBoxLiées et ControlsAssociés dans ce .xlsm précurseur de .xlam que je ne propose plus par ailleurs d'installer en tant que complément.
Sinon vous pouvez toujours me demander des précisions sur ce que vous ne comprenez pas.
La programmation de l'UserForm est pourtant concise en général: Tout est défini à 99% dans la Sub UserForm_Initialize …
 

Discussions similaires

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

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 613
dernier inscrit
luluinmauritius