Arrêter une execution VBA

Résolu/Fermé
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 - Modifié par linkcr15 le 24/04/2012 à 15:15
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 24 avril 2012 à 16:57
Bonjour,

J'ai, dans Excel, un UserForm qui me permet d'ajouter des données dans une autre feuille.
Il doit donc entrer du texte dans certains champs, mais aussi des dates! Le problème est que je ne veux pas envoyer les données si tous les champs ne sont pas bons. Je vérifie donc le format du TextBox.
Mon problème est que je ne sais pas comment dire au programme de ne pas ajouter les données sur l'autre feuille si tous les champs ne sont pas bons, c'est-à-dire redonner la main à l'utilisateur avec un MsgBox en prime pour qu'il puisse changer ces champs.
Voici mon code jusqu'ici :
If Me.Txt_Livraison.Text Like "**/**/**" Then 
feuilDemande.Cells(ligne + 1, 7).Value = Format(Txt_Livraison.Text, "dd/mm/yyyy") 
Else 
'Je ne sais pas quoi mettre ici 
End If

Pouvez-vous m'aider svp?

6 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
24 avril 2012 à 15:49
Bonjour,
La validation de l'envoi se fait par le click d'un bouton??
0
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 12
24 avril 2012 à 16:01
Exactement je suis dans Private Sub Cmd_Enregistrer_Click(). J'ai changé mon code en ça :

For ligne = 5000 To 1 Step -1
If feuilDemande.Cells(ligne, 1).Value <> "" Then
numero = ligne

On Error GoTo Etiquette


If Me.Txt_Demandeur.Text = "" Then
erreur = "Veuillez entrez la personne qui fait la demande"
MsgBox (erreur)
Exit Sub
End If
MsgBox ("apres demandeur")
If Cmb_Type.Value = "" Then
erreur = "Veuillez indiquer le type de la demande"
Exit Sub
End If

If Txt_Nature.Text = "" Then
erreur = "Veuillez entrer la nature de la demande"
Exit Sub
End If

If Cmb_Priorite.Value = "" Then
erreur = "Veuillez entrer la priorité de la demande"
Exit Sub
End If

If Not (Me.Txt_Livraison.Text Like "**/**/**") Then
erreur = "Champ date de livraison incorrect, veuillez entrer un format de date (jj/mm/aaaa)"
Exit Sub
End If

If VarType(Txt_Progression.Text) = 8 Then
erreur = "Veuillez entrer un pourcentage de progression valide"
Exit Sub
End If

If Not (Me.Txt_Fin.Text Like "**/**/**") Then
erreur = "Champ date de fin incorrecte, veuillez entrer un format de date (jj/mm/aaaa)"
Exit Sub
End If

MsgBox ("Numero de la demande : " & numero)
feuilDemande.Cells(ligne + 1, 1).Value = numero
feuilDemande.Cells(ligne + 1, 2).Value = Txt_Demandeur.Text
feuilDemande.Cells(ligne + 1, 3).Value = Format(Now, "dd/mm/yyyy")
feuilDemande.Cells(ligne + 1, 4).Value = Cmb_Type.Value
feuilDemande.Cells(ligne + 1, 5).Value = Txt_Nature.Text
feuilDemande.Cells(ligne + 1, 6).Value = Cmb_Priorite.Value
feuilDemande.Cells(ligne + 1, 7).Value = Format(Txt_Livraison.Text, "dd/mm/yyyy")
feuilDemande.Cells(ligne + 1, 8).Value = Txt_Retard.Text
feuilDemande.Cells(ligne + 1, 9).Value = Val(Txt_Progression.Text) / 100
feuilDemande.Cells(ligne + 1, 10).Value = Format(Txt_Fin.Text, "dd/mm/yyyy")
feuilDemande.Cells(ligne + 1, 11).Value = Txt_Reponse.Text
feuilDemande.Cells(ligne + 1, 12).Value = Txt_Efficacite.Text
Exit Sub
End If
Next ligne

Etiquette:
MsgBox ( erreur)


End Sub


Je vais donc bien dans les If et je n'envoie pas les données si il y a une erreur, mon seul problème est que je n'affiche pas l'erreur obtenue, je ne rentre pas dans Etiquette.

Je sais que j'ai des erreurs de syntaxe dans le On Error GoTo, je ne sais pas l'utiliser, quelqu'un peut me dire comment aller dans l'étiquette si je relève une erreur svp?
0
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 12
24 avril 2012 à 16:06
Autant pour moi, je n'avais pas du tout compris la fonction On Error GoTo, j'ai donc supprimé cette ligne pour simplement ajouté GoTo au dessus de mes Exit Sub pour ne pas envoyer mes données et relever l'erreur.
Merci quand même de t'être intéresser à moi f894009
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
24 avril 2012 à 16:13
Re,
Un instant de réflexion.........
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 12
24 avril 2012 à 16:52
Le but de ma fonction était de n'effectuer les traitements SEULEMENT si tous les champs étaient bons. Mon code ne ressemblait à rien avant, j'avais pas compris la fonction On Error, je l'ai donc supprimée et j'ai seulement fait des GoTo comme cela :
If Cmb_Priorite.Value = "" Then
erreur = "Veuillez entrer la priorité de la demande"
GoTo Etiquette
Exit Sub
End If

Ainsi, s'il y a une erreur, je vais à Etiquette et j'arrête le programme en affichant mon erreur et en laissant la main à l'utilisateur pour changer, comme je le voulais ^^
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
24 avril 2012 à 16:57
Re,

Bonne route
0