OVH Cloud OVH Cloud

erreur de compilation

3 réponses
Avatar
sinpa
Bonjour
Voici mon code :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
PasTouche Target, Range("A1:A10")
End Sub

Sub PasTouche(LaCellule As Range, PlageAutorisée As Range)
If Intersect(LaCellule, PlageAutorisée) Is Nothing Then MsgBox "saisie
son autorisée !"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub

J'ai un message d'erreur de compilation sur End If : "End If sans bloc If"
Je ne comprends pas. Merci pour vos explications
Eric

3 réponses

Avatar
Michel Gaboly
Bonsoir,

Ou bien on écrit

If Condition Then Insgtruction

ou

If Condition Then
Instruction
End If


Ton 1er If est du premier type, donc il n'y a effectivement pas de If cor repondant au End If


Il faut écrire

Sub PasTouche(LaCellule As Range, PlageAutorisée As Range)
If Intersect(LaCellule, PlageAutorisée) Is Nothing Then
MsgBox "saisie non autorisée !"
Else
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub

Bonjour
Voici mon code :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Ra nge)
PasTouche Target, Range("A1:A10")
End Sub

Sub PasTouche(LaCellule As Range, PlageAutorisée As Range)
If Intersect(LaCellule, PlageAutorisée) Is Nothing Then MsgBox "s aisie
son autorisée !"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub

J'ai un message d'erreur de compilation sur End If : "End If sans bloc If"
Je ne comprends pas. Merci pour vos explications
Eric





--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
sinpa
"Michel Gaboly" a écrit dans le message de news:

Bonsoir,

Ou bien on écrit

If Condition Then Insgtruction

ou

If Condition Then
Instruction
End If
-----------------------
Excuse moi, mais je vois pas la différence entre :
If Condition Then Instruction
et
If Condition Then Instruction

Alors pourquoi un end if dans le 2° cas et pas dans le 1er ?
Avatar
Michel Gaboly
La différence que est que si on écrit

If Condition Then Instruction

sur une seule ligne, il n'y a pas de End If


Dans le cas contraire, le End If est nécessaire car il permet de déte rminer quelle(s) instructions sont soumises au If.
Ce sont celles qui sont entre le If et le End If


Dans ton code il y avait un

If Condition Then Instruction

qui forme un ensemble.

Par conséquent ton End If n'avait pas de If Correspondant


Si tu utilises End If TU NE PEUX PAS mettre une instruvtion sur la même migne que le If correspondant

Pour traiter les 2 cas (quoi faire selon que la condition est remplie ou non, il est IMPERATIF d'utiliser cette structure :

If Condition Then
Instructions si condition remplie
Else
Instructions si condition non remplie
End If

Dans ton code, il y a 2 anomalies :

1 - Instruction sur la meme ligne que If ET emploi de End If, ce qui est incompatible

2 - Absence du Else


"Michel Gaboly" a écrit dans le message de news:

Bonsoir,

Ou bien on écrit

If Condition Then Instruction

ou

If Condition Then
Instruction
End If
-----------------------
Excuse moi, mais je vois pas la différence entre :
If Condition Then Instruction
et
If Condition Then Instruction

Alors pourquoi un end if dans le 2° cas et pas dans le 1er ?







--
Cordialement,

Michel Gaboly
www.gaboly.com