Erreur 9 dans autre sub sans relation directe

Bonjour à tous,

Voici mon problème dans mon userform :

Quand je clique sur le bouton RAZ, il m’indique une erreur 9 dans une autre procédure.

Il n’y a aucun appel de procédure. Ma sub sert à mettre à zéro les labels, champs et autre.

Pourquoi le bug apparait dans une autre sub ???

J’en perds mon latin. C’est peut-être évident mais là je cale !!

Merci pour votre aide.

JLP.

Bonjour,

disci = " ", ce n'est pas un nom de feuille valide.

eric

Bonjour,

merci Eric pour ta réponse.

Cependant je comprends quand même pas pourquoi quand je lance ma procédure RAZC_Click() celle-ci part vers la procédure ValidDisci_Change() ?????

Une fois les champs remis à zéro elle doit s'arrêter et pas partir vers l'autre...! c'est là que je comprends pas.

Si toi ou quelqu'un d'autre comprend, je suis preneur.

Encore merci.

JLP

Parce que tu déclenches l'évènement Change avec Me.Controls("ValidDisci").Value = " "

Comme ce n'est pas désiré, démarre ta procédure Raz avec :

Application.EnableEvents = False

et remet à true en fin de procédure.

eric

Bonsoir,

merci Eric pour ta réponse.

Ta solution ne fonctionne pas... hélas...

Je ne savais pas que l'on pouvais déclencher un évènement en modifiant sa valeur...

j'ai appris quelque chose ce soir.

mais je continue à m'arracher les cheveux (LOL).

Je vais essayer de contourner avec un test du genre if disci="" then exit sub.

@+

JLP

Bonsoir

C'est l'histoire du serpent qui se mord la queue

Dans ta procédure Sub RAZC_Click tu as une instruction

Me.Controls("ValidDisci").Value = "   " 

qui déclenche l'évènement change de la combobox et de ce fait exécute la macro ValidDisci_Change

et c'est dans cette procédure que tu as le message d'erreur

Pour y remédier, il suffit de neutraliser cette macro lors de l'appuie sur RAZ

Voir l'usage de la variable EnCours

Bonsoir Banzai64,

merci pour ta solution, mais...

je connais pas et comprends pas cette solution.

je vois que cette variable est déclarée en dessous d'Option Explicit,

mais après ????????

quand je recopie cela dans mon original cela ne fonctionne pas.

Qu'est-ce que j'ai raté ?

Peux-tu m'en dire un peu plus STP ?

Merci.

JLP.

Bonsoir

Grosso modo

La variable Encours est déclarée en public pour ce module

Ensuite au début de la procédure Sub RAZC_Click elle est initialisée à True (remise à False à la fin de cette procédure)

Private Sub RAZC_Click()
Dim i As Byte
Dim disci As String
Encours = True
disci = Me.Controls("ValidDisci").Value

Donc quand l'évènement Change de la ComboBox ValidDisci (macro ValidDisci_Change ) est déclenchée par l'instruction Me.Controls("ValidDisci").Value = " "

On teste si cette variable est égale à True et dans l'affirmative on sort de cette procédure

Private Sub ValidDisci_Change()
Dim disci As String
Dim i As Byte

'If Me.Controls("ValidDisci") = "" Then
'MsgBox "Veuillez sélectionner une discipline", vbExclamation, "?? Où est la discipline ??"
'Exit Sub
'End If
If Encours = True Then Exit Sub
Me.Controls("tireur").Enabled = True
Me.Controls("club").Enabled = True
Me.Controls("arme").Enabled = True

Bonjour banzai64, bonjour à tous,

Merci pour tes explications.

En fait j'avais pas vu le rajout de la ligne dans la sub ValidDisci ! (quel miro...)

Là effectivement cela fonctionne.

Entre temps de mon coté j'avais testé : If Me.Controls("ValidDisci") = "" Then exit sub qui fonctionne aussi,

mais je préfère ta solution qui est moins "ciblée" et surtout "passe-partout"...

Comme j'ai pas terminé le code de mon projet, peut-être que cela me resservira (là où ailleurs...).

Encore MERCI pour ton intérêt, ta solution et tes explications.

JLP.

Rechercher des sujets similaires à "erreur sub relation directe"