Travailler avec 2 bases de données

Mimi

XLDnaute Occasionnel
Bonjour à tous,
Je vais essayer de m'expliquer le plus clairement possible :
J'ai construit, avec votre aide, une petite application dont certain la reconnaitront. A l'époque (merci Robert) je travaillais sur cette application avec une seule base de donnée.
Aujourd'hui ce que je recherche c'est de pouvoir travailler avec deux bases de donnée :
1 avec mes liquides (base1) et une avec mes produits (base2).
On avait trouvé cette formule pour une seule base :
=SI(B9="";"";RECHERCHEV(B9;Donn;2;FAUX))
d'où ma question, comment modifier cette formule pour pouvoir travailler avec les 2 bases.
Il i a deux userforms
D'avance je vous remercie
Michel
 

Pièces jointes

  • Essai1.xlsm
    126.2 KB · Affichages: 50
  • Essai1.xlsm
    126.2 KB · Affichages: 53
  • Essai1.xlsm
    126.2 KB · Affichages: 47

Robert

XLDnaute Barbatruc
Repose en paix
Re : Travailler avec 2 bases de données

Bonsoir Mimi, bonsoir le forum,

En pièce jointe ton fichier modifié.
Un module de classe permet d'éviter de répéter 35 fois la procédure Clic des CommandButtons de chaque UserForm.
La propriété [Tag] de ces même CommandButtons contient le code renvoyé dans la variable publique C.
La propriété [Tag] des UserForms contient le nom de la base de données à utiliser renvoyé dans la variable publique B...

Autrement dit, à l’initialisation de l'une des deux UserForms, la base est définie par la ligne :
Set B = Sheets(Me.Tag)
Ensuite, un clic dans l'un des 35 CommandButtons de l'UserForm renvoie au module de classe Class_CB qui va récupérer le code stocké dans la propriété [Tag] du contrôle et renvoyer dans la variable C.
Le reste se fait dans la procédure Placer commune aux deux UserForms.

Les boucles, pour la propriété [Caption] des CommandButtons et le module de classe épurent considérablement ton code initial. Il n'y a plus de formules, le code récupère désignation et prix en fonction du code C et de la base B.
Le fichier :
 

Pièces jointes

  • Mimi_v01.xlsm
    121.6 KB · Affichages: 35

Mimi

XLDnaute Occasionnel
Re : Travailler avec 2 bases de données

Bonjour Robert,
Encore une fois tu as été très fort pour m'aider à évoluer dans ce projet.
Mais (oui il y a un mais) je prends un liquide dans le premier userform (ex: le premier bouton) il se note bien sur ma fiche, le probleme c'est que quand je prends le premier bouton de l'userform produit il remplace la ligne du premier et multiplie la quantité.
Et c'est la le problème, je voudrais, enfin si c'est possible, que lorsque je clique sur le premier bouton de l'userform produit que sa se mette à la ligne suivante.
Enfin dans la colonne code TVA il y a 1 ou 2, ce qui me sert de calculer en E31 et E32 de la fiche la TVA de tous ce qu'il y a dans les deux bases. Les deux bases de données peuvent contenir jusqu'à 500 liquides ou produit.
D'avance merci
Mimi
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Travailler avec 2 bases de données

Bonjour Mimi, bonjour le forum,

En pièce jointe la version 2. J'ai changé les codes pour qu'ils diffèrent selon la base. Le premier caractère du code correspond au numéro de la base (1 pour Base1, 2 pour Base2, etc...). Tu peux avoir autant de bases que tu veux... Ensuite le caractère "underscore" (_), suivi d'un numéro correspondant à l'ancien code. La propriété [Tag] des CommandButtons n'est plus écrite en dur mais spécifiée à l'initialisation de l'UserForm.

Tu peux avoir autant d'UserForms que tu désires. Il te faut juste leur attribuer en dur le nom de la base de données auquel elle se réfère dans la propriété [Tag].
Tu crées par exemple une UserForm que tu nommes Desserts. Elle se réfère à la base de données Base3. Sélectionne l'Userform et écris Base3 dans sa propriété [Tag]...
Ensuite, a l'initialisation, j'utilise une boucle qui récupère les [Caption] et définit les [Tag] des CommandButtons. Il faut que tu veilles à ce que ce soit cohérent avec les codes dans la base de données.
Le fichier :

[Édition]
Bonjour Lætitia on s'est croisé. Je pense aussi qu'une seule UserForm peut suffire avec, par exemple, une ComboBox au début pour déterminer son rayon d'action dans les produits...

 

Pièces jointes

  • Mimi_v02.xlsm
    127.5 KB · Affichages: 29
Dernière édition:

Mimi

XLDnaute Occasionnel
Re : Travailler avec 2 bases de données

Bonjour Laetitia, Robert,

Ok pour moi grâce à vous, mais (embêtant ces mais) pouvez-vous m'expliquer comment faire avec un combobox pour définir mes bases de données sur un seul userform.
Merci
Mimi
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Travailler avec 2 bases de données

Bonsoir Mimi, bonsoir le forum,

En pièce jointe une version 3 avec une seule UserForm et une seule base de données.

Tu peux rajouter autant de Catégories que tu veux avec toutefois trois conditions :
• La catégorie ne peux pas avoir de doublons (deux catégories : Plat du Jour par exemple)
• La première cellule en colonne A de la catégorie doit impérativement contenir le mot Catégorie (avec un C majuscule)
• Chaque catégorie doit être séparée de sa précédente par une ligne vide...
(voir ficher joint)

En haut de l'UserForm, une ComboBoxte permet de choisir la catégorie.
L'UserForm s'ouvre par défaut sur la première catégorie de la liste mais tu peux définir la catégorie par défaut en changeant la valeur de la propriété
[ListIndex]
dans le code d'initialisation de l'UserForm :
Code:
Me.ComboBox1.ListIndex = 0 'définit la catégorie par défaut (ici la première)


L'Userform ne contient que 35 boutons (d'article) mais une catégorie peux contenir autant d'articles que tu le désires. Un SpinButton s'affiche (au delà des 35 articles) te permettant de passer à la suite et de revenir... Je te conseille toutefois d'éviter de trop charger car après il faut tout mémoriser.

Seuls s'affichent les CommandButtons dont la désignation est renseignée dans la base de données.

Si tu modifies la base de donnée (en respectant les 3 règles au dessus) ne te soucis pas des codes en colonne A. Le bouton Créer les Codes permet de remettre à jour les codes des articles pour qu'il n'y ait pas de doublon...

Le fichier :
 

Pièces jointes

  • Mimi_v03.xlsm
    109.3 KB · Affichages: 34

Mimi

XLDnaute Occasionnel
Re : Travailler avec 2 bases de données

Bonjour Robert,
Je tiens à te remercier sincèrement de l'avancée que tu m'as fait dans mon projet.
J'ai pu faire deux bases de données 1 pour les liquides et 1 pour les menus.
Par contre dans la feuille base je gère les stocks liquides donc j'ai rajouter une colonne stock.
Comment je peux faire pour lorsque je sélectionne un liquide sa déduise -1 dans la colonne stock.
Merci
Michel
 

Pièces jointes

  • travailler-avec-2-bases-de-donnees-mimi_v03.xlsm
    166.1 KB · Affichages: 35

Robert

XLDnaute Barbatruc
Repose en paix
Re : Travailler avec 2 bases de données

Bonjour Mimi, bonjour le forum,

Tu as augmenté le nombre de CommandButtons (de 35 à 40) sans modifier le code qui permet de passer les pages. Ça ne marche plus comme il faut. Avec deux bases tu peux avoir deux fois le même code et donc ça ne marche plus non plus. Je ne peux pas passer mon temps à mettre en place tes nouvelles requêtes.... Tu abuses, Je passe la main !
 

Mimi

XLDnaute Occasionnel
Re : Travailler avec 2 bases de données

Bonjour Robert,
J'avais pas vu pour la deuxième base je vais la supprimer et reprendre le fichier version 3
Désolé pour la gêne que j'ai pu occasionner.
Je vais voir pour trouver la gestion de la colonne stock
Merci
Mimi
 

Discussions similaires