Arrêter une execution VBA
Résolu
linkcr15
Messages postés
362
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
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 :
Pouvez-vous m'aider svp?
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?
A voir également:
- Arreter execution vba
- Excel compter cellule couleur sans vba - Guide
- Arreter une macro vba ✓ - Forum Bureautique
- Find vba - Astuces et Solutions
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
6 réponses
Exactement je suis dans Private Sub Cmd_Enregistrer_Click(). J'ai changé mon code en ça :
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?
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?
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
Merci quand même de t'être intéresser à moi f894009
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 :
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 ^^
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 ^^