Re :RESOLU cbxliescpville de dranreb a intégré dans classeur clients?? MERCI DRANREB

grisan29

XLDnaute Accro
bonjour a vous tous du forum

j'ai essayer d'intégrer le classeur cbxliescpvilles de dranreb sur mon fichier clients mais sans succes
il est vrai que les 2 sont a base de modules de classe
en fait je voudrais remplacer les combobox de mon classeur client par ceux du classeur de dranreb
voici l'essai puis le classeur de dranreb et celui que j'utilise
il sont tous sous .xls et je suis sous 2013 donc .xlsm

merci de vos réponses

Pascal
j' ai oublier de dire que c'est pour les combobox d'ajout clients
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : cbxliescpville de dranreb a intégré dans classeur clients??

Bonsoir.

Un premier problème vu dans le 1ier classeur: "Microsoft Scripting Runtime" n'est pas coché dans la liste références disponibles, menus Outils, Référence…
Ensuite il n'y a pas de programmation dans Uclient visant à donner du travail à un objet ComboBoxLiés avec évènements, telle qu'il y en a une dans Userform1 de CbxLiésCPVille.xls.
Il y a quelque chose que vous ne semblez pas avoir compris: les ComboBox n'ont rien de spécial, il sont tout à fait ordinaires. C'est un objet spécial, de type ComboBoxLiés, qu'on déclare en tête avec évènements puis installe et instruit de façon appropriée dans l'Userform_Initialize, qui les prend en charge et se comporte ensuite comme une sorte de super-ComboBox vis à vis de l'Userform. Il décrète même un évènement Change (entre autres) comme le fait un ComboBox.

Ce n'est pas parce que la programmation de l'Userform_Initialize de Userform1 dans CbxLiésCPVille.xls est microscopique qu'elle ne sert à rien, elle est bien au contraire fondamentale puisqu'elle instruit complètement un ComboboxLiés de tout ce qu'il a à faire !
 
Dernière édition:

grisan29

XLDnaute Accro
Re : cbxliescpville de dranreb a intégré dans classeur clients??

bonjour dranreb
Merci de ton explication qui va me permettre de mieux comprendre les modules de classe, je ne ferme pas le post mais je m’attelle dès cette fin de journée a essayer de refaire en fonction de ce que tu a dit et je reviendrai te soumettre ma copie

bonne journée

Pascal
 

grisan29

XLDnaute Accro
Re : cbxliescpville de dranreb a intégré dans classeur clients??

bonjour dranreb

j'ai eu plus temps que prévu ce matin donc j'ai essayer de recréer l'usf client dans classeur cbliescpville
et je suis bloquer je crois que c'est la cause du multi page
il vas faloir me guider sur cette cause pour que je puise avancer un peu

Pascal
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : cbxliescpville de dranreb a intégré dans classeur clients??

Bonsoir.

C'est sûr que sans MultiPage ce serait nettement plus simple ! Pourquoi donner un bâton pour se faire battre ? Ah tu veux créer ? Et bien il existe déjà, tien Pan ! Tu veux supprimer ou modifier, et bien il n'existe pas, tiens Pan !
Moi je préfère décider tout à la fin ce que je veux faire selon ce que j'ai vu de la fiche existante ou après l'avoir nouvellement établie si on m'a dit qu'elle n'existait pas ! C'est un bouton valider qui à pour Caption "Ajouter" ou "'Modifier", le bouton "Supprimer", lui, étant Not Enabled si c'est "Ajouter".
Et devinez voir ce que vous pourriez utiliser pour faciliter la recherche dans la base et déterminer donc si c'est une nouvelle fiche ou pas…
(…en espérant que cette recherche ne devra pas aussi pouvoir porter sur le code postal ou la localité, ou alors il faudra être extrêmement prudent…)
Cela dit, à première vue pour l'instant, dans votre page "ajouter un client" les ComboBox CP et Ville m'ont l'air de bien réagir, non ? Mais je pense qu'il vaudrait mieux que la table des Codes postaux et Villes soit sur une autre feuille que la base de données clients.
 

grisan29

XLDnaute Accro
Re : cbxliescpville de dranreb a intégré dans classeur clients??

bonjour dranreb

Merci beaucoup de ton intervention,
de toute façon oui les codes postaux et villes fonctionne bien et ne fonctionneront que sur cette page
s'il s'agit de mettre la liste des cp et villes dans une autres feuilles je pense y arriver

je te joints ton classeur sur lequel j'ai ajouter texbox et boutons pour gérer les clients qui je pense sera moins complexe qu'un multipage a gerer, il n'y a pas de codes supplémentaires a ton classeur d'ajouter

mais le blême est que suivre ton classeur pour que tout fonctionne a base de classe est une autre paire de manche

Pascal
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : cbxliescpville de dranreb a intégré dans classeur clients??

Bonjour.
que tout fonctionne a base de classe
Je ne suis pas tout à fait sûr de comprendre ce que tu entends exactement par là, à cause d'un bizarre module de classe qui n'était pas de moi, dans un de tes classeurs précédents. Mais j'ai en effet de mon coté d'autres modules de classe qui permettraient de gérer tous les contrôles à la chaine, en définissant l'essentiel de tout dans l'Userform_Initialize. Mais ça ne serait alors au bout du compte pas forcément plus simple, tout bien considéré.
En attendant j'envisageai seulement des ComboBox aussi pour Prénom et Nom, et un autre objet ComboBoxLiés pour les gérer.
Les boutons d'éxécution finale "Modifier ce client" ou "Ajouter ce client" pourraient n'en faire qu'un, vu qu'un seul de deux est utilisable à un moment donné, forcément. Il pourrait être bon de prévoir en tête un bouton "Effacer" car un ComboBoxLiés est équipé d'une méthode Nettoyer qui permet d'effacer tous les ComboBox dont il a la charge. Aussi un bouton "Annuler" pour remettre la fiche dans son état initial pour le client existant affiché, voire vider les champs de celui en cours de création.
 
Dernière édition:

grisan29

XLDnaute Accro
Re : cbxliescpville de dranreb a intégré dans classeur clients??

bonjour dranreb

merci de ta réponse mais tu dit
Il pourrait être bon de prévoir en tête un bouton "Effacer" car un ComboBoxLiés est équipé d'une méthode Nettoyer qui permet d'effacer tous les ComboBox dont il a la charge.
qu'appelle-tu en entête dans ce cas

il est vrai que modifier sert peut donc on peut le mettre avec celui qui ajoute

pour ce qui est des combobox noms et prénoms pas de soucis si on peux les liés et pour la civilité?

Pascal
 

Dranreb

XLDnaute Barbatruc
Re : cbxliescpville de dranreb a intégré dans classeur clients??

Comme premier bouton, simplement.
Aussi. Le nombre de ComboBox gérables par un ComboBoxLiés n'est pas limité, conceptuellement.
Le seul risque à multiplier les ComboBox c'est de finir par avoir à distinguer par la suite ceux d'identification de la ligne client de ceux qui ne servent d'à faciliter la recherche mais doivent pouvoir être modifiés, une fois la fiche affichée, ce qui entraine une petite complication (il faut Stopper le ComboBoxLiés pour qu'il ne décrète plus les évènements Change, Résultat, Bingo, BingoUn ni Défait)
 
Dernière édition:

grisan29

XLDnaute Accro
Re : cbxliescpville de dranreb a intégré dans classeur clients??

bonjour dranreb
oui j'ai vu qu'il y a des private sub pour propreté(property), nettoyer et stopper
donc le bouton d'appel de l'usf serai en plus pour l'effacement si j'ai bien compris
dans ce classeur il n'y aura pas plus de combobox qu'il y a
soit 2 pour cp et ville
2 pour noms et prénoms
reste celui que j'ai mis pour la civilité
dans l'initialisation de l'usf j'ai mis
Code:
dim ligne as integer 
TextBox1 = Sheets("client").Range("B" & ligne).Value + 1
ComboBox3.RowSource = ("ajout_civilité")
pour que le textbox n° client soit au bon numéro pour ajouter un client

Pascal
 

Dranreb

XLDnaute Barbatruc
Re : cbxliescpville de dranreb a intégré dans classeur clients??

Il me paraitrait plus simple et tout à fait satisfaisant que les civilités soient simplement reprises de celles existant dans la base client. Donc, jamais de RowSource pour un ComboBox géré par un ComboBoxLiés.
Je pense qu'il n'y aura guère de difficulté à fixer automatiquement le N° d'un nouveau client au tout dernier moment, lors de l'ajout d'une ligne, sans que cela ne nécessite une initialisation. Reste à voir à quoi il sert exactement ce N° ?
 

grisan29

XLDnaute Accro
Re : cbxliescpville de dranreb a intégré dans classeur clients??

re dranreb
a vrai dire, j'ai eu toujours un n° pour les clients, même avec un logiciel que j'ai eu l'erreur d'acheter, pour ce qui est de la civiité , je l'ai mise comme cela mais je sais qu'on peut la coder
bonne après midi

Pascal
 

Dranreb

XLDnaute Barbatruc
Re : cbxliescpville de dranreb a intégré dans classeur clients??

Pas d'autre question pour le moment… J'attends donc que vous mettiez en place un deuxième ComboBoxLiés. Oh, je crois que, comme il sera en fin de compte beaucoup plus utilisé que l'autre comme pièce fondamentale de l'Userform, je l'appellerais simplement CL, et l'autre CLCPVil. Il serait judicieux de déclarer aussi en tête de l'Userform: LCou As Long et VLgn() As Variant pour le numéro de la ligne courante et les valeurs de cellules de cette ligne.
 
Dernière édition:

grisan29

XLDnaute Accro
Re : cbxliescpville de dranreb a intégré dans classeur clients??

re dranreb
je viens de rentrer et voici ce que j'ai mis en plus dans l'initialisation de l'usf
Code:
Private Sub UserForm_Initialize()
Set CBL = New ComboBoxLiés
CBL.Plage Feuil2.[A2]
CBL.Add Me.ComboBox1, "B"
CBL.Add Me.ComboBox2, "C"
CBL.Actualiser

Set CBL = New ComboBoxLiés
CBL.Plage Feuil4.[B2]
CBL.Add Me.ComboBox4, "D"
CBL.Add Me.ComboBox5, "E"
CBL.Actualiser
End Sub
peut etre ca marche mais surement pas catholique, les combobox nom et prénom fonctionne comme cela
tête de l'Userform: LCou As Long et VLgn() As Variant pour le numéro de la ligne courante et les valeurs de cellules de cette ligne.
comprends a quoi se réfère ces variables dans l'usf
Code:
Option Explicit
Dim WithEvents CBL As ComboBoxLiés
Dim LCou As Long, VLgn() As Variant '

Private Sub CommandButton1_Click()
Dim i As Integer
With Sheets("feuil1")
i = .Range("B65536").End(xlUp).Row
    .Range("A" & i + 1).Value = ComboBox1.Value
    .Range("B" & i + 1).Value = ComboBox2.Value
    End With
End Sub

Private Sub CommandButton6_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
Set CBL = New ComboBoxLiés
CBL.Plage Feuil2.[A2]
CBL.Add Me.ComboBox1, "B"
CBL.Add Me.ComboBox2, "C"
CBL.Actualiser

Set CBL = New ComboBoxLiés
CBL.Plage Feuil4.[B2]
CBL.Add Me.ComboBox4, "D"
CBL.Add Me.ComboBox5, "E"
CBL.Actualiser
End Sub
'
voila le code de l'usf
si je mets ceci
Code:
CBL.Add Me.TextBox4, "F"
en plus pour charger un textbox oh la panique a bord la touche F8 se promène de long en large dans les codes et ne trouve pas son bonheur
je pense que c'est parce qu'il manque la reconnaissance des textbox

Pascal
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : cbxliescpville de dranreb a intégré dans classeur clients??

Non, non, non. Deux ComboBoxLiés différents j'ai dit.
Un CL pour l'essentiel, la base clients, et un CLCPVil pour les codes postaux et villes. Ce dernier n'a d'ailleurs peut être même pas besoin d'être WithEvents, car jusqu'ici on n'a jamais cherché à prendre en charge un de ses évènements, ce qui ne l'empêcherait pas de fonctionner correctement par ailleurs.
Un ComboBoxLiés ne gère que des ComboBox, forcément.
Et, j'aurais cru 3 ComboBox pour CL, donc 4 peut être maintenant avec la F, le 1er pour la civilité.
 
Dernière édition:

grisan29

XLDnaute Accro
Re : cbxliescpville de dranreb a intégré dans classeur clients??

re dranreb
F c'est la colonne adresse du client que j'ai essayer avec un textbox
CL = comboboxliés ??
car si je mets comme ceci
Code:
Set CBL = New ComboBoxLiésCPVil
CBL.Plage Feuil2.[A2]
CBL.Add Me.ComboBox1, "B"
CBL.Add Me.ComboBox2, "C"
CBL.Actualiser
ca me mets type défini par l'utilsateur non défini
Pascal
tu dits
Deux ComboBoxLiés différents j'ai dit
dans le module de classe
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : cbxliescpville de dranreb a intégré dans classeur clients??

Non il sont tous les deux de même type ComboBoxLiés mais ne peuvent pas s'appeler tous les deux CBL. Ils doivent être déclarés en tête de l'userform, avec 2 noms différents.
 

grisan29

XLDnaute Accro
Re : cbxliescpville de dranreb a intégré dans classeur clients??

re
comme ceci alors
Code:
Option Explicit
Dim CLCPVil As ComboBoxLiés
Dim CL As ComboBoxLiés
Dim LCou As Long, VLgn() As Variant '

Private Sub CommandButton1_Click()
Dim i As Integer
With Sheets("feuil1")
i = .Range("B65536").End(xlUp).Row
    .Range("A" & i + 1).Value = ComboBox1.Value
    .Range("B" & i + 1).Value = ComboBox2.Value
    End With
End Sub

Private Sub CommandButton6_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
Set CLCPVil = New ComboBoxLiés
CLCPVil.Plage Feuil2.[A2]
CLCPVil.Add Me.ComboBox1, "B"
CLCPVil.Add Me.ComboBox2, "C"
CLCPVil.Actualiser

Set CL = New ComboBoxLiés
CL.Plage Feuil4.[B2]
CL.Add Me.ComboBox4, "D"
CL.Add Me.ComboBox5, "E"
CL.Actualiser
End Sub
et cela fonctionne

Pascal
 

Dranreb

XLDnaute Barbatruc
Re : cbxliescpville de dranreb a intégré dans classeur clients??

Voila.
Mais nous allons avoir besoin de gérer les évènements de CL. Celui là doit donc être déclaré avec le mot clé WithEvents.
N'hésitez pas, pour CL, à inclure aussi des ComboBox pour la "C" et la "F", si la "F" ne risque pas de changer dans une fiche existante, surtout si ça peut être deux contacts différents dans une même société.


Je reviens un à une question d'un poste précédent :
comprends a quoi se réfère ces variables dans l'usf
Indications: LCou sera la ligne courante sur laquelle on sera positionné ou 0 si le client n'existe pas encore. On y affectera le paramètre Ligne transmis à la procédure CL_BingoUn par exemple, et
VLgn = CL.PLgTablo.Rows(LCou).Resize(, 14).Value
Il ne restera plus qu'à garnir les contrôles d'après VLgn. Je le fais habituellement dans une procédure séparée que j'appelle GarnirChamps.
 
Dernière édition:

grisan29

XLDnaute Accro
Re : cbxliescpville de dranreb a intégré dans classeur clients??

re
pour la "F" c'est la colonne " a l'attention de:"
en mettent la colonne "C" pour la civilité cela rempli également les combobox nom et prénom comme il faut
Pascal
 
Dernière édition:

Discussions similaires


Haut Bas