Je n'arrive pas à faire fonctionner mon userform à chaque fois j'ai ce message d'erreur qui apparaît
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
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