Gestion base données excel pour commerciaux

PERSEVERANT

XLDnaute Junior
Bonsoir à toutes et tous,
je me suis lancé dans un projet, pour faciliter le travail de mes collaborateurs, qui dépasse mes capacités en informatiques. Je viens donc sur ce forum chercher l'aide de gens bien plus compétents que moi.

Mon sujet est le suivant, créer une base de données sous excel 2010, dont vous trouverez ci-joint le modèle, qui permette à des commerciaux de faire des devis et de les modifier au gré des fantaisies de leurs clients.

La base se crée dans un onglet BD alimenté en seconde ligne par les saisies faites dans l'onglet Saisie.
Un onglet Consultation permet de revoir et de modifier, si besoin en est, les données déjà renseignées.
Cet onglet consultation doit pouvoir afficher des données déjà existantes dans l'onglet BD. J'utilise pour celà la fonction index.

Et c'est la que les choses se corsent pour moi.

Je voudrais pouvoir accéder à un enregistrement précis dans BD pour alimenter toutes mes cellules de Consultation. Ma base étant alimentée tout au long de la journée, elle n'est donc pas triée. Je pensais pouvoir sélectionner cet enregistrement précis au travers de 3 critères, le Nom du client, la Date de départ et la Destination. Mais je suis incapable de mettre en place les formules qui me permettraient d'avoir 3 listes déroulantes en cascade pour filtrer mes enregistrements de BD. Le Nom des clients revient plusieurs fois, il me faut donc une liste déroulante sans doublon. Cette première sélection devrait me permettre de créer une seconde liste déroulante avec les Dates de départ correspondant uniquement au client sélectionné, et au cas ou il y aurait plusieurs devis avec le même client à la même date de finir la sélection par la Destination.

Une fois ces trois critères définis, je ne devrais plus avoir qu'un seul enregistrement correspondant à mes besoins, je pourrais alors récupérer le N° de l'enregistrement pour alimenter mes diverses cellules.

Suis-je déraisonnable en pensant que tout ceci est réalisable ? J'évite autant que faire se peux le VBA, mais si je dois y passer...

Par avance merci de vos remarques et suggestions, je patauge depuis deux semaines et n'ai pas su résoudre mon problème.

Cordialement
PERSEVERANT
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonsoir
Pourquoi évitez vous VBA ?
Il y a un UserForm pourtant.
Si vous prévoyez une ComboBox pour chacun des 3 critères, j'ai justement un outil qui peut les prendre en charge complètement et renvoyer à l'UserForm un numéro de ligne dans le tableau, donc un numéro d'enregistrement.
On peut en équiper votre classeur ou utiliser un complément Excel obtenu à partir de ce classeur.

*** Pièce jointe supprimée, remplacée au #39 ***
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Bonsour®
je me suis lancé dans un projet qui dépasse mes capacités en informatiques.

créer une base de données qui permette à des commerciaux de faire des devis et de les modifier au gré des fantaisies de leurs clients.

Un onglet Consultation permet de revoir et de modifier, si besoin en est, les données déjà renseignées.

Je voudrais pouvoir accéder à un enregistrement précis dans BD pour alimenter toutes mes cellules de Consultation.

Suis-je déraisonnable en pensant que tout ceci est réalisable ?
PERSEVERANT
Non ...;) c'est ... heu ... oui ... réalisable...

J'ai toujours été surpris et émerveillé des capacités et persévérance de certains utilisateurs...:cool:

Mais tu va y passer un temps fou à mettre ceci au point, corriger des anomalies et peut-être mettre en danger ton "bizness" par de trop nombreuses interventions d'évolutions, de réparations ou modifications.

Il y a des outils éprouvés et mieux adaptés, pour arriver plus facilement à tes souhaits...
Une mise à plat du contexte existant et des besoins te permettra de cerner l'ampleur de la tâche...
Utilises plutôt un logiciel comme Access avec un moteur et des tables de données relationnelles (SGBDR), controle d'intégrité, rollback, accès simultanés, Requêtes automatiques (QBE), langage de programmation et SQL.
Bien sûr pour tes stats ou tableaux de bords Excel pourra avoir accès aux données

Je suis un addict d'EXCEL, mais mon expérience dans le domaines des bases de données en utilisation professionnelle m'interdit de te conforter dans la voie Excel.
Désolé...
 

Dranreb

XLDnaute Barbatruc
Pour information, ce code dans un UserForm muni de 3 ComboBox, nommées CBxNomClient, CBxDateDépart et CBxDestinat, a assumé du premier coup leurs réactions correctes dans votre classeur une fois le projet CBxL ajouté aux références :
VB:
Option Explicit
Private WithEvents CL As CBxL.ComboBoxLiées

Private Sub UserForm_Initialize()
Set CL = CBxL.Création.ComboBoxLiées
CL.Plage Feuil3.Rows(2)
CL.Add Me.CBxNomClient, "G"
CL.Add Me.CBxDateDépart, "I"
CL.Add Me.CBxDestinat, "H"
CL.CouleurSympa
CL.Actualiser
End Sub
 

PERSEVERANT

XLDnaute Junior
Bonsoir
Pourquoi évitez vous VBA ?
Il y a un UserForm pourtant.
Si vous prévoyez une ComboBox pour chacun des 3 critères, j'ai justement un outil qui peut les prendre en charge complètement et renvoyer à l'UserForm un numéro de ligne dans le tableau, donc un numéro d'enregistrement.
On peut en équiper votre classeur ou utiliser un complément Excel obtenu à partir de ce classeur.

Bonjour Dranreb,
Pourquoi j'évite le VBA, mais tout simplement parce que je ne le maîtrise pas assez bien et qu'en conséquence j'y passe beaucoup trop de temps pour un résultat assez médiocre :(.
Ceci dit je ne demande qu'à m'améliorer, grâce à des bonnes volontés comme la votre, ce dont je vous remercie.
Bien sur que je veux bien améliorer l'équipement du classeur.
Cordialement
Persevérant
 

PERSEVERANT

XLDnaute Junior
Bonsour®
Non ...;) c'est ... heu ... oui ... réalisable...

J'ai toujours été surpris et émerveillé des capacités et persévérance de certains utilisateurs...:cool:

Mais tu va y passer un temps fou à mettre ceci au point, corriger des anomalies et peut-être mettre en danger ton "bizness" par de trop nombreuses interventions d'évolutions, de réparations ou modifications.

Il y a des outils éprouvés et mieux adaptés, pour arriver plus facilement à tes souhaits...
Une mise à plat du contexte existant et des besoins te permettra de cerner l'ampleur de la tâche...
Utilises plutôt un logiciel comme Access avec un moteur et des tables de données relationnelles (SGBDR), controle d'intégrité, rollback, accès simultanés, Requêtes automatiques (QBE), langage de programmation et SQL.
Bien sûr pour tes stats ou tableaux de bords Excel pourra avoir accès aux données

Je suis un addict d'EXCEL, mais mon expérience dans le domaines des bases de données en utilisation professionnelle m'interdit de te conforter dans la voie Excel.
Désolé...
Bonjour Modeste geedee,
Oui je sais bien qu'une vraie base de donnée c'est mieux sous Access, mais je n'ai pas Access à ma disposition, alors en attendant d'y passer, il faut bien avancer :rolleyes:
Cordialement
Persévérant, mais pas tétu
 

PERSEVERANT

XLDnaute Junior
Pour information, ce code dans un UserForm muni de 3 ComboBox, nommées CBxNomClient, CBxDateDépart et CBxDestinat, a assumé du premier coup leurs réactions correctes dans votre classeur une fois le projet CBxL ajouté aux références :
VB:
Option Explicit
Private WithEvents CL As CBxL.ComboBoxLiées

Private Sub UserForm_Initialize()
Set CL = CBxL.Création.ComboBoxLiées
CL.Plage Feuil3.Rows(2)
CL.Add Me.CBxNomClient, "G"
CL.Add Me.CBxDateDépart, "I"
CL.Add Me.CBxDestinat, "H"
CL.CouleurSympa
CL.Actualiser
End Sub
Rebonjour Dranreb,
l'une des raisons qui me fait me tenir un peu à distance du VBA c'est ce "jargon" qui vous semble si évident à tous et qui est si peu parlant pour moi.
Mais avec un peu plus de pratique je ne doute pas d'arriver à en saisir le sens.
Je vais essayer ce petit code joint et reviens donner des nouvelles.
Merci
Persévérant
 

Dranreb

XLDnaute Barbatruc
Bonjour.
N'hésitez pas à demandez le sens d'un mot qui vous est obscur.
Ça vaut certainement mieux que de s'y habituer sans jamais vraiment le comprendre.
Il y a comme ça des mots de jargon essentiels, comme projet, module, procédure, variable, global, local, expression, type, objet, méthode, propriété, qu'il faudrait posséder couramment dans son vocabulaire avant toute chose et non pas au fur et à mesure.
 

PERSEVERANT

XLDnaute Junior
Bonjour.
N'hésitez pas à demandez le sens d'un mot qui vous est obscur.
Ça vaut certainement mieux que de s'y habituer sans jamais vraiment le comprendre.
Il y a comme ça des mots de jargon essentiels, comme projet, module, procédure, variable, global, local, expression, type, objet, méthode, propriété, qu'il faudrait posséder couramment dans son vocabulaire avant toute chose et non pas au fur et à mesure.
Merci Dranreb
je note et si besoin je reviens vers vous, pour l'instant j'essaye de mettre la Userform avec ses comboBox dans ma feuille Excel et comme je fais ça entre deux interventions avec mes collaborateurs, je ne suis pas d'une productivité exceptionnelle.

Rien n'est insurmontable, j'ai l'abominable besoin de comprendre pour mémoriser, ça va venir.
Encore merci
Persévérant
 

PERSEVERANT

XLDnaute Junior
Pour afficher un UserForm, invoquez sa méthode Show.
Bonsoir Dranreb

quelques minutes de pause dans une activité un peu chargée, me revoilà avec ce qui vous semble si simple et évident.

Oui j'ai bien vérifié que le "Show" état "True".
Mais les questions sont:
"ou est-ce que c'est sensé apparaître ?"
A moins que ça ne soit
"comment lie t'on mes CBox avec le UserForm ou le Module ?"
"Dois-je utiliser les zones de listes déroulantes que j'ai crées dans la feuille Consultation, ou bien celles que je dois créer dans le UserForm ?"

Si je faisais tout en VBA peut être que je serais moins perdu, là j'ai déjà créé des feuilles et je complète avec du code et je suis loin, très loin d'avoir votre pratique. Ce qui vous semble simple, et l'est sans doute, vous fait sauter des étapes qui pour moi sont essentielles; d'ou mes questions (de néophite) ci dessus.

Merci de votre patience, et de votre aide.
Cordialement
Persévérant, mais pas hyper doué
 

Dranreb

XLDnaute Barbatruc
Vous devez parler de sa propriété ShowModal. Moi je vous parlais de sa méthode Show qu'il faut exécuter pour l'afficher, n'ayant pas trop compris ce que vous entendiez par 'mettre la Userform avec ses comboBox dans ma feuille Excel'.
Si vous utilisez un objet ComboBoxLiées, il décrète des évènements pour informer l'UserForm de ce qui se passe. Il suffit de sélectionner le nom de l'objet (CL en général) dans la liste de gauche qui surmonte la fenêtre de code pour faire venir déjà un modèle de procédure réagissant à son évènement Change, et de sélectionner dans celle de droite les noms des autres évènements que vous voulez traiter. Par ailleurs vous ne vous occupez pas du tout des listes pour les ComboBox dont il a la charge, il se débrouille tout seul à partir de ce qui existe dans la base de données.
 

PERSEVERANT

XLDnaute Junior
Vous devez parler de sa propriété ShowModal. Moi je vous parlais de sa méthode Show qu'il faut exécuter pour l'afficher, n'ayant pas trop compris ce que vous entendiez par 'mettre la Userform avec ses comboBox dans ma feuille Excel'.
Si vous utilisez un objet ComboBoxLiées, il décrète des évènements pour informer l'UserForm de ce qui se passe. Il suffit de sélectionner le nom de l'objet (CL en général) dans la liste de gauche qui surmonte la fenêtre de code pour faire venir déjà un modèle de procédure réagissant à son évènement Change, et de sélectionner dans celle de droite les noms des autres évènements que vous voulez traiter. Par ailleurs vous ne vous occupez pas du tout des listes pour les ComboBox dont il a la charge, il se débrouille tout seul à partir de ce qui existe dans la base de données.
Je vois que je ne suis pas très clair non plus, je vais essayer de faire mieux !
Je suis tellement au ras des pâquerettes que vous n'imaginez pas qu'on puisse être aussi basique.
Dans la feuille Consultation de mon fichier j'avais créé 3 zones de listes déroulantes pour afficher les noms des clients, la date de départ et la destination. J'ai ensuite créé ( plus honnêtement recopié) votre code dans un module je ne savais pas si je devais créer un nouvel UserForm et recréer les 3 ComboBox ou utiliser les 3 déjà existantes. J'ai donc créé un nouvel UserForm avec les 3 ComboBox. Mais je ne sais toujours pas si je dois utiliser ce que j'avais fait initialement, ni comment les faire fonctionner avec le module créé; ou si je devais utiliser le nouvel UserForm avec le nouveau module et comment mettre ces 3 ComboBox en lieu et place de mes zones de listes déroulantes dans la feuille Consultation .
Est-ce plus clair pour vous ?
Comment fais-je pour que ces ComboBox soient positionnées en E4 à E9 ( position peut être approximative je n'ai pas le fichier sous la main) pour avoir accès à elles dans ma feuille Consultation ?
Et ensuite comment fais-je pour que le VBA du module fasse fonctionner l'ensemble ?
Pour moi c'est aussi clair que d'admettre que la vitesse de la lumière est infinie et non dépassable et que pourtant une lumière allumée à l'arrière d'une fusée qui se déplace à la vitesse de la lumière peut atteindre l'avant de la fusée. Albert Einstein, la théorie de la relativité. Mais je n'ai pas le génie d'Albert.
Cordialement
Persévérant.
 

Dranreb

XLDnaute Barbatruc
Pourquoi tenez vous à déplacerez les ComboBox vers la feuille ? Laissez les dans l'UserForm c'est tout. Vous pourrez faire un essai d'affichage au moyen de la touche F5.
 

ChTi160

XLDnaute Barbatruc
Bonjour PERSEVERANT
Bonjour le Fil ,"Dranreb" ,Le Forum
Comme le laisse entendre Dranreb , pas logique ,car comment à partir de la feuille gérer des éléments multiples .
Exemple : je sélectionne la Date du 08/03/2016 , je stocke ou ? les différentes réponses ,pas dans la feuille .
donc il faudrait définir le Critère à partir du quel afficher la réponse unique si réponse Unique lol
je ne sais pas si je me fais comprendre. Lol
la Recherche devrait donc être orientée , Dabord : le Client puis , la Date et la Destination ,pour affichage dans la feuille . si pas dans l'ordre pas possible .
Ce qui limite la recherche que permet "l' Objet ComboBoxLiées" de Dranreb .
enfin moi je travaille à une autre méthode mais toujours via un Userform .
dans l'attente
Bonne journée
Amicalement
Jean marie
 
Dernière édition:

PERSEVERANT

XLDnaute Junior
Bonjour PERSEVERANCE
Bonjour le Fil ,"Dranreb" ,Le Forum
Comme le laisse entendre Dranreb , pas logique ,car comment à partir de la feuille gérer des éléments multiples .
Exemple : je sélectionne la Date du 08/03/2016 , je stocke ou ? les différentes réponses ,pas dans la feuille .
donc il faudrait définir le Critère à partir du quel afficher la réponse unique si réponse Unique lol
je ne sais pas si je me fais comprendre. Lol
la Recherche devrait donc être orientée , Dabord : le Client puis , la Date et la Destination ,pour affichage dans la feuille . si pas dans l'ordre pas possible .
Ce qui limite la recherche que permet "l' Objet ComboBoxLiées" de Dranreb .
enfin moi je travaille à une autre méthode mais toujours via un Userform .
dans l'attente
Bonne journée
Amicalement
Jean marie
Bonjour à tous,

Bonjour ChTi160,
Je note le "si pas dans l'ordre pas possible".
S'il n'y a que ça je peux toujours inclure dans la macro un tri de la base avant de faire la suite.
Pour ce qui est de stocker, je ne pense pas en avoir besoin, mes infos sont dans la base, je veux juste pouvoir trouver le N° de ligne ou d'enregistrement et par le biais d'INDEX je remplirai mes cases.
Pour ce qui est de la recherche, en effet il faut d'abord sélectionner le Client (sans doublon pour limiter la liste déroulante), ensuite pour le client choisi uniquement proposer les dates (sans doublon) et enfin toujours uniquement pour ce client et la date sélectionnée, la destination (s'il y en a plusieurs ce qui peut être possible).

Bonjour Dranreb,
je ne cherche pas spécialement à déplacer les ComboBox, je cherche à comprendre (et à faire) comment mes collaborateurs accèdent à la sélection qu'ils doivent faire. S'ils ont les ComboBox que j'ai placées dans la feuille, je sais comment ils font, puisqu'elles sont sous leurs yeux ; si ça passe par l'UserForm il doit falloir faire une manipulation (laquelle ?) pour qu'ils y accèdent, je ne sais pas, lancer la macro par exemple, auquel cas il faut que je crée un bouton macro et que j'y affecte la macro correspondante... Je suis très basique, mais ça n'est pas aussi simple qu'il y paraît pour moi.

Cordialement
Persévérant
 

ChTi160

XLDnaute Barbatruc
Re
PERSEVERANT ,je pense que l'on ne s'est pas compris quand je parle de : "si pas dans l'ordre pas possible".
Ce n'est pas le tri de la Base ,mais l'ordre dans lequel effectuer la recherche via les Combobox .
puis le Stockage , c'est lorsque tu recherches via une Date Unique (dans le Combobox) ,il peut y avoir dans la base de données plusieurs lignes avec cette Date , Idem pour le Client et la Destination . donc le stockage de toutes ces lignes qui répondent à un Critère , puis à deux , puis enfin à trois , cela ce fait dans une ListBox ou une ListView , au fur et à mesure des sélections dans les différents Combobox .
je ne sait pas si j'ai été plus Clair ! Lol
dès que j'ai une proposition je poste
Bonne continuation
Amicalement
Jean marie
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Oui, un bouton c'est pas mal.
Soit un bouton de formulaire auquel on affecte une macro qui affiche l'UserForm,
Soit un bouton ActiveX dont c'est le code associé qui le fait.
Vous pouvez aussi prévoir son affichage lors de l'activation d'une feuille si vous voulez.

Bien que je pense qu'il vaudrait mieux tout afficher dans des contrôles de l'UserForm, il serait possible d'obtenir un résultat provisoire assez rapide en ajoutant cette procédure :

VB:
Private Sub CL_BingoUn(ByVal Ligne  As Long)
CL.PlgTablo.Rows(Ligne).Name = "LBD"
End Sub
Ça permettrait en effet des formules genre :
Code:
=$A:$A LBD
Pourquoi ne feriez vous pas subir à votre BD une mise sous forme de tableau ?
Ça vous permettrait de supprimer tout ces noms apportés manuellement au profit des titres des colonnes du tableau.
Surtout qu'alors l'objet ComboBoxLiée reconnait l'objet ListObject qui représente ce tableau et reconnait aussi les titres des colonnes:
VB:
Option Explicit
Private WithEvents CL As CBxL.ComboBoxLiées

Private Sub UserForm_Initialize()
Set CL = CBxL.Création.ComboBoxLiées
CL.Plage Feuil3
CL.Add Me.CBxNomClient, "Client"
CL.Add Me.CBxDateDépart, "Date Départ"
CL.Add Me.CBxDestinat, "Destination"
CL.CouleurSympa
CL.Actualiser
End Sub

Private Sub CL_BingoUn(ByVal Ligne As Long)
CL.PlgTablo.Rows(Ligne).Name = "LBD"
End Sub
La formule pourrait devenir pour C4 :
Code:
=Tableau1[Vendeur] LBD
 
Dernière édition:

PERSEVERANT

XLDnaute Junior
Re
PERSEVERANT ,je pense que l'on ne s'est pas compris quand je parle de : "si pas dans l'ordre pas possible".
Ce n'est pas le tri de la Base ,mais l'ordre dans lequel effectuer la recherche via les Combobox .
puis le Stockage , c'est lorsque tu recherches via une Date Unique (dans le Combobox) ,il peut y avoir dans la base de données plusieurs lignes avec cette Date , Idem pour le Client et la Destination . donc le stockage de toutes ces lignes qui répondent à un Critère , puis à deux , puis enfin à trois , cela ce fait dans une ListBox ou une ListView , au fur et à mesure des sélections dans les différents Combobox .
je ne sait pas si j'ai été plus Clair ! Lol
dès que j'ai une proposition je poste
Bonne continuation
Amicalement
Jean marie
Bonjour Jean Marie
Oui c'est plus clair en effet.
C'est bien mon problème, j'ai le même client qui revient (heureusement d'ailleurs) plusieurs fois dans l'année, et peut demander pour une même date plusieurs devis, d'ou la troisième sélection sur la destination qui elle sera unique pour un client et une date.
Je comprends cette notion de stockage intermédiaire, je ne sais pas la faire, mais je comprends le principe.
Merci
Jean Michel
 

Discussions similaires


Haut Bas