[VBA] If...If Not...End If
Bonjour,
J'ai un message d'erreur classique "Bloc If sans End If", j'ai beau essayer différentes choses, je ne parviens pas à structurer le paragraphe comme il le souhaite :
Private Sub B_Valid_Click()
' Controle que les champs essentiels du formulaire des entrées aient été bien remplis
If Len(Me.TextBox9) = 0 Then
MsgBox "Impossible de valider, vous n'avez pas rempli le champ Produit"
Exit Sub
ElseIf Len(Me.TextBox1) = 0 Then
MsgBox "Impossible de valider, vous n'avez pas rempli le champ Quantité"
Exit Sub
ElseIf Len(Me.TextBox5) = 0 Then
MsgBox "Impossible de valider, vous n'avez pas rempli le champ Prix Total de la commande"
Exit Sub
ElseIf Len(Me.TextBox7) = 0 Then
MsgBox "Impossible de valider, vous n'avez pas rempli le champ Prix Unitaire"
Exit Sub
End If
' Controle que les champs nombres soient bien des valeurs numériques
If Not IsNumeric(TextBox1.Text) Then
MsgBox "Impossible de valider, erreur sur le champ Quantité saisie"
Exit Sub
If Not IsNumeric(TextBox5.Text) Then
MsgBox "Impossible de valider, erreur sur le champ Prix total de la commande"
Exit Sub
If Not IsNumeric(TextBox1.Text) Then
MsgBox "Impossible de valider, erreur sur le champ Prix Unitaire saisie"
Exit Sub
End If
'...et passer à la suite, au traitement du formulaire
' Positionnement dans la base STOCKS
ligne = Sheets("STOCKS").[a65000].End(xlUp).Row + 1
' Transfert Formulaire dans STOCKS
Sheets("STOCKS").Cells(ligne, 1) = Me.TextBox9 'Recopie Désignation du Produit
Sheets("STOCKS").Cells(ligne, 2) = CDbl(Me.TextBox1) 'Recopie Quantité produit (accepte qu'un nombre)
...patati patata...
End SubComme il y a bien des End If, je pense que mon code en langage petit-chinois (je fais ce que je peux
Voyez vous où est mon erreur ?
(c'est la page "sortie", USF_C si jamais ça a une importance)
Bonjour
Il faut autant de End If que de conditions If
Cordialement
Merci pour votre aide, malheureusement même avec votre réponse je n'y arrive pas, j'ai essayé plein de structures :
Test 1/
If
- -Else If
- -Else If
- -Else If
If Not
- -If Not
- -If Not
- -If Not
Test 2/
If
- -Else If
- -Else If
- -Else If
If Not
End If
--If Not
End If
--If Not
End If
Test 3/
If
- -Else If
- -Else If
- -Else If
If Not
Else
--If Not
Else
--If Not
End If
Et je passe une bonne dizaine d'autres essais. Je sèche...
- Messages
- 1'119
- Excel
- 2013 FR
- Inscrit
- 18/09/2015
- Emploi
- Développeur Bureautique Indépendant (Excel)
Bonjour Cricri19, Amadéus
Effectivement toujours autant de IF que de ENDIF
Perso je n'aime pas trop ElseIf et j'évite les Exit Sub autant que possible !
Voici donc une idée de formulation de code à tester !
If Len(Me.TextBox9) = 0 Then
MsgBox "Impossible de valider, vous n'avez pas rempli le champ Produit"
Else
If Len(Me.TextBox1) = 0 Then
MsgBox "Impossible de valider, vous n'avez pas rempli le champ Quantité"
Else
If Len(Me.TextBox5) = 0 Then
MsgBox "Impossible de valider, vous n'avez pas rempli le champ Prix Total de la commande"
Else
If Len(Me.TextBox7) = 0 Then
MsgBox "Impossible de valider, vous n'avez pas rempli le champ Prix Unitaire"
End If
End If
End If
End IfMaintenant si ça ne tourne toujours pas, parfois il est utile de tourner les tests dans l'autre sens :
If Not(condition) Then
[tab]actionNonCondition[/tab]
Else
[tab]actionCondition[/tab]
End IfAttention je n'ai pas tester ton code !
Attention je n'ai pas testeré ton code !
J'ai fait un mélange des 2 solutions et après quelques essais, ça marche, merci beaucoup Andréa !
Edit: Ma 1re vague de contrôle suit ton 1er code, et ma seconde vague de contrôle j'ai reformulé selon ta 2ème proposition.
- Messages
- 1'119
- Excel
- 2013 FR
- Inscrit
- 18/09/2015
- Emploi
- Développeur Bureautique Indépendant (Excel)
Bonjour Cricri19, tous
Cricri19 a écrit :merci beaucoup Andréa !
Egalement heureux d'avoir contribué à la résolution de ton problème
Pour informations qu'est-ce que tu veux dire par
?Cricri19 a écrit :J'ai fait un mélange des 2 solutions
- Messages
- 1'119
- Excel
- 2013 FR
- Inscrit
- 18/09/2015
- Emploi
- Développeur Bureautique Indépendant (Excel)
(re)
Ok pour le "shaker à solutions"
Effectivement souvent il faut "mixer" pour que ça passe mieux !
Plus sérieusement ... à mon avis...
Les tests devraient toujours pouvoir se lire d'une seule traite et de manière logique (pour l'homme) pas celle de l'ordinateur !
Par exemple "homme" ne connait pas Exit Sub ! donc il faut trouver le moyen de faire autrement ! Ce n'est pas toujours possible dirons certains ! Mais par exemple
Il faut essayer au maximum "d'écrire" en langage naturel, cela permet de formuler les tests "comme on parle" ! et souvent même faire un petit dessin ou un organigramme (si l'on sait faire)