erreur d'exécution "424" objet requis

lovista

XLDnaute Nouveau
Je n'arrive pas à faire fonctionner mon userform à chaque fois j'ai ce message d'erreur qui apparaît :confused:
Voici mon code (c'est pour ajouter les données d'un nouvel employé) :
'*********************************************************
' PROCEDURES DE CONTROLES
'*********************************************************
'DEFINIR LE NOMBRE DE CARACTERES
Private Sub userform_initialize()
Sheets("liste employés").Activate 'Activer la feuille de calcul Liste Employés
numbagde.MaxLength = 3 'Fixer la taille maximum des différents champs
Nom.MaxLength = 20
Prénom.MaxLength = 20
adrs.MaxLength = 50
CP.MaxLength = 5
Ville.MaxLength = 20
Tel.MaxLength = 10
SS.MaxLength = 15
End Sub
'ACTIVER LE BOUTON ANNULER
Private Sub Annuler_Click()
ad_employ.Hide 'Sortir de la boite de dialogue
End Sub
'ACTIVER LE BOUTON OK
Private Sub Ok_Click()
Call ecrire 'Ecrire les informations saisies sur la feuille de calcul
Unload ad_employ 'Sortir de la boite de dialogue
End Sub
'*********************************************************
' PROCEDURES DE CONTROLES
'*********************************************************
'CONTROLER LA SAISIE DES CARACTERES DU BADGE
Private Sub NumBadge_Change()
longueur = Len(NumBadge) 'Calculer la longueur du numéro de badge
If NumBadge <> "" And Not IsNumeric(NumBadge) Then 'Si le numéro de badge est saisi mais n'est pas numérique alors
Beep 'Emettre un signal sonore et un message visuel
rép = MsgBox("Veuillez entrer une valeur numérique svp", vbCritical, "ATTENTION")
If longueur <> 0 Then 'Si la longueur n'est pas nulle alors
NumBadge = Left(NumBadge, longueur - 1)
End If
End If
End Sub

'CONTROLER LA SAISIE DES CARACTERES DU NOM
Private Sub nom_keypress(ByVal keyascii As MSForms.ReturnInteger)
If Not (keyascii = 32 Or keyascii = 45 Or (keyascii >= 65 And keyascii >= 122)) Then
champ = Nom
Call erreur(champ, keyascii)
End If
End Sub
'CONTROLER LA SAISIE DES CARACTERES DU PRENOM
Private Sub prénom_keypress(ByVal keyascii As MSForms.ReturnInteger)
If Not (keyascii = 32 Or keyascii = 45 Or (keyascii >= 65 And keyascii >= 122) Or (keyascii >= 224 And keyascii <= 255)) Then
champ = Prénom
Call erreur(champ, keyascii)
End If
End Sub
'CONTROLER LA SAISIE DES CARACTERES DE L'ADRESSE
Private Sub adrs_Change()
If Not adrs = "" Then
rep = MsgBox("L'adresse est-elle bien & adrs& ?", vbYesNo, "CONFIRMATION")
End Sub

'CONTROLER LA SAISIE DES CARACTERES DU CODE POSTAL
Private Sub CP_Change()
longueur = Len(CP)
If CP <> "" And Not IsNumeric(CP) Then
Beep
rép = MsgBox("Veuillez entrer une valeur numérique svp", vbCritical, "ATTENTION")
If longueur <> 0 Then
CP = Left(CP, longueur - 1)
End If
End If
End Sub
'CONTROLER LA SAISIE DES CARACTERES DE LA VILLE
Private Sub ville_keypress(ByVal keyascii As MSForms.ReturnInteger)
If Not (keyascii = 32 Or keyascii = 45 Or (keyascii >= 65 And keyascii >= 122)) Then
champ = Ville
Call erreur(champ, keyascii)
End If
End Sub
'CONTROLER LA SAISIE DES CARACTERES DU NUMERO DE TEL
Private Sub tel_Change()
longueur = Len(Tel)
If Tel <> "" And Not IsNumeric(Tel) Then
Beep
rép = MsgBox("Veuillez entrer une valeur numérique svp", vbCritical, "ATTENTION")
If longueur <> 0 Then
Tel = Left(Tel, longueur - 1)
End If
End If
End Sub
'CONTROLER LA SAISIE DES CARACTERES DU NUMERO DE SECURITE SOCIALE
Private Sub ss_Change()
longueur = Len(SS)
If SS <> "" And Not IsNumeric(SS) Then
Beep
rép = MsgBox("Veuillez entrer une valeur numérique svp", vbCritical, "ATTENTION")
If longueur <> 0 Then
SS = Left(SS, longueur - 1)
End If
End If
End Sub
'CONTROLER SAISIE DU NOM ET SA MISE EN MAJUSCULE
Private Sub nom_exit(ByVal cancel As MSForms.ReturnBoolean)
If Nom = "" Then
Beep
rép = MsgBox("La saisie du nom est obligatoire", vbCritical, "ATTENTION")
cancel = True
Else
Nom = UCase(Nom)
End If
End Sub
'CONTROLER SAISIE DU PRENOM ET SA MISE EN MAJUSCULE
Private Sub prénom_exit(ByVal cancel As MSForms.ReturnBoolean)
If Prénom = "" Then
Beep
rép = MsgBox("La saisie du prénom est obligatoire", vbCritical, "ATTENTION")
cancel = True
Else
longueur = Len(Prénom)
For Position = 1 To longueur
suivante = Mid(Prénom, Position, 1)
If Position = 1 Or précédente = "" Or précédente = "-" Then
Pré = Pré + UCase(suivante)
Else
Pré = Pré + suivante
End If
précédente = suivante
Next
Prénom = Pré
End If
End Sub
'CONTROLER SAISIE DE L'ADRESSE
Private Sub adrs_exit(ByVal cancel As MSForms.ReturnBoolean)
If adrs = "" Then
Beep
rép = MsgBox("La saisie de l'adresse est obligatoire", vbCritical, "ATTENTION")
cancel = True
End If
End Sub
'CONTROLER LA TAILLE DU CODE POSTAL
Private Sub CP_exit(ByVal cancel As MSForms.ReturnBoolean)
If longueur <> 5 Then
Beep
rép = MsgBox("Un code postal ne peut contenir & longueur& caractères !", vbCritical, "ATTENTION")
cancel = True
End If
End Sub
'CONTROLER SAISIE DE LA VILLE ET SA MISE EN MAJUSCULE
Private Sub ville_exit(ByVal cancel As MSForms.ReturnBoolean)
If Ville = "" Then
Beep
rép = MsgBox("La saisie de la ville est obligatoire", vbCritical, "ATTENTION")
cancel = True
Else
Ville = UCase(Ville)
End If
End Sub
'CONTROLER LA TAILLE DU NUMERO DE TELEPHONE
Private Sub tel_exit(ByVal cancel As MSForms.ReturnBoolean)
If longueur <> 10 Then
Beep
rép = MsgBox("Un numéro de téléphone ne peut contenir & longueur& caractères !", vbCritical, "ATTENTION")
cancel = True
End If
End Sub
'CONTROLER LA TAILLE DU NUMERO DE SECURITE SOCIALE
Private Sub SS_exit(ByVal cancel As MSForms.ReturnBoolean)
If longueur <> 15 Then
Beep
rép = MsgBox("Un numéro de sécurité sociale ne peut contenir & longueur& caractères !", vbCritical, "ATTENTION")
cancel = True
End If
End Sub
'*********************************************************
' LIAISON DE LA FEUILLE DE DONNEES EXCEL AVEC LA BOITE DE DIALOGUE
'*********************************************************
Sub ecrire()
Dim lig As Long
lig = Range("B6").End(xlDown).Row + 1
Range("B" & lig).Value = NumBadge.Value
lig = Range("C6").End(xlDown).Row + 1
Range("C" & lig).Value = Nom
lig = Range("D6").End(xlDown).Row + 1
Range("D" & lig).Value = Prénom
lig = Range("E6").End(xlDown).Row + 1
Range("E" & lig).Value = adrs
lig = Range("G6").End(xlDown).Row + 1
Range("G" & lig).Value = CP.Value
lig = Range("H6").End(xlDown).Row + 1
Range("H" & lig).Value = Ville
lig = Range("I6").End(xlDown).Row + 1
Range("I" & lig).Value = Tel.Value
lig = Range("J6").End(xlDown).Row + 1
Range("J" & lig).Value = SS.Value
End Sub
 

mutzik

XLDnaute Barbatruc
Re : erreur d'exécution "424" objet requis

Bonjour à toi aussi !!!

1. je suis sur que tu as lu notre charte qui demande un minimum de politesse
2. c'est bien, ton code, si tu pouvais nous quelle ligne se situe ton erreur
3. une formule de politesse en fin de message n'est pas interdite non plus

nb : on peut regarder d'autre message avant de poster son 1er (avis personnel, c'est comme cela que je fais quand je vais sur un nouveau site ...)
 

lovista

XLDnaute Nouveau
Re : erreur d'exécution "424" objet requis

Effectivement, j'ai manquée de politesse, je suis désolé, j'étais trop prise par mon problème.
Alors je recommence:
Bonjour,
je n'arrive pas à comprendre pourquoi ce message d'erreur apparait (je suis novice en VBA), et je n'ai pas réussi à trouver une réponse dans les autres posts car je ne comprends pas leurs programmes (de ce fait je ne comprends pas les réponses qui peuvent vous paraitre pourtant logique).
De plus je ne sais pas comment je fais pour savoir à quelle ligne se situe mon erreur (sinon je n'aurais pas tout mis d'ailleurs ^^)
Merci de votre aide :)
 

mutzik

XLDnaute Barbatruc
Re : erreur d'exécution "424" objet requis

re,

d'où l'importance de mettre dans le code VBA Option Explicit qui oblige à déclarer les variables, les objets ... qu'on va utiliser dans le code. Avant que le code ne s'exécute, VBA va vérifier si tout est déclaré, et en cas de faute de frappe, il mettra un message d'erreur en surlignant la variable 'objet non déclaré'.
Ceci évite bien des déboires

Devons nous comprendre par ton dernier message qu'il n'y a plus d'erreur ?
 

lovista

XLDnaute Nouveau
Re : erreur d'exécution "424" objet requis

Re
Comme je vous l'ai dis je suis novice donc je ne connaissais pas Option Explicit du coup si vous pouviez m'expliquer comment je mets ça svp ça m'aidera surement pour d'autres fois.

Sinon mon dernier message signifie bien que mon problème est réglé, le message d'erreur ne s'affiche plus ! :)

Merci
 

Discussions similaires

Réponses
2
Affichages
409

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 107
dernier inscrit
cdel