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??

Oui mais toutes les explications nécessaires figurent dans le module de classe ComboBoxLiés, il suffit de tout lire attentivement.
Dans le CbxLIésGrisant29.xls c'étaient ces deux là :
VB:
CLCPVil.Plage Feuil2.[A2]
VB:
CL.Plage Feuil4.[B2]
Tout ensuite en découle.
 

grisan29

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

bonjour dranreb

j'ai eu toute la semaine pour essayer de décrypter les lignes d'aide du module comboboxliés et je n'ai pas réussi d'autre de bien que renommer les feuilles, et le reste

Pscal
 

Dranreb

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

Bonsoir.

Me questionner sur les lignes de commentaires qui ne paraissent pas claires. Peut être ce qui vous empêche de comprendre tient-il à un certain manque de bases fondamentales comme de savoir en quoi consiste exactement un module de classe et ses règles générales d'utilisation ?
 

Dranreb

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

Un module de classe est à la fois un modèle d'objet, son plan de construction et la programmation prévue pour travailler avec les exemplaires qui en seront créés. Dans le jargon on appelle ces exemplaires des "instances" pour bien les distinguer de leur type, qui n'est autre que le nom du module de classe. Celui ci devient en effet d'office un type de donnée et on peut donc le préciser derrière As dans une déclaration Dim. Dans la programmation extérieure au module de classe on ne voit de celui ci que les élément précisés avec le mot clé Public, mais, à la différence d'un module ordinaire, on ne peut y accéder qu'à condition de préciser devant, suivi d'un point, le nom d'une instance de cet objet. Ça c'est pour que ça passe à la compilation. Pour que ça passe aussi à l'exécution, il faut en outre qu'une expression de ce type d'objet ait été affectée par un Set à votre variable d'instance. Fort heureusement, l'expression formée du mot clé New suivi du type d'objet (qui est en même temps le nom de son module de classe) forme justement une nouvelle instance créée de ce type d'objet. Pour terminer, raccrochons nous à des notions déjà vues dans l'aide de VBA à propos des objets de bibliothèques fournies, à savoir comment on appelle ces choses visibles de l'extérieur : par définition une procédure Public Sub dans un module de classe s'appelle une méthode, et une variable Public s'y appelle par définition une propriété en lecture/écriture.

Est-ce plus clair, maintenant ?
 
Dernière édition:

grisan29

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

bojour dranreb

en ayant modifié les lignes ou il y feuil2 par son nom et feuil4(client) par wsclient comme ceci
Code:
Private Sub UserForm_Initialize()
Dim I As Integer
Set CLCPVil = New ComboBoxLiés
'CLCPVil.Plage Feuil3.[A2]
CLCPVil.Plage Fcpville.[A2]
CLCPVil.CouleurSympa &H80000005, &HDDFF&, &H80000005, &H80000005
CLCPVil.Add Me.CBcp, "B"
CLCPVil.Add Me.CBville, "C"
ExécutionIntempestive = True
CLCPVil.Actualiser
ExécutionIntempestive = False
Set CL = New ComboBoxLiés
CL.CouleurSympa
CL.Plage WsClient.[B2] ' feuil4=feuille clients dans la base
'CL.Plage Feuil4.[B2] ' feuil4=feuille clients dans la base
CL.Add Me.CBcivil, "C"
CL.Add Me.CBnom, "D"
CL.Add Me.CBprenom, "E"
CL.Actualiser
End Sub

j'ai un bug dans le module comboboxlies qui me dit que le nom PlgUti est un nom ambigu

Code:
Public Sub Plage(ByVal Plg As Range)
Rem. —— Cette méthode permet de spécifier la plage du tableau commun à tous les ComboBox.
'   Plg: La plage en question. Seules les lignes entières en sont retenues. Elle peut aussi être re-spécifiée au Actualiser.
'        Si une seule ligne est spécifiée, elle sera étendue jusqu'à la dernière cellule renseignée de plus qu'une chaîne vide.
' Remarques: En l'absence d'un appel préalable à cette méthode, la méthode Add essayera de déduire la plage de la première
'     spécification de colonne qui sera un Range ou un String.
'   Cette plage sera aussi disponible par la suite, à votre service, en tant que propriété PlgTablo. Il est même vivement recommandé de l'utiliser
'     partout en lieu et place d'une expression Range classique Workbook.Worksheet.Range, puisqu'elle est bien définie là une bonne fois pour toutes.
If Plg.Rows.Count = 1 Then Set Plg = PlgUti(Plg)
Set PlgTablo = Plg.EntireRow.Cells
End Sub


Pascal
 

grisan29

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

bonsoir

méa culpa il était resté (comme dans classeur que j'ai joint) les anciens modules M_ChantierDictionnArbo et M_ChantierUtilit:confused::confused::confused: et cela ne bug plus au même endroit car il ne trouve pas l'usfclient et la touche F8 se promène de modules a modules de classe sans s’arrêter ;je te joints l'apercu du départ de bug puis mets Uclient.show en surbrillance

en fait le code passe en revu toutes les lignes de
Private Sub UserForm_Initialize()
une par une et la où il s'est arrêter le plus longtemps est a cette ligne
Code:
ReDim TIdx(1 To IDern) As Long: For I1 = 1 To IDern: TIdx(I1) = I1 + dI: Next I1
la dernière partie après IDern: qui est dans la sub public
Public Sub Init(ByVal AMini As Long, ByVal BMaxi As Long)
dans le modules de classe "tableindex"

comme je suis sous windows8,1 et office2013 32bits pro, est ce que dans cette partie "system32" peut etre remplacer par "syswow64"
Code:
Sub AjoutRéfScripting()
ActiveWorkbook.VBProject.References.AddFromFile "C:\WINDOWS\System32\scrrun.dll"
End Sub

sans incidence sur le reste du code

Pascal
 

Pièces jointes

  • apercu bug.jpg
    apercu bug.jpg
    49.5 KB · Affichages: 96
Dernière édition:

Dranreb

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

Bonjour.

Je ne peux pas deviner comme ça la cause exacte problème, il me faudrait le fichier. Il semblerait un nom d'Userform inexistant spécifié devant un Show, mais dans ce cas je ne vois pas comment vous entreriez dans un processus d'indexation, où il est par ailleurs tout à fait normal qu'il y ait de fréquents et nombreux appels par une procédure de MDicionnArbo à des bouts de codes de TableIndex. Si on regarde bien, pendant une indexation, les appels aux méthodes de TableIndex sont toujours extraordinairement nombreux et leurs exécutions très rapides, sauf l'initialisation préalable de la table index qui dure un bon petit paquet de millisecondes.

Voir si le débogage ne pourrait pas mieux cerner le problème en cochant "Arrêt dans le module de classe" au lieu de "Arrêt sur les erreurs non gérées", rubrique Récupération d'erreur, onglet Général du sous menu Options… menu Outils de VBE.
 
Dernière édition:

grisan29

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

bonjour dranreb

je te joint le fichier tel que car je ne trouve pas la cause du bug
il n'y a que dans la frame1 de l'usfarticles qui dans le classeur "articles" dans la base, que je n'ai pas changer les noms car la frame qui contient les textbox et labels sont géré par lot

Pascal
 
Dernière édition:

grisan29

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

re
si je te joint que le classeur client il manquera la feuille qui est dans la base, et les autres feuilles ou classeur c'est pareil
bon le classeur joint est a décompresser et mettre sous c: et changer les chemins dans le module M_constantes du classeur "devisfacture 1.12"

une fois décompresser ouvrir devisfacture1.12 et derrière "bouton" il y a un usf qui a le bouton clients en haut

Pascal
 

grisan29

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

bon voici le classeur devisfacture
quelle solution aurai tu si ce devisfacture est une usine a gaz,

moi qui le trouve plus performant que celui que j'essayais de faire et surtout moins usine a gaz
 

Pièces jointes

  • devis_facture modele 1.12.xlsm
    254.3 KB · Affichages: 105
Dernière édition:

Dranreb

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

J'ai le message de Microsoft Forms : Impossible de charger le objet car il n'est pas disponible sur cette machine. Et bien sûr 4 références MANQUANT, et probablement de grande places vides dans certains Userform, je n'ai pas vérifié, pour des ListView.
J'ai quand même vu qu'il y avait un Uclient. Sa tentative d'affichage provoque une erreur sur CL.Plage WsClient.[B2] parce que la variable Worksheet WsClient n'est pas initialisé. La méthode SetClientWs de votre userform Uclient, qui serait capable de l'initialiser, n'est apparemment appelée nulle part dans votre projet VBA. Et je ne sais pas comment vous allez faire en Excel2013, car il n'y a pas de feuille de base clients dans ce classeur.
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG