probleme d'affichage combobox

khephrens

XLDnaute Occasionnel
bonjour le forum
je n'arrive pas à résoudre le problème suivant

j'ai une combobox (fichier "test" ci joint) qui fonctionne très bien mais dans le fichier "basededonnées_v4" joint également, la liste ne s'affiche pas dans la combobox (userform dans la page "rechercher un contact")
pourtant les codes sont a priori les mêmes
merci pour votre aide :)

ps: peut-on remplacer la combobox par un textbox "intuitif". je m’explique : en tapant les premières lettre d'un nom dans un texbox, j'aimerais que les noms, commençant par ces premières lettres saisies, s'affichent dans une listbox.
j’espère être assez clair ;)
 

Pièces jointes

  • test.xls
    50.5 KB · Affichages: 30
  • basededonnées_v4.xlsm
    58.9 KB · Affichages: 35
  • test.xls
    50.5 KB · Affichages: 32
  • test.xls
    50.5 KB · Affichages: 37

Dranreb

XLDnaute Barbatruc
Re : probleme d'affichage combobox

Bonjour.
Ne vous inquiétez pas du plus délicat: ce sont des modules de classes très pointus qui s'en chargent. Leur programmation n'est pas simple, mais elle n'est pas à retoucher, et il se pilotent aisément par peu de code. Chaque méthode, propriété ou évènement y est documentée le plus complètement possible par des commentaires explicatifs. Mais vous pouvez me poser des questions pour lever ce qui vous parait le plus insupportablement obscur, si vous avez admis le principe des réaction de l'UF à l'opérateur. Et ce, en attendant que je finisse tout d'une 1ère version. La partie qui se sert d'un ComboBoxLiés est déjà entièrement écrite. Elle est comme ça :
VB:
Option Explicit
Dim WithEvents CL As ComboBoxLiés
Dim Ligne As Long, VLgn()

Private Sub UserForm_Initialize()
Set CL = New ComboBoxLiés
CL.CouleurSympa
CL.Plage Feuil1.Rows(5)
CL.Add Me.CbxIdt, "A"
CL.Add Me.CbxCivilité, "C"
CL.Add Me.CbxNom, "D"
CL.Add Me.CbxPrénom, "E"
CL.Actualiser
End Sub
Private Sub CL_KeyPress(ByVal CBM As ComboBoxMembre, ByVal KeyAscii As MSForms.ReturnInteger)
Dim C As String * 1
Select Case CBM.CBx
   Case Me.CbxPrénom: If CBM.CBx.SelStart > 0 Then C = Mid$(CBM.CBx.Text, CBM.CBx.SelStart, 1)
      If UCase$(C) <> LCase$(C) Then KeyAscii.Value = Asc(LCase$(Chr$(KeyAscii.Value))) _
                                Else KeyAscii.Value = Asc(UCase$(Chr$(KeyAscii.Value)))
   Case Me.CbxNom: KeyAscii.Value = Asc(UCase$(Chr$(KeyAscii.Value))): End Select
End Sub

Private Sub BtnEffacer_Click()
CL.Nettoyer
End Sub

Private Sub CL_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long)
If NbrLgn = 0 Then
   Ligne = 0: ReDim VLgn(1 To 1, 1 To 12): GarnirChamps
   VLgn(1, 1) = Trim$(CbxIdt.Text)
   VLgn(1, 3) = Trim$(CbxCivilité.Text)
   VLgn(1, 4) = Trim$(CbxPrénom.Text)
   VLgn(1, 5) = Trim$(CbxNom.Text)
ElseIf NbrLgn = 1 Then
   Ligne = 1
ElseIf Complet Then
   Ligne = -1
Else
   Ligne = 0
   End If
End Sub

Private Sub CL_Résultat(Lignes() As Long)
If Ligne = 0 Then Exit Sub
If Ligne = -1 Then MsgBox "Fiche en double, veuillez la supprimer.", vbInformation, Me.Caption
Ligne = Lignes(1): VLgn = CL.PlgTablo.Rows(Ligne).Resize(, 12).Value: GarnirChamps
End Sub

Private Sub GarnirChamps()
Me.TbxDate.Text = VLgn(1, 2)
Me.TbxAdresse = VLgn(1, 6)
Me.TbxCP = VLgn(1, 7)
Me.TbxVille = VLgn(1, 8)
Me.TbxTelTrav = VLgn(1, 9)
Me.TbxTelPers = VLgn(1, 10)
Me.TbxFonction = VLgn(1, 11)
Me.TbxService = VLgn(1, 12)
habiliterboutons
End Sub
 

khephrens

XLDnaute Occasionnel
Re : probleme d'affichage combobox

tout d'abord merci pour votre patience avec moi. je pourrais comprendre que vous abandonniez :)

j'essaie de décrypter ce code en vain je dois l'avouer
que dois je en faire?? je vois l'existence de plusieurs combobox!!?? et des nouveaux noms de textbox!!!!

dois je créer un nouveau userform????? je pense que oui et quel aspect aurait il??

j'avoue être dans le brouillard le plus complet !! je suis désolé mais vous avez un language trop puriste ou technique pour mon niveau de connaissance.
 

Dranreb

XLDnaute Barbatruc
Re : probleme d'affichage combobox

Non, non, ben, je suis partit pour écrire entièrement un 1er jet. C'est normal que vous ne puissiez comprendre en détail la chose puisque vous n'avez accès à l'aide (commentaires explicatifs) de ComboBoxLiés. C'était juste pour vous montrer le style, et peut être pour vous inciter à me poser une question sur le détail qui vous parait le plus étrange.
 

Dranreb

XLDnaute Barbatruc
Re : probleme d'affichage combobox

J'en ai un peu assez, c'est un peu du réchauffé pour moi. Je le joins comme il est, mais je viens seulement de découvrir que vous aviez mis des Tag sur les contrôles qui permettraient de les traiter à la chaîne dans les procédures GarnirChamps, HabiliterBoutons et BtnValider_Click. Alors je le joins comme il est. Il y a de la mise au point à faire c'est certain (P.S: …mais pas en ce qui concerne la gestion des ComboBox, à moins qu'il ne faiiile faire appel à quelques dispotions de la rubrique ÉVÈNEMENTS SPÉCIAUX POUR UTILISATION AVANCÉE et aux méthodes Stopper et Activer). N'hésitez pas à m'interroger sur tout ce que vous ne comprendriez pas.

J'aurais aussi un module de classe GroupeDeContrôles, qui ne fait pas partie de OutIdx mais qui pourrait travailler en collaboration avec un ComboBoxLiés, et permettrait de définir 99% des choses dans l'Userform_Initialize dans le même style que les CL.Add, les autres procédures, bien plus courtes bougeant très peu. Mais là, pour le coup, les modules de classe seraient … pléthore !

P.S.: Déja vu un bogue dans habiliterBoutons (priorité des opérateurs): manque des parenthèses à :
VB:
Me.BtnValider.Enabled = (ÇaAChangé Or Ligne = 0) And CtrlErr Is Nothing

Et autre chose qui ne va pas, zut ! L'évènement MouseMove ne se produit pas sur un contrôle Not Enabled ! La solution: on ajoute un Label nommé LabInfo qui renvoie le focus au contrôle à corriger quand on clique dessus. Dans HabiliterBounton à chaque fois qu'on détecte quelque chose qui ne va pas, on y met un texte, on met BtnValider.Enabled = False et Set CtrlErr le contrôle à corriger. Vous me suivez ?
 

Pièces jointes

  • CbxLiésKhephrens.xls
    281 KB · Affichages: 36
Dernière édition:

Discussions similaires

  • Résolu(e)
Microsoft 365 Code de tri
Réponses
22
Affichages
407
Réponses
25
Affichages
770

Statistiques des forums

Discussions
312 492
Messages
2 088 936
Membres
103 987
dernier inscrit
Doctami