Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 VBA - problème call depuis module de classe

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

JohnnyBGood

XLDnaute Nouveau
Amis du VBA, bonjour !

J'ai un petit souci avec un module de classe...
Je fais un clic droit sur un label dans un USF afin d'ouvrir, par le module de classe, un cadre d'aide, d'afficher le caption du label dans le champ de recherche de ce cadre, de déclencher la recherche, de surligner et d'atteindre le mot recherché.
Voilà mon code :

VB:
                NomUF.A_Aide.Value = True 'valeur du toogle ouvrant le cadre d'aide. NomUF est le nom du formulaire
                NomUF.TBX_ChercheMot.Text = TargetBox.Caption 'champ de recherche dans le cadre d'aide
                    Call NomUF.A_Aide_Click 'ouvre le cadre d'aide
                        NomUF.CB_Texte_Suivant.SetFocus 'double flèche dans l'image
                        Call NomUF.CB_Texte_Suivant_Click 'déclenche la recherche

La procédure se déroule bien jusqu'à la dernière instruction. Le call textesuivant ne se déclenche pas. J'ai mis cette instruction en public dans le formulaire, mais cela ne change rien. J'ai remplacé



J'avoue avoir du mal à comprendre pourquoi le premier call fonctionne bien, et pas le deuxième. J'ai remplacé ce second call par un autre, mais cela ne change toujours rien. Comme si le module de classe ne comprenait pas ce second call.
Je précise que la fonction de recherche fonctionne bien si j'ouvre le texte d'aide directement dans le formulaire, saisie le mot recherché et lance la recherche.

J'espère avoir été assez clair. Et si quelqu'un peut me donner une piste de recherche, d'avance, merci
 
Solution
Super, merci, j'aurai pu y penser plus tôt !
Pour que le mot soit remonté, j'ai...
Bonjour JohnnyBGood
Bonjour le Fil,
As tu bien ta procédure "CB_Texte_Suivant_Click" qui est en Public et Non en Private ? ça peut être une des raisons !
VB:
Public Sub CB_Texte_Suivant_Click
End Sub
sans fichier pas évident de tester Lol !
Bonne Journée
Jean marie
 
Dernière édition:
Re
Tu peux aussi éviter de simuler la procédure Click de ton Bouton et créer une procédure qui effectue la recherche
et Tu appelle la Procédure plutôt que le Click sur ton Bouton .
VB:
Private Sub CB_Texte_Suivant_Click() 
 ' Code de recherche qui est Géré Normalement dans cette procédure
End Sub
Tu le transformes en :
Code:
Public Sub LancerRecherche()
    ' Code de recherche ici
End Sub
Private Sub CB_Texte_Suivant_Click()
   Call LancerRecherche
End Sub
Tu peux ensuite faire :
Code:
Call NomUF.LancerRecherche
à voir
Bonne Journée
Jean marie
 
Merci d'avoir pris le temps de regarder mon souci.
J'avais essayé les méthodes proposées, mais le second call reste toujours muet.
Difficile pour moi de mettre mon fichier, car il est confidentiel.
Si je ne trouve pas de solution d'ici à ce soir, je ferais un fichier test.
 
Re
je n'ai pas tout compris , mais ce que j'ai mis
VB:
Private Sub TargetBox_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Button = 2 Then 'clic droit
            On Error Resume Next
                NomUF.A_Aide.Value = True
                NomUF.TBX_ChercheMot.Text = TargetBox.Caption                    
                    Call NomUF.A_Aide_Click
                        NomUF.CB_Texte_Suivant.SetFocus                        
                         Call X_Recherche_Mot 'dans mod_recherche

             Else
End If
End Sub
le mOt trouvé n'est pas remonté mais selectionné !
a voir !
Jean marie
 
Bonjour

ici je change Private Par Public (C'est tous)
Public Sub CB_Texte_Suivant_Click()

le module de classe (Est cela fonctionne)
Private Sub TargetBox_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Button = 2 Then 'clic droit
On Error Resume Next
'NomUF.A_Aide.Value = True
'NomUF.TBX_ChercheMot.Text = TargetBox.Caption
'Call NomUF.A_Aide_Click
'NomUF.CB_Texte_Suivant.SetFocus

'Call NomUF.CB_Texte_Suivant_Click
UF_RechercheIntuitive.CB_Texte_Suivant_Click
Else
End If
End Sub
 
Merci pour cette suggestion. Public par private ne change rien. D'autre part, il faut bien que l'outil sache quel mot cherché. Ce qui n'est pas le cas avec votre proposition
 
Super, merci, j'aurai pu y penser plus tôt !
Pour que le mot soit remonté, j'ai amélioré le code comme suit :
VB:
If Button = 2 Then 'clic droit

            On Error Resume Next
                NomUF.A_Aide.Value = True
                NomUF.TBX_ChercheMot.Text = TargetBox.Caption
                    Call NomUF.A_Aide_Click
                        NomUF.TBX_Aide.SetFocus 'permet de remonter le texte lors de la recherhe
                        NomUF.TBX_Aide.CurLine = 0 'idem
                        Call X_Recherche_Mot
Else
End If

si jamais cela peut servir, voici mon fichier test modifié
 

Pièces jointes

J'avais oublié : merci pour votre aide !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
19
Affichages
506
Réponses
1
Affichages
425
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…