Condition VBA

gerard55

XLDnaute Occasionnel
Bonjour à tous
J'ai besoin de votre aide pour le code ci-dessous. Je voudrais que s'il y a une erreur de saisie, il m'indique un message d'erreur. Mais, ce que j'ai écrit ne fonctionne pas.

Sub calendrier()
Dim jour As String
jour = InputBox("calendrier")
Range("ai1").Value = jour
If "ai1" = LUNDI Or MARDI Or MERCREDI Then
Range("AI1").Select
Selection.AutoFill Destination:=Range("AI1:AI7"), Type:=xlFillDefault
Range("AI1:AI7").Select
Range("f14").Select
Else
MsgBox ("vous avez une erreur de saisie")
End Sub

Merci pour vos proposition
Gérard
 

Habitude

XLDnaute Accro
Re : Condition VBA

Regarde modif en rouge

Bonjour à tous
J'ai besoin de votre aide pour le code ci-dessous. Je voudrais que s'il y a une erreur de saisie, il m'indique un message d'erreur. Mais, ce que j'ai écrit ne fonctionne pas.

Sub calendrier()
Dim jour As String
jour = InputBox("calendrier")
Range("ai1").Value = jour
If jour = "LUNDI" Or jour = "MARDI" Or jour = "MERCREDI" Then
Range("AI1").Select
Selection.AutoFill Destination:=Range("AI1:AI7"), Type:=xlFillDefault
'Range("AI1:AI7").Select LIGNE inutile
'Range("f14").Select LIGNE Inutile
Else
MsgBox ("vous avez une erreur de saisie")
End Sub

Merci pour vos proposition
Gérard
 

JNP

XLDnaute Barbatruc
Re : Condition VBA

Bonjour le fil :),
J'avais été juste un peu plus loin, alors :rolleyes:...
Code:
Sub calendrier()
Dim jour As String
Recommence:
jour = UCase(InputBox("calendrier"))
If jour = "LUNDI" Or jour = "MARDI" Or jour = "MERCREDI" Then
Range("AI1").Value = jour
Range("AI1").AutoFill Destination:=Range("AI1:AI7"), Type:=xlFillDefault
Else
MsgBox ("vous avez une erreur de saisie")
GoTo Recommence
End If
End Sub
UCase passe en majuscule, donc l'utilisateur peux tapper lundi, Lundi ou LUNDI.
Recommence: permet de redemander à l'utilisateur de resaisir grace à GoTo.
Et il parait plus logique de ne remplir la cellule que si la valeur est juste.
Bonne soirée :cool:
PS : Habitude, tu avais loupé le End If :p
 

Habitude

XLDnaute Accro
Re : Condition VBA

Tu veux remplacer le
MsgBox ("vous avez une erreur de saisie")

Par une validation du inputbox?

@Jnp tu as raison pour le end if et aussi le Ucase.

Donc je me permets de

Code:
Sub calendrier()
Dim jour As String

Do While jour <> "LUNDI" and jour <> "MARDI" and jour <> "MERCREDI"
     jour = UCase(Trim(InputBox("calendrier")))
Loop

Range("ai1").Value = jour
Range("AI1").Select
Selection.AutoFill Destination:=Range("AI1:AI7"), Type:=xlFillDefault

End Sub
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Condition VBA

Re :),
Mais, la condition telle qu'elle est écrite n'empèche aucune écriture. l'on peut écrire ce que l'on veut
C'est bien ce que j'avais écrit, tester la variable, et si le test est bon, écrire ;).
A + :cool:
@ Habitude : J'allais dire que si l'utilisateur voulait sortir, il fallait peut-être ajouter
Code:
jour = UCase(InputBox("calendrier"))
If jour = "" Then Exit Sub
If jour = "LUNDI" Or jour = "MARDI" Or jour = "MERCREDI" Then
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Condition VBA

Bonsoir à tous
Une variante sur le principe de la procédure de Habitude :
Code:
[COLOR="DarkSlateGray"][B]Sub calendrier()
Dim jour$, msg$
   With Range("AI1")
      Do
         jour = WorksheetFunction.Proper(InputBox("calendrier", msg, .Value))
         If msg = "" Then msg = "Vous avez une erreur de saisie !"
      Loop Until jour Like "Lun*" Or jour Like "Mar*" Or jour Like "Mer*" Or jour = ""
      .Value = jour
      .AutoFill Destination:=.Resize(7, 1), Type:=xlFillWeekdays
   End With
End Sub[/B][/COLOR]
ROGER2327
#3940


Samedi 7 Tatane 137 (Saint Biribi, taulier, SQ)
2 Thermidor An CCXVIII
2010-W29-2T23:24:24Z
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Condition VBA

Re :),
mais , j'ai essayé toute vos suggestions. Mais, je peux saisir ce que je veux.
C'est sûr, une InputBox est en saisie libre, c'est après que tu peux tester ce que l'utilisateur a rempli. Il n'y a pas de masque de saisie :p...
Il est possible, mais assez complexe, de modifier l'intitulé des bouton, et de remplacer Oui, Non et Annuler par exemple par tes LUNDI, etc., mais il mes semble que tu es limité à 3 possibilité, et ça tient plutôt de l'usine à gaz :D...
Si tu veux forcer la saisie, il faut passer par un ComboBox (voir PJ) ;).
La liste de validation d'Habitude serait une autre possibilité, sauf qu'il me semble qu'on ne peux pas forcer à prendre un élément de la liste déroulante, donc la saisie est libre, c'est la validation de la cellule qui est interdite, ce qui correspond à l'InputBox de départ :eek:.
Bonne journée :cool:
 

Pièces jointes

  • Combobox.xls
    47 KB · Affichages: 78
  • Combobox.xls
    47 KB · Affichages: 80
  • Combobox.xls
    47 KB · Affichages: 81

Discussions similaires

Réponses
6
Affichages
281

Membres actuellement en ligne

Statistiques des forums

Discussions
312 429
Messages
2 088 351
Membres
103 823
dernier inscrit
ben talha redouane