Gestion base données excel pour commerciaux

Dranreb

XLDnaute Barbatruc
Demande : Quel fichier puis je utiliser pour tester ?
Heu… de préférence toujours le plus récent. Mais je n'ai rien changé ces jours ci dans les fonctionnalités d'utilisation. Pas sûr d'avoir compris la question…
 

ChTi160

XLDnaute Barbatruc
Re Lol
Non je voulais dire un fichier de données Lol
Mais bon , j'avais jusqu’à aujourd’hui , peur d'utiliser ton Fichier , mais voila je me suis lancer deux colonnes de Données , Un Userform , deux Combo , une vérification que "Comboboxs Liées" était bien cochée dans atteindre "Compléments Excel"
lecture de l'aide , Copie de l'exemple , puis modification des Noms des Combobox dans mon Userform.
Outils /Références , je coche "CBxl" et en route .
affichage du Userform et la , deux ComboBox au Fond Bleu , Remplis de mes données et qui en plus Son Liées Lol
Ca ne pouvait pas être plus simple .
Merci "Dranreb" pour ce joli cadeaux
En espérant que Jean Michel , puisse arriver à ses fins .
Bonne fin de Journée
Amicalement
Jean marie
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
Bon quand je teste ,je teste Lol
j'ai remarqué , que lorsque que je sélectionne une donnée dans le Combobox 1 , que je sélectionne une correspondance dans le Combobox 2
si je vais dans Combobox 1 et que je sélectionne une autre Donnée ,le Combobox2 se rempli bien ,mais conserve dans sa propriété "Text" laffichage du texte de la sélection précédente , même si elle n'est pas présente dans la nouvelle Liste de Sélections ?
Ce problème , je l'ai déjà rencontré avec l'utilisation De Combobx2.Clear , qui ne prends pas en compte la Propriété Combobx2.Text d'ou mon utilisation des Deux cumulées :
VB:
With .ComboBox 2
                              .Text=""
                              .Clear
                             .List=Tablo ' par exemple
End With
Mais je le répète je ne suis pas un pro Lol
y'a peut être une autre Solution .
Bonne fin de Journée
Amicalement
Jean marie
 

Dranreb

XLDnaute Barbatruc
Pour qu'il ne puisse pas subsister de valeur d'une ComboBox disparue de sa nouvelle List, il convient d'avoir mis à True la propriété CorrespRequise. Sinon une valeur induite par les autres choix n'y est en principe quand même pas conservée, à moins d'avoir cliqué dedans entre temps. Mais alors son fond devient rougeâtre si on a exécuté la méthode CouleursSympa. Tout dépend si c'est de la consultation ou de la mise à jour devant permettre d'entrer des valeurs inexistantes.
Il faut éviter de modifier les ComboBox prise en charge par l'objet ComboBoxLiées. Cela provoque une recherche, et l'effacement peut être annulé si par exemple il contient le seul choix possible compte tenu de ceux effectués dans les autres ComboBox. L'objet est muni d'une méthode Nettoyer qui efface toutes les ComboBox.
Si on veut pouvoir en prendre le contrôle et modifier leurs List etc., il possède aussi une méthode Stopper à invoquer préalablement. (rubrique POUR UTILISATION AVANCÉE de l'aide)
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour
Suite aux observations, j'ajoute en colonne D de la feuille Aide CBxL ces quelques points sans rapport avec l'installation ni la programmation.
Quelques règles concernant les réactions des ComboBox gérées​
Une combobox garde la liste qu'elle avait avant le choix, non restreinte par les choix ultérieurs des autres.
Elle garde sa valeur même ne figurant plus dans la nouvelle liste qui lui est attribuée, sauf :
1) — Si CL.CorrespRequise a été mis True
2) — Si elle était assumée, ce qui est signalé en vert profond si CL.CouleurSympa à été demandé.​
Cependant avec CouleurSympa l'inexistant ainsi conservé est signalé en rouge clair.
Cliquer dedans alors que sa valeur est assumée la fige. Elle passe en vert fluorescent avec CouleurSympa.
 
Dernière édition:

PERSEVERANT

XLDnaute Junior
Bonjour Dranreb, ChTi160, le fil
plus d'image plus de son depuis une semaine
peut être juste quelques jours de congés
à moins que vous ne vous soyez étranglés avec vos procédures...
Amicalement
Jean Michel
 

PERSEVERANT

XLDnaute Junior
Bonjour.
Y avait il un problème en suspend ?
Bonjour Dranreb, à tous
c'était la question que je posais ! Au vu des derniers échanges, qui n'étaient peut être que des échanges entre vous et Jean Marie sur des aspects techniques.
Je me demandais donc quelle était la dernière et bonne version pour les ComboBox que je devais utiliser dans ma base celle de # 35 ?
Amicalement
Jean Michel
 

Dranreb

XLDnaute Barbatruc
Celle ci.

Remarque: À ouvrir pour que s'exécute son code d'installation.

Remplacé.
 

Fichiers joints

Dernière édition:

PERSEVERANT

XLDnaute Junior
Bonjour.
Y avait il un problème en suspend ?
Bonjour Dranreb, bonjour à tous
après relecture et test j'ai en effet un problème.
Les 3 ComboBox affichent bien une sélection unique mais je ne vois pas ou je récupère l'info attendue de cette sélection le N° d'enregistrement ou le N° de la ligne de cet enregistrement.
C'est cette information qui va alimenter toute la partie gauche de ma feuille Consultation et la deuxième ligne (qui sera masquée) de cette même feuille. La recherche via les Combo ne me sert qu'à aller récupérer toutes les informations que je veux pouvoir visualiser.
Amicalement
Jean Michel
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Sélectionnez CL (Si c'est bien le nom que vous avez adopté pour votre variable WithEvents As ComboBoxLiées) dans la liste de gauche ("Objet") qui surmonte la fenêtre de code dans la programmation de l'UserForm.
S'il n'y a encore aucun évènement pris en charge, ça vous installera déjà le modèle de procédure qui l'avertira qu'une ComboBox a changé.
Si vous êtes sûr qu'on aboutira toujours à une seule ligne quand tous les choix sont faits, vous pouvez utiliser l'évènement BingoUn (à sélectionner dans la liste de droite, "Procédure", cette fois) pour connaitre le numéro de ligne dans CL.PlgTablo qui est ainsi localisé.
Conseil: Faites y :
VB:
LCou = Ligne: VLgn = CL.PlgTablo.Rows(LCou).Value
pour avoir toutes les valeurs dans un tableau VBA d'une ligne et plusieurs colonnes. Ça limitera les accès aux cellules, toujours pénalisants.
Déclarez en tête:
VB:
Private LCou As Long, VLgn()
Du moins, si vous voulez aller plus loin, en alimentant des TextBox dans un UserForm un peu plus élaboré.
Parce que dans ce que j'avais proposé, j'avais déjà utilisé cet évènement BingoUn pour nommer "LBD" la plage de la ligne atteinte de façon à pouvoir utiliser des formules toutes simples qui identifient une colonne, puis, derrière un espace après, ce LBD. Ça restitue la valeur à l'intersection de la colonne et de la ligne.
 

ChTi160

XLDnaute Barbatruc
Bonjour Jean Michel
Bonjour le Fil,Le Forum
je n'ai pas ton fichier , mais regarde le Post #36 ou je transfère les données en sélectionnant la ligne dans la Listbox , ça peut aider ! Lol
Bonne fin de Journée
Amicalement
Jean marie
 

PERSEVERANT

XLDnaute Junior
Bonjour.
Sélectionnez CL (Si c'est bien le nom que vous avez adopté pour votre variable WithEvents As ComboBoxLiées) dans la liste de gauche ("Objet") qui surmonte la fenêtre de code dans la programmation de l'UserForm.
S'il n'y a encore aucun évènement pris en charge, ça vous installera déjà le modèle de procédure qui l'avertira qu'une ComboBox a changé.
Si vous êtes sûr qu'on aboutira toujours à une seule ligne quand tous les choix sont faits, vous pouvez utiliser l'évènement BingoUn (à sélectionner dans la liste de droite, "Procédure", cette fois) pour connaitre le numéro de ligne dans CL.PlgTablo qui est ainsi localisé.
Conseil: Faites y :
VB:
LCou = Ligne: VLgn = CL.PlgTablo.Rows(LCou).Value
pour avoir toutes les valeurs dans un tableau VBA d'une ligne et plusieurs colonnes. Ça limitera les accès aux cellules, toujours pénalisants.
Déclarez en tête:
VB:
Private LCou As Long, VLgn()
Du moins, si vous voulez aller plus loin, en alimentant des TextBox dans un UserForm un peu plus élaboré.
Parce que dans ce que j'avais proposé, j'avais déjà utilisé cet évènement BingoUn pour nommer "LBD" la plage de la ligne atteinte de façon à pouvoir utiliser des formules toutes simples qui identifient une colonne, puis, derrière un espace après, ce LBD. Ça restitue la valeur à l'intersection de la colonne et de la ligne.
J'aime bien la fin, celle qui parle de simplicité.
Si BingoUn existe déjà (encore faut il que je le trouve) et me fournit toutes les données de ma ligne ça me semble répondre à mon besoin, mais la encore comment est-ce que je récupère ces données ? Je vais voir le post de ChTi160, qui semble avoir une solution que j'ai du laisser passer. Et avec les deux je vais bien trouver un moyen de...
Merci
 

PERSEVERANT

XLDnaute Junior
Bonjour Jean Michel
Bonjour le Fil,Le Forum
je n'ai pas ton fichier , mais regarde le Post #36 ou je transfère les données en sélectionnant la ligne dans la Listbox , ça peut aider ! Lol
Bonne fin de Journée
Amicalement
Jean marie
Bonsoir Jean Marie
je viens de revoir le#36 et en effet ton test affiche bien les données, et en particulier le N° d'enregistrement. Le curseur est d'ailleurs positionné sur la bonne ligne dans la base de données. Mais même question qu' Dranreb, ou est stockée l'info pour que je la récupère la où j'en ai besoin ?
En clair pour le béotien que je suis, cette info est stockée quelque part, comment je trouve sa cachette et comment puis-je afficher cette info pour m'en resservir dans ma feuille excel ?
Je suis un non informaticien, comme sans doute de nombreuses personnes qui viennent poser des questions sur ce site, ce que vous dîtes (Dranreb et toi) est sans doute évidant, mais nous autres (au moins un certain nombre d'entre nous) passons des heures à chercher dans les codes ce qui pour vous est d'une évidence rare.
Amicalement
Jean Michel
 

Dranreb

XLDnaute Barbatruc
Je n'ai pas joint depuis le #35 de nouvelle version de CBxLiéesPERSEVERANT.xlsm,
son UFmConsult est muni d'une Private Sub CL_BingoUn, je rappelle l'ensemble du code à tout hasard :
VB:
Option Explicit
Private WithEvents CL As CBxL.ComboBoxLiées

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

Private Sub CL_BingoUn(ByVal Ligne As Long)
CL.PlgTablo.Rows(Ligne).Name = "LBD"
End Sub

Private Sub CBnEffacer_Click()
CL.Nettoyer
End Sub
et les formules en C4:C8 récupèrent déjà les informations.
En C4 :
Code:
=TBD[Vendeur] LBD
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
Bonsoir "Dranreb"
pas sur d'avoir compris la demande Lol
je tire les données à partir de cette Procédure ??????
VB:
Private Sub LstB_BD_Click()
With UsF_Recherches_BD
  With .LstB_BD
      Lgn = .List(.ListIndex, 10) 'On récupére le numero de la Ligne Source
  End With
End With
With Ws_Cible 'avec la feuille Cible
  With .Range("A2") 'A partir de la Cellule "A2"
        .EntireRow.ClearContents 'j'efface les données eventuellement présentes
                Tbl = Application.Index(Tabtemp, Lgn) 'Je récupére dans "Tbl" les données de la Ligne à partir du tableau des Données "Tabtemp"
        .Resize(, UBound(Tbl, 1)) = Tbl 'Je colle ces donnees en redimmensionnant la plage de réception en fonction du nombre de Lignes de Ce Tableau "Tbl"
  End With
End With
Erase Tbl 'je vide le Tableau
End Sub
en espérant avoir fait avancer le Schimilllimblick Lol
Bonne fin de Journée
Amicalement
Jean marie
 

PERSEVERANT

XLDnaute Junior
Je n'ai pas joint depuis le #35 de nouvelle version de CBxLiéesPERSEVERANT.xlsm,
son UFmConsult est muni d'une Private Sub CL_BingoUn, je rappelle l'ensemble du code à tout hasard :
VB:
Option Explicit
Private WithEvents CL As CBxL.ComboBoxLiées

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

Private Sub CL_BingoUn(ByVal Ligne As Long)
CL.PlgTablo.Rows(Ligne).Name = "LBD"
End Sub

Private Sub CBnEffacer_Click()
CL.Nettoyer
End Sub
et les formules en C4:C8 récupèrent déjà les informations.
En C4 :
Code:
=TBD[Vendeur] LBD
 

Discussions similaires


Haut Bas