Erreur 400 : appel d'une routine depuis un userform

Résolu
ezor Messages postés 177 Date d'inscription   Statut Membre Dernière intervention   -  
ezor Messages postés 177 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai besoin de votre aide car une erreur 400 apparaît lorsque je fais appel à une routine depuis le code d'une userfom.
Plus précisément, je dois remplir un tableau dynamique avec des entiers entrés par l'utilisateur (qui appuie sur un bouton 'ajout' à chaque fois, et un bouton 'AetF' pour la dernière valeur qu'il souhaite entrer).

J'ai donc le code suivant dans l'userform
Private Sub BoutonAjouter_Click()
If IsNumeric(TextBox1.Text) Then
    rep_userform = CInt(TextBox1.Value)
End If
TextBox1 = ""
Call Feuil1.remplir_tab
End Sub

Private Sub BoutonAetF_Click()
If IsNumeric(TextBox1.Text) Then
    rep_userform = CInt(TextBox1.Value)
End If
fin_entrez_val = True
Unload Me
Call Feuil1.remplir_tab
End Sub


Et dans la feuille contenant les routines de la macro globale on trouve
Public Sub ask_val()

boite_diag.Show

End Sub

Public Sub remplir_tab()

ReDim Preserve tab_val_pos(compt)
tab_val_pos(compt) = rep_userform 'valeur entrée dans la boite de diag

If fin_entrez_val = False Then
    compt = compt + 1
    Call ask_val
Else
fin_ask_val = True 'sert dans le reste de la macro mais sans rapport avec mon problème
End If

End Sub


Le problème est donc que le suivant : lorsque je lance la macro, j'ai bien l'userform qui s'ouvre, mais lorsque je clique sur le bouton 'ajouter' j'ai le message suivant :
"erreur d'execution 400 : erreur définie par l'application ou par l'objet" et le débugger m'indique que l'erreur se situe au moment du Call Feuil1.remplir_tab (ligne 6 et 15).

Malgré mes recherches, je n'arrive pas à savoir ce que cela signifie ni comment régler ce problème.

J'espère que c'est assez clair, sinon je peux vous expliquer plus en détail le code.

D'avance merci



ezor

1 réponse

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Et dans la feuille contenant les routines de la macro globale on trouve Marche pas, impossible d'appeler une procedure non evenementielle dans le VBA d'une feuille par un code VBA en dehors de cette feuille.
Mettez vos procedures dans un module
0
ezor Messages postés 177 Date d'inscription   Statut Membre Dernière intervention   11
 
Merci pour la réponse. J'ai mis toutes les autres routines dans un module à part, mais le même problème persiste.
Maintenant, l'erreur est situé au niveau de la ligne 3 du deuxième bloc de code (boite_diag.Show). Pourtant l'userform se lance bien la première fois.

NB : boite_diag est le nom de mon userform
0
ezor Messages postés 177 Date d'inscription   Statut Membre Dernière intervention   11 > ezor Messages postés 177 Date d'inscription   Statut Membre Dernière intervention  
 
EDIT : le deuxième problème venait du fait que je demandais l'ouverture de l'userform sans l'avoir fermé (ou caché) avant.

merci pour ton aide.
0