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:

grisan29

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

autrement ce sera un peu comme ceci
Code:
Sub HabiliterBoutons()
 If BtnValider.Caption = "modifier" Then
  CL.PlgTablo.Rows(LCou).Value 'modifie le client
 Else
 If BtnValider.Caption = "ajouter" Then
  CL.PlgTablo.Rows(LCou).Value 'ajoute le client
 Else
 If BtnValider.Caption = "effacer" Then
  CL.PlgTablo.Rows(LCou).Value 'supprime le client dans la liste
 Else
 If BtnValider.Caption = "devis" Then
 CL.PlgTablo.Rows(LCou).Value  'ajoute client sur feuille
 
BtnModif '_Click()
BtnEffacer '_Click()
BtnAjout '_Click()
BtnDevis '_Click()
 End Sub
 

Dranreb

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

La procédure doit fixer le Caption de ce bouton, pas le tester. Elle ne devrait pas avoir à travailler avec CL.PlgTablo mais peut être avec VLgn. Pour cela vous pourriez aussi avoir besoin de cette fonction :
VB:
Private Function ToutEstPareil() As Boolean
If Me.TBattention.Text <> VLgn(1, 6) Then Exit Function
If Me.TBadresse.Text <> VLgn(1, 7) Then Exit Function
If Me.TBcomplement.Text <> VLgn(1, 8) Then Exit Function
If Me.CBcp.Text <> VLgn(1, 9) Then Exit Function
If Me.CBville.Text <> VLgn(1, 10) Then Exit Function
If Me.TBtele.Text <> VLgn(1, 11) Then Exit Function
If Me.TBport.Text <> VLgn(1, 12) Then Exit Function
If Me.TBfax.Text <> VLgn(1, 13) Then Exit Function
If Me.TBmail.Text <> VLgn(1, 14) Then Exit Function
ToutEstPareil = True
End Function
Exemple d'utilisation:
VB:
If ToutEstPareil Then
   BtnValider.Caption = IIf(LCou = 0, "Ajouter", "Devis")
   BtnValider.Enabled = LCou > 0
Else
   BtnValider.Caption = IIf(LCou = 0, "Ajouter", "Modifier")
   BtnValider.Enabled = True
   End If
En première approximation, en partant sur 3 boutons en tout, toute la procédure pourrait s'écrire comme ça :
VB:
Sub HabiliterBoutons()
If ToutEstPareil Then
   BtnEffacer.Caption = "R.à Z."
   BtnValider.Caption = IIf(LCou = 0, "Ajouter", "Devis")
   BtnValider.Enabled = LCou > 0
   BtnSupprimer.Enabled = LCou > 0
Else
   BtnEffacer.Caption = "Rétablir"
   BtnValider.Caption = IIf(LCou = 0, "Ajouter", "Modifier")
   BtnValider.Enabled = True
   BtnSupprimer.Enabled = False
   End If
End Sub
 
Dernière édition:

grisan29

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

re
je mets la fonction où car dans Mdictionnarbor elle ne fonctionne pas, je l'ai mis dans l'usf et ajouter un appel derrière le bouton
 
Dernière édition:

grisan29

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

bonsoir
il n' y a que les captions qui changent , bon pour le post 78 j'ai mis la fonction
Code:
Private Function ToutEstPareil() As Boolean
dans l'usf car ailleurs elle ne veux pas démarrer mais je vais réessayer de la mettre dans le module Mdictionnarbo
Pascal

bon dans le module Mdictionarbo lors de l'apui sur un bouton il y a un bug a "ToutEstPareil" dans habiliterboutons comme si c'est une variable non déclarer
 
Dernière édition:

Dranreb

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

Non. Ça doit bien rester une fonction interne à l'Userform. Ne voyez vous pas qu'elle se réfère à plein de ses contrôles ?
Il n'y a de toutes façon jamais à retoucher à mes modules de service.
De plus elle est Private. J'ai vraiment l'impression que vous ne comprenez jamais rien à rien !
 
Dernière édition:

Dranreb

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

c'est sur je ne comprends rien
Avez vous seulement envie d'essayer ?

Une déclaration Private ne peut être utilisée que depuis une procédure du module où elle est écrite.
ce code private a pour toutes les lignes Then Exit Function
Oui qu'est-ce qui vous étonne ? Elle ne doit retourner True que tout à la fin, seulement si tout est pareil et que donc aucun contrôle n'a de valeur différente de ce qu'il y a dans VLgn, ce qui sort de la fonction en la laissant False.
 

Dranreb

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

Quel est le rapport avec ce que je disais ?
D'après ce que j'ai prévu pour le moment dans la HabiliterBoutons, le BtnValider est presque toujours utilisable (Enabled) sauf pour un nouveau client dont on n'aurait renseigné aucun champ. Dans ce cas LCou = 0 et par conséquent l'expression LCou > 0 est False.
 

grisan29

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

bonjour dranreb

Quel est le rapport avec ce que je disais ?
rien mais j'essaie de comprendre

le souci que j'ai pour essayer de comprendre les termes utilisés est que l'aide qui est sur internet est en anglais et ca me barbe de tout traduire pour comprendre ce qui est dit et expliqué

j'avancerai surement mieux si c'étaient autrement, c'est aussi la raison d'un post qui s'est prolonger après la demande pour empêcher de fermer un usf par la croix

Pascal

donc après quelques traductions
Then Exit Function ' quitte pour revenir à la procédure appelante
c'est déjà beaucoup plus clair ,ajout du classeur avec des traductions de mon cru

le numéro d'après l'évolution du classeur n'a plus lieu d'existence
 
Dernière édition:

Dranreb

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

Bonjour.

Je ne voit vraiment pas l'intérêt d'un bouton Fermer, à moins qu'on veuille qu'il fasse autre chose que la croix, comme par exemple masquer l'Userform sans le décharger.
Un MsgBox de suppression effectuée n'a pas sa place dans HabiliterBouton, et je ne vois pas bien ce qu'il apporterait non plus dans BtnSupprimer_Click … qui n'existe plus. Et il n'y a non plus toujours guère de code utile dans BtnEffacer_Click ni BtnValider_Click. J'en ai assez d'attendre pour rien que vous allez imaginer un code efficace. Par contre la démarche de mettre des commentaires que je pourrai vérifier et corriger est bonne. Alors je joins un classeur qui comporte tout ce qu'il faut, en principe. J'ai aussi remis un peu les procédures à peu près dans l'ordre où elles sont amenées à s'exécuter. Ajouté aussi un Boolean ExécutionIntempestive qui s'est avérer indispensable pour inactiver HabiliterBoutons lorsque son exécution est induite par des évènement Change qui ne résultent pas d'une action de l'opérateur.
 

Pièces jointes

  • CbxLiésGrisan29.xls
    328.5 KB · Affichages: 40
  • CbxLiésGrisan29.xls
    328.5 KB · Affichages: 43

grisan29

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

bonsoir dranreb

un messagebox pour valider par oui par non si on veux supprimer ce client c'est tout ce que je veux

une petite faveur supplémentaire si cela est tolérable et possible

quand s'inscrit un client Lambda sur la feuille il n'y a ni attention ni complément
donc dans ce cas si les lignes concernées sont vides, est ce que les autres lignes peuvent remonter d'un cran
voici la facon actuelle
M tresmoche
afreux jojo
À l'attention de : loin
beaupré
verdatre
29252 PLOUEZOC H
et je les voudrais comme ceci
M tresmoche
afreux jojo
beaupré
29252 PLOUEZOC H
mais cela peut arrivé differement soit attention et pas de complement ou l'inverse

est-ce que cela possible où est ce trop demander?
car le classeur que tu a envoyer fonctionne très bien:cool::cool:

Pascal
 
Dernière édition:

Dranreb

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

En tête de la BtnSupprimer_Click :
VB:
If MsgBox("Êtes vous sûr de vouloir supprimer " & vbLf & VLgn(1, 3) & " " & VLgn(1, 4) & " " _
   & VLgn(1, 5) & " ?", vbQuestion + vbYesNo, Me.Caption & " - Supprimer") = vbNo Then Exit Sub
Et pour l'autre question :
VB:
Private Sub BtnValider_Click()
If BtnValider.Caption = "Devis" Then
   Dim VCol(1 To 6, 1 To 1), L As Long
   L = 1
   VCol(L, 1) = VLgn(1, 3) & " " & VLgn(1, 4):       If VCol(L, 1) <> "" Then L = L + 1
   VCol(L, 1) = VLgn(1, 5):                          If VCol(L, 1) <> "" Then L = L + 1
   VCol(L, 1) = "À l'attention de :  " & VLgn(1, 6): If VCol(L, 1) <> "" Then L = L + 1
   VCol(L, 1) = VLgn(1, 7):                          If VCol(L, 1) <> "" Then L = L + 1
   VCol(L, 1) = VLgn(1, 8):                          If VCol(L, 1) <> "" Then L = L + 1
   VCol(L, 1) = VLgn(1, 9) & " " & VLgn(1, 10):      If VCol(L, 1) <> "" Then L = L + 1
   Feuil1.[A1:A6].Value = VCol
Vous pourriez éviter de répéter cette instruction en écrivant une Private Sub pour l'empilement de chaque élément. P.S.: Ah zut ! Ça marche pas à cause du texte constant "À l'attention de : ". Vous ne pouvez vraiment pas essayer de trouver quelque chose de votre invention ?
Mais soumettez moi vos commentaires à corriger au fur et à mesure, vous pourriez y gagner un pouvoir de maintenance, voire d'adaptation.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 164
Messages
2 085 875
Membres
103 007
dernier inscrit
salma_hayek