Erreur 424 "objet requis" sous excel
Résolu
mary
-
mary -
mary -
Bonjour
j'ai realisé une interface graphique et ce programme :
Mais quand je souhaite l'executer excel m'affiche erreur 424 "objet requis"
Je ne vois aps du tout ou est mon erreur si vous pouvez m'aider je vous remercie d'avance !!
Cordialement,
Mary Benchekroun
j'ai realisé une interface graphique et ce programme :
Private Type Patient numeroarrivee As Integer nom As String prenom As String numerosecu As Long gravite As String depart As Date arrivee As Date End Type Private Type Gestion n As Integer 'patient courant liste(500) As Patient 'les patients End Type Dim g As Gestion Dim p As Patient Private Sub Bdépart_Click() MsgBox "Départ du client pris en compte.", vbInformation, "Mise à jour" Saisie.TDepart = Now Call enregistrer_patient Call afficher_patient Call activer_boutons With g.liste(g.n) .depart = Now End With Feuil1.Cells(g.n + 3, 7) = g.liste(g.n).depart End Sub Private Sub Bprecedent_Click() 'passe au patient précédent If enregistrer_patient() Then 'si le patient est enregistrer (ou qu'on navigue) g.n = g.n - 1 'patient précédent Call afficher_patient 'on affiche End If Call activer_boutons 'on active les boutons qui vont bien End Sub Private Sub BProchain_Click() If numero_patient_suivant("TG") <> -1 Then g.n = numero_patient_suivant("TG") Else If numero_patient_suivant("G") <> -1 Then g.n = numero_patient_suivant("G") Else If numero_patient_suivant("NG") <> -1 Then g.n = numero_patient_suivant("NG") Else MsgBox "Pas de patient a traiter!" Exit Sub End If End If End If Call afficher_patient Call activer_boutons MsgBox p.nom End Sub Private Function numero_patient_suivant(etat As String) For i = 0 To UBound(g.liste) Step 1 p = g.liste(i) If g.liste(i).gravite = etat And (g.liste(i).depart = "00:00:00" Or g.liste(i).depart = Empty) Then numero_patient_suivant = i Exit Function End Next i numero_patient_suivant = -1 End Function Private Sub BQuitter_Click() Saisie.Hide 'on cache la feuille End Sub Private Sub Bsuivant_Click() 'passe au patient suivant If enregistrer_patient() Then 'si le patient est enregistrer (ou qu'on navigue) g.n = g.n + 1 'patient suivant Call afficher_patient 'on affiche End If Call activer_boutons 'on active les boutons qui vont bien End Sub Public Sub activer_boutons() 's'occupe de la gestion actif ou non des bouton suivant/precedent If g.n <= 0 Or g.n = LBound(g.liste) Then 'patient initial donc pas de bouton précédent Saisie.Bprecedent.Enabled = False Else Saisie.Bprecedent.Enabled = True End If If g.n = UBound(g.liste) Then 'dernier patient, donc pas de bouton suivant Saisie.Bsuivant.Enabled = False Else Saisie.Bsuivant.Enabled = True End If End Sub Public Sub afficher_patient() 'affiche le patient courant Dim p As Patient p = g.liste(g.n) Saisie.TNum.Caption = g.n Saisie.TNom.Text = p.nom Saisie.TPrenom.Text = p.prenom If p.numerosecu = 0 Then 'cas ou le num sécu est a 0 (valeur par défaut) on affiche du vide Saisie.TSecu.Text = Empty Else Saisie.TSecu.Text = p.numerosecu End If If p.depart = "00:00:00" Then 'cas ou la date départ est a 00:00:00 (valeur par défaut) on affiche du vide Saisie.TDepart.Text = Empty Else Saisie.TDepart.Text = p.depart End If Select Case p.gravite 'on selectionne la bonne gravité Case "TG" Saisie.Rtg.Value = True Case "G" Saisie.Rg.Value = True Case "NG" Saisie.Rng.Value = True Case Else 'ou aucune si le patient n'existe pas encore Saisie.Rng.Value = False Saisie.Rg.Value = False Saisie.Rtg.Value = False End Select End Sub Private Sub UserForm_Initialize() i = 4 While (Feuil1.Cells(i, 1) <> Empty) And (Feuil1.Cells(i, 2) <> Empty) And (Feuil1.Cells(i, 3) <> Empty) And (Feuil1.Cells(i, 4) <> Empty) p.numeroarrivee = i - 4 p.nom = Feuil1.Cells(i, 2) p.prenom = Feuil1.Cells(i, 3) p.numerosecu = Feuil1.Cells(i, 4) p.gravite = Feuil1.Cells(i, 5) p.arrivee = Feuil1.Cells(i, 6) If Feuil1.Cells(i, 7) = Empty Then p.depart = "00:00:00" Else p.depart = Feuil1.Cells(i, 7) End If g.liste(p.numeroarrivee) = p i = i + 1 Wend 'on met le numero de patient a 0 au démarrage g.n = 1 'affichage du patient Call afficher_patient 'On active ou non les boutons Call activer_boutons End Sub Public Function enregistrer_patient() 's'occupe d'enregistrer/mettre a jour le patient If g.n >= 0 And g.n <= UBound(g.liste) Then 'on verifi qu'on ne sorte pas de l'indice du tableau If Saisie.TNom.Text = Empty Or Saisie.TPrenom.Text = Empty Or Saisie.TSecu.Text = Empty Or (Saisie.Rtg.Value = False And Saisie.Rg.Value = False And Saisie.Rng.Value = False) Then 'ici un des champs du formulaire est vide If Saisie.TNom.Text = Empty And Saisie.TPrenom.Text = Empty And Saisie.TSecu.Text = Empty Then 'ici il sont tous vide, on va naviguer enregistrer_patient = True Else 'ici certaines infos (nom, prenom ou num sécu) sont saisie, on averti du manque d'info MsgBox ("La fiche du patient n'est pas complete") enregistrer_patient = False End If Else 'ici tout est ok on va enregistrer/mettre a jour With g.liste(g.n) .numeroarrivee = g.n .nom = Saisie.TNom.Text .prenom = Saisie.TPrenom.Text .numerosecu = Saisie.TSecu.Text .arrivee = Now If (Saisie.TDepart.Text = Empty) Then 'on evite les erreur d'incompatibilité si la zone départ est vide .depart = Empty Else .depart = Saisie.TDepart.Text End If If Saisie.Rtg.Value = True Then 'on va verifier les boutons de gravité et prendre le bon .gravite = "TG" ElseIf Saisie.Rg.Value = True Then .gravite = "G" Else .gravite = "NG" End If enregistrer_patient = True 'c'est Ok on s'en va :) If g.liste(g.n).depart = "00:00:00" Then Feuil1.Cells(g.n + 3, 7) = Empty Else Feuil1.Cells(g.n + 3, 7) = g.liste(g.n).depart End If End With End If Feuil1.Cells(g.n + 3, 1) = g.liste(g.n).numeroarrivee Feuil1.Cells(g.n + 3, 2) = g.liste(g.n).nom Feuil1.Cells(g.n + 3, 3) = g.liste(g.n).prenom Feuil1.Cells(g.n + 3, 4) = g.liste(g.n).numerosecu Feuil1.Cells(g.n + 3, 5) = g.liste(g.n).gravite Feuil1.Cells(g.n + 3, 6) = g.liste(g.n).arrivee End If End Function
Mais quand je souhaite l'executer excel m'affiche erreur 424 "objet requis"
Je ne vois aps du tout ou est mon erreur si vous pouvez m'aider je vous remercie d'avance !!
Cordialement,
Mary Benchekroun
A voir également:
- Erreur 424 vba
- Erreur d'execution 424 - Meilleures réponses
- Erreur d'execution 424 objet requis userform - Meilleures réponses
- Erreur 3005 france tv - Forum TV & Vidéo
- Incompatibilité de type vba ✓ - Forum Programmation
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur t32 ✓ - Forum Livebox
- Erreur 0x80070643 - Accueil - Windows
2 réponses
Bonjour,
C'est difficile en regardant le code mais je ne remarque qu'une seule chose qui me semble anormale : dans la fonction numero_patient_suivant il y a un end à la place de endif. Mais ce n'est pas la cause de l'erreur.
L'erreur 424 est provoquée par une erreur dans l'exécution de UserForm_Initialize. C'est dans cette fonction qu'il manque un objet. Or si il manque un champ ou un bouton dans l'Userform ce n'est pas ce type d'erreur.
Je ne voie donc qu'une possibilité c'est que l'objet Feuil1 ne s'appelle pas Feuil1. Attention je ne parle pas du nom de la feuille dans l'onglet. Je parle du nom qui apparait dans la fenetre Visual Basic. En général dans la liste des feuilles il ya l'objet Feuille qui apparait sous cette forme :
Feuil1(Nom de la feuille1)
Feuil2(Nom de la feuille2)
...
Entre parenthèse c'est le nom qui est dans l'onglet et Feuil1 et Feuil2 sont les nom d'objet VBA
A vérifier que Feuil1 existe bien
Sinon pas d'autre idée pour le monment
Edit : Si une autre idée encore plus simple : que le formulaire ne s'appelle pas Saisie
A+
Cordialement,
C'est difficile en regardant le code mais je ne remarque qu'une seule chose qui me semble anormale : dans la fonction numero_patient_suivant il y a un end à la place de endif. Mais ce n'est pas la cause de l'erreur.
L'erreur 424 est provoquée par une erreur dans l'exécution de UserForm_Initialize. C'est dans cette fonction qu'il manque un objet. Or si il manque un champ ou un bouton dans l'Userform ce n'est pas ce type d'erreur.
Je ne voie donc qu'une possibilité c'est que l'objet Feuil1 ne s'appelle pas Feuil1. Attention je ne parle pas du nom de la feuille dans l'onglet. Je parle du nom qui apparait dans la fenetre Visual Basic. En général dans la liste des feuilles il ya l'objet Feuille qui apparait sous cette forme :
Feuil1(Nom de la feuille1)
Feuil2(Nom de la feuille2)
...
Entre parenthèse c'est le nom qui est dans l'onglet et Feuil1 et Feuil2 sont les nom d'objet VBA
A vérifier que Feuil1 existe bien
Sinon pas d'autre idée pour le monment
Edit : Si une autre idée encore plus simple : que le formulaire ne s'appelle pas Saisie
A+
Cordialement,