Erreur 400 : appel d'une routine depuis un userform

Résolu/Fermé
ezor Messages postés 176 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 27 octobre 2016 - Modifié par ezor le 29/12/2015 à 00:09
ezor Messages postés 176 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 27 octobre 2016 - 29 déc. 2015 à 14:46
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
29 déc. 2015 à 08:20
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 176 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 27 octobre 2016 11
Modifié par ezor le 29/12/2015 à 14:46
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 176 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 27 octobre 2016 11 > ezor Messages postés 176 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 27 octobre 2016
29 déc. 2015 à 14:46
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