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

XL 2019 VBA - Problème ComboBox en cascade

bapt0201

XLDnaute Nouveau
Bonjour le forum,

Je travaille sur la réalisation d'une petite application a partir d'un Userform mais étant novice en VBA j'ai de grosses difficultés, en cherchant un peu j'ai trouvé des réponses similaires mais je n'arrive pas a les adapter. Je me tourne donc vers vous en espérant que vous puissiez m'aider.

L'objectif est de récupérer les données d'une feuille "Base de données VBA" puis les mettre en forme différemment selon la feuille "structure fichier" pour pouvoir réaliser des calculs pour des reportings. (je n'en suis pas la pour le moment)

Je pensais dans un premier temps utiliser des combobox pour sélectionner mes critères de recherche :
- Le 1er problème, c'est que je n'ai pas réussi a les alimenter en cascade, notamment les combobox territoire et département
- Le deuxième problème, c'est que mon combobox pour les offres et les couts sont alimentés en ligne( les en tête du tableau a partir de la colonne L) et je souhaiterais masquer les colonnes qui n'ont pas été sélectionnées. (comme un filtre en ligne mais dans ce cas pour les colonnes)

Voici le fichier simplifié car un peu lourd, cela sera sans doute plus parlant

Il y a peut-être un moyen plus simple pour le faire ou l'optimiser donc n'hésitez pas a me dire si vous avez d'autre idée.
J'espère que mes explications sont suffisamment claires.

Merci par avance
 

Pièces jointes

  • exemple fichier pricing.xlsm
    52 KB · Affichages: 9
Solution
Voilà une ébauche avec juste la définition de l'objet ComboBoxLiées, et, en attendant le filtre gardé.
Mais c'est un peu dommage parce qu'il sait filtrer tout seul jusqu'à aboutir à une seule ligne s'il y avait d'avantage de ComboBox prises en charge.

Dranreb

XLDnaute Barbatruc
Bonjour.
La recherche d'après ComboBox liées se rapportant à des colonnes différentes d'un même tableau est automatique avec mon objet ComboBoxLiées, Voulez vous que j'en équipe le projet VBA de votre classeur, ou bien saurez vous mettre en œuvre le complément .xlam ? Précurseur .xlsm disponible ici :
 

bapt0201

XLDnaute Nouveau
Bonjour Dranreb, merci pour votre aide.

Ce complément est très intéressant, je ne suis pas sur de réussir a le mettre en place entièrement tout seul .
Si vous pouvez l'ajouter a mon classeur ce serait super merci, cela m'aiderait également a comprendre
 

Dranreb

XLDnaute Barbatruc
Pour mettre en place le complément il suffit de l'ouvrir. Il demande alors la permission de s'installer en tant que .xlam dans votre dossier de compléments. Cochez ensuite son nom de projet CLsCAs dans les références disponibles, menu Outils > Références… du projet de votre classeur.
Ce que je vous proposai plutôt c'est, si ce système ne convenait pas bien, genre parce que la classeur voyage sur une clé USB ou est sur un réseau local, que vous préfèreriez que les modules de service nécessaires soient directement implantés dans le projet VBA de votre classeur d'application.
 

Dranreb

XLDnaute Barbatruc
Voilà une ébauche avec juste la définition de l'objet ComboBoxLiées, et, en attendant le filtre gardé.
Mais c'est un peu dommage parce qu'il sait filtrer tout seul jusqu'à aboutir à une seule ligne s'il y avait d'avantage de ComboBox prises en charge.
 

Pièces jointes

  • CLsCAsBapt0201.xlsm
    110.1 KB · Affichages: 21

ChTi160

XLDnaute Barbatruc
Bonjour Bapt0102
Bonjour le Fil ,le Forum
je n'ai pas compris quelle doivent être les Listes présentent dans les Combobox "Offres" et Coût"
ni ce qu'il faut récolter au final !
dan l'attente !
jean marie
 

Pièces jointes

  • TriBDD_1.gif
    204.4 KB · Affichages: 39

Dranreb

XLDnaute Barbatruc
@ChTi160, il faut voir les noms Liste_offre et Liste_cout, horizontales, ce qui n'est pas commode du tout. Ce ne serait rien du tout à gérer avec mon outil s'il n'y avait dans chaque ligne que deux colonnes d'un seul de chaque, plus une troisième pour la valeur…
 

bapt0201

XLDnaute Nouveau
Bonjour Chti160, merci a tous les deux pour votre aide.

@Drandreb votre outil a déjà répondu a l'un de mes problème merci, il est vrai qu'il est très pratique,

Cependant j'ai du mettre les offres en colonne car je rencontre un problème majeur :

Le fichier final doit référencer 50 offres et la base de données compte 47 000 lignes, j'ai donc trouvé la solution de les mettre en colonne pour éviter de multiplier le nombre de lignes par le nombre d'offre. Dans mon cas j'ajoute seulement les offres en colonnes.

(Je vais voir si je peux vous envoyer un fichier d'exemple avec les formules présente dans la base de données car sur celui que je vous ai envoyé la BDD est en faite issue de 2 autres BDD que j'ai regroupé pour n'en former qu'une que j'utilise pour VBA, est-ce que ce serait utile pour vous de voir ce fichier ?)

@ChTi160 pour répondre a votre question la Liste des offres est en faite en ligne le but étant de récupérer les prix qui sont référencée en ligne

et pour les coûts c'est en faite des couts fixes ils ne varient pas en fonction de l'offre mais de la zone.
Ce sont les composants du prix de l'offre par exemple pour la benne "15m3 encombrant" qui a un cout final de 500, le cout de transport sera de 150, le cout de traitement de 200 et le cout de location de 150, donc 150+200+150 = 500

Donc le but des combobox offre et couts est d'agir comme un filtre mais en masquant les colonnes des offres non sélectionnées, idem pour les couts.

J'espère que j'ai été clair, je ne suis pas très bon pour les explications désolé.
 

Dranreb

XLDnaute Barbatruc
Si ça doit rester comme ça, on ne pourra pas rechercher une offre avant d'avoir isolé une seule ligne en spécifiant suffisamment d'informations dans des ComboBox supplémentaires.
Notez qu'en ajoutant un objet ControlsAssociés on pourrait afficher dans des TextBox les informations ne paricipant pas à la recherche d'une ligne unique, une fois celle ci trouvée.
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonsoir ,
pour ce qui est de ta proposition de fichier , pourquoi pas !
y'a peut être moyen de travailler sur les deux ou trois Fichiers pour arriver a ce que tu veux !plutôt que de travailler sur cette seule Feuille !
jean marie
 

ChTi160

XLDnaute Barbatruc
Bonjour bapt0201
Bonjour le Fil , le Forum
je tente de trouver une alternative a la presentation par Colonnes des Offres !
pourrait-on avoir un Tableau qui reprendrait par Zone les Offres possibles ?
ZonesOffretransporttraitementlocation
1-131 m3 (Big-bag) Encombrants
150​
200​
150​
1,2-131 m3 (Big-bag) Gravats propres
150​
200​
150​
1,6-131 m3 (Big-bag) Déchets de chantier en mélange
150​
200​
150​

je ne sais pas si je me fais bien comprendre !
Tableau de 5 colonnes et x Lignes (évolutif)

La Zone pourrait être le moyen de rechercher les Offres possibles !
y'a t'il l'ensemble des offres pour chaque Zone (Hors hors Zone)
Dans l'attente
Jean marie
 

bapt0201

XLDnaute Nouveau
Bonjour Jean Marie, Dranreb

J'étais justement en train de rédiger ma réponse.
Je vais voir pour vous envoyer le fichier original, par soucis de confidentialité je dois modifier les données.

@Dranreb donc si je comprend bien avec la BDD telle quelle est conçue, il n'y pas la possibilité d'isoler plusieurs lignes avec une seule colonne offre. Même en indiquant a Excel de masquer la plage de données pour toutes les colonnes non indiquées dans le combobox ?
Concernant l'installation automatique du fichier CBxLCtlA, je n'arrive pas a la lancer.

Je pense a revoir la structure de la BDD pour avoir les offres dans une colonne, savez vous s'il existe une solution pour utilisé une BDD supérieur à 1M de ligne ? et ensuite avec la macro piocher les données dans ce fichier sans l'ouvrir

@ChTi160 effectivement il y a bien l'ensemble des offre pour chaque zone, le problème étant que chaque zone a un prix différent, je vais vous envoyer le fichier original ce sera sans doute plus claire pour vous après, je crois que je me suis mélangé dans mes explications

Merci pour votre aide
 

ChTi160

XLDnaute Barbatruc
Re
Ok
j'attends tes fichiers anonymisés !
le problème étant que chaque zone a un prix différent ah Ok !
combien de Zones as tu ?
il n'y pas la possibilité d'isoler plusieurs lignes avec une seule colonne offre. Même en indiquant a Excel de masquer la plage de données pour toutes les colonnes non indiquées dans le combobox ?
il y surement je pense , la possibilité de récupérer les infos d'une Colonne si tu as son Nom , sans pour cela devoir masquer les autres !
jean marie
 

Discussions similaires

Réponses
28
Affichages
2 K
Réponses
27
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…