Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] Else sans If ???

8 réponses
Avatar
XLnoob
Bonjour,

débutant sous VBA, j'ai créé une petite macro pour vérrouiller/déverrouiller
toutes mes feuilles en une seule fois via une InputBox, mais j'obtiens un
message "erreur de compilation: Else sans If".

Je pense pourtant avoir respecté la syntaxe conditionnelle...
Merci par avance pour l'aide que vous pourrez m'apporter,


------------------------------------
Dim Code As String
Code = Inputbox("Code?", "Entrer le code", "Texte par défaut", 100, 100)

Dim WS As Worksheet
Application.ScreenUpdating = False


If Code = "Ouvrir" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Unprotect password:="blablabla"

ElseIf Code = "Fermer" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Protect password:="blablabla"

Else: Exit Sub

End If

Application.ScreenUpdating = True
End Sub

8 réponses

Avatar
Elliac
Bonjour,

Le problème vient plutôt des For Each sans Next

Camille

"XLnoob" wrote:

Bonjour,

débutant sous VBA, j'ai créé une petite macro pour vérrouiller/déverrouiller
toutes mes feuilles en une seule fois via une InputBox, mais j'obtiens un
message "erreur de compilation: Else sans If".

Je pense pourtant avoir respecté la syntaxe conditionnelle...
Merci par avance pour l'aide que vous pourrez m'apporter,


------------------------------------
Dim Code As String
Code = Inputbox("Code?", "Entrer le code", "Texte par défaut", 100, 100)

Dim WS As Worksheet
Application.ScreenUpdating = False


If Code = "Ouvrir" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Unprotect password:="blablabla"

ElseIf Code = "Fermer" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Protect password:="blablabla"

Else: Exit Sub

End If

Application.ScreenUpdating = True
End Sub



Avatar
Phil
Bjr
message d'erreur ambigu..
En fait pour chaque for, il fau un next...

For Each WS In ActiveWorkbook.Worksheets
WS.Unprotect password:="blablabla"
Next WS

"XLnoob" a écrit dans le message de news:

Bonjour,

débutant sous VBA, j'ai créé une petite macro pour
vérrouiller/déverrouiller
toutes mes feuilles en une seule fois via une InputBox, mais j'obtiens un
message "erreur de compilation: Else sans If".

Je pense pourtant avoir respecté la syntaxe conditionnelle...
Merci par avance pour l'aide que vous pourrez m'apporter,


------------------------------------
Dim Code As String
Code = Inputbox("Code?", "Entrer le code", "Texte par défaut", 100, 100)

Dim WS As Worksheet
Application.ScreenUpdating = False


If Code = "Ouvrir" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Unprotect password:="blablabla"

ElseIf Code = "Fermer" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Protect password:="blablabla"

Else: Exit Sub

End If

Application.ScreenUpdating = True
End Sub



Avatar
Jacky
Bonjour,
Un peu simplifié......
'----------
Sub jj()
Dim Code As String
Dim WS As Worksheet
Code = InputBox("Code?", "Entrer le code", "Texte par défaut", 100, 100)
Application.ScreenUpdating = False
For Each WS In ActiveWorkbook.Worksheets
If UCase(Code) = "OUVRIR" Then WS.Unprotect Password:="blablabla"
If UCase(Code) = "FERMER" Then WS.Protect Password:="blablabla"
Next
End Sub
'-------------

--
Salutations
JJ


"MichDenis" a écrit dans le message de news:

Quand tu emploies "For", il ne faut pas oublier de fermer la boucle avec
"Next.


Sub test()
Dim Code As String
Code = InputBox("Code?", "Entrer le code", "Texte par défaut", 100, 100)

Dim WS As Worksheet
Application.ScreenUpdating = False


If Code = "Ouvrir" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Unprotect Password:="blablabla"
Next

ElseIf Code = "Fermer" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Protect Password:="blablabla"
Next

Else: Exit Sub

End If

Application.ScreenUpdating = True
End Sub





"XLnoob" a écrit dans le message de
news:

Bonjour,

débutant sous VBA, j'ai créé une petite macro pour
vérrouiller/déverrouiller
toutes mes feuilles en une seule fois via une InputBox, mais j'obtiens un
message "erreur de compilation: Else sans If".

Je pense pourtant avoir respecté la syntaxe conditionnelle...
Merci par avance pour l'aide que vous pourrez m'apporter,


------------------------------------
Dim Code As String
Code = Inputbox("Code?", "Entrer le code", "Texte par défaut", 100, 100)

Dim WS As Worksheet
Application.ScreenUpdating = False


If Code = "Ouvrir" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Unprotect password:="blablabla"

ElseIf Code = "Fermer" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Protect password:="blablabla"

Else: Exit Sub

End If

Application.ScreenUpdating = True
End Sub




Avatar
XLnoob
Vu le nombre de (bonnes) réponses je crois qu'il va falloir developper la
photo finish pour déterminer le vainqueur!

En tout cas MERCI à tous!
...
Le débogueur qui bug, j'avais pas pensé à ca!




Bonjour,
Un peu simplifié......
'----------
Sub jj()
Dim Code As String
Dim WS As Worksheet
Code = InputBox("Code?", "Entrer le code", "Texte par défaut", 100, 100)
Application.ScreenUpdating = False
For Each WS In ActiveWorkbook.Worksheets
If UCase(Code) = "OUVRIR" Then WS.Unprotect Password:="blablabla"
If UCase(Code) = "FERMER" Then WS.Protect Password:="blablabla"
Next
End Sub
'-------------

--
Salutations
JJ


"MichDenis" a écrit dans le message de news:

Quand tu emploies "For", il ne faut pas oublier de fermer la boucle avec
"Next.


Sub test()
Dim Code As String
Code = InputBox("Code?", "Entrer le code", "Texte par défaut", 100, 100)

Dim WS As Worksheet
Application.ScreenUpdating = False


If Code = "Ouvrir" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Unprotect Password:="blablabla"
Next

ElseIf Code = "Fermer" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Protect Password:="blablabla"
Next

Else: Exit Sub

End If

Application.ScreenUpdating = True
End Sub





"XLnoob" a écrit dans le message de
news:

Bonjour,

débutant sous VBA, j'ai créé une petite macro pour
vérrouiller/déverrouiller
toutes mes feuilles en une seule fois via une InputBox, mais j'obtiens un
message "erreur de compilation: Else sans If".

Je pense pourtant avoir respecté la syntaxe conditionnelle...
Merci par avance pour l'aide que vous pourrez m'apporter,


------------------------------------
Dim Code As String
Code = Inputbox("Code?", "Entrer le code", "Texte par défaut", 100, 100)

Dim WS As Worksheet
Application.ScreenUpdating = False


If Code = "Ouvrir" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Unprotect password:="blablabla"

ElseIf Code = "Fermer" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Protect password:="blablabla"

Else: Exit Sub

End If

Application.ScreenUpdating = True
End Sub









Avatar
isabelle
bonjour XLnoob,

c'est Next qui manque à la macro pour compléter le For

isabelle

Bonjour,

débutant sous VBA, j'ai créé une petite macro pour vérrouiller/déverrouiller
toutes mes feuilles en une seule fois via une InputBox, mais j'obtiens un
message "erreur de compilation: Else sans If".

Je pense pourtant avoir respecté la syntaxe conditionnelle...
Merci par avance pour l'aide que vous pourrez m'apporter,


------------------------------------
Dim Code As String
Code = Inputbox("Code?", "Entrer le code", "Texte par défaut", 100, 100)

Dim WS As Worksheet
Application.ScreenUpdating = False


If Code = "Ouvrir" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Unprotect password:="blablabla"

ElseIf Code = "Fermer" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Protect password:="blablabla"

Else: Exit Sub

End If

Application.ScreenUpdating = True
End Sub



Avatar
MichDenis
Quand tu emploies "For", il ne faut pas oublier de fermer la boucle avec "Next.


Sub test()
Dim Code As String
Code = InputBox("Code?", "Entrer le code", "Texte par défaut", 100, 100)

Dim WS As Worksheet
Application.ScreenUpdating = False


If Code = "Ouvrir" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Unprotect Password:="blablabla"
Next

ElseIf Code = "Fermer" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Protect Password:="blablabla"
Next

Else: Exit Sub

End If

Application.ScreenUpdating = True
End Sub





"XLnoob" a écrit dans le message de news:

Bonjour,

débutant sous VBA, j'ai créé une petite macro pour vérrouiller/déverrouiller
toutes mes feuilles en une seule fois via une InputBox, mais j'obtiens un
message "erreur de compilation: Else sans If".

Je pense pourtant avoir respecté la syntaxe conditionnelle...
Merci par avance pour l'aide que vous pourrez m'apporter,


------------------------------------
Dim Code As String
Code = Inputbox("Code?", "Entrer le code", "Texte par défaut", 100, 100)

Dim WS As Worksheet
Application.ScreenUpdating = False


If Code = "Ouvrir" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Unprotect password:="blablabla"

ElseIf Code = "Fermer" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Protect password:="blablabla"

Else: Exit Sub

End If

Application.ScreenUpdating = True
End Sub
Avatar
isabelle
salut Denis,

on est parti pour arriver bon 2ème pour les prochaines 3 semaines ;-)

Difference time : UTC/GMT -05:00 inc. summer time : +01:00
Daylight Saving Time :
From : 03/11/2007 02:00 (+01:00)
To : 11/04/2007 02:00 (-01:00)

it's summer time now !

isabelle

Quand tu emploies "For", il ne faut pas oublier de fermer la boucle avec "Next.


Sub test()
Dim Code As String
Code = InputBox("Code?", "Entrer le code", "Texte par défaut", 100, 100)

Dim WS As Worksheet
Application.ScreenUpdating = False


If Code = "Ouvrir" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Unprotect Password:="blablabla"
Next

ElseIf Code = "Fermer" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Protect Password:="blablabla"
Next

Else: Exit Sub

End If

Application.ScreenUpdating = True
End Sub





"XLnoob" a écrit dans le message de news:

Bonjour,

débutant sous VBA, j'ai créé une petite macro pour vérrouiller/déverrouiller
toutes mes feuilles en une seule fois via une InputBox, mais j'obtiens un
message "erreur de compilation: Else sans If".

Je pense pourtant avoir respecté la syntaxe conditionnelle...
Merci par avance pour l'aide que vous pourrez m'apporter,


------------------------------------
Dim Code As String
Code = Inputbox("Code?", "Entrer le code", "Texte par défaut", 100, 100)

Dim WS As Worksheet
Application.ScreenUpdating = False


If Code = "Ouvrir" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Unprotect password:="blablabla"

ElseIf Code = "Fermer" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Protect password:="blablabla"

Else: Exit Sub

End If

Application.ScreenUpdating = True
End Sub




Avatar
MichDenis
Bonjour Isabelle,

Je veux bien arriver deuxième si cela me permet de vor plus clair ... plus tard !
;-)

oui, oui, l'été s'en vient !

Salutations


"isabelle" a écrit dans le message de news: %
salut Denis,

on est parti pour arriver bon 2ème pour les prochaines 3 semaines ;-)

Difference time : UTC/GMT -05:00 inc. summer time : +01:00
Daylight Saving Time :
From : 03/11/2007 02:00 (+01:00)
To : 11/04/2007 02:00 (-01:00)

it's summer time now !

isabelle

Quand tu emploies "For", il ne faut pas oublier de fermer la boucle avec "Next.


Sub test()
Dim Code As String
Code = InputBox("Code?", "Entrer le code", "Texte par défaut", 100, 100)

Dim WS As Worksheet
Application.ScreenUpdating = False


If Code = "Ouvrir" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Unprotect Password:="blablabla"
Next

ElseIf Code = "Fermer" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Protect Password:="blablabla"
Next

Else: Exit Sub

End If

Application.ScreenUpdating = True
End Sub





"XLnoob" a écrit dans le message de news:

Bonjour,

débutant sous VBA, j'ai créé une petite macro pour vérrouiller/déverrouiller
toutes mes feuilles en une seule fois via une InputBox, mais j'obtiens un
message "erreur de compilation: Else sans If".

Je pense pourtant avoir respecté la syntaxe conditionnelle...
Merci par avance pour l'aide que vous pourrez m'apporter,


------------------------------------
Dim Code As String
Code = Inputbox("Code?", "Entrer le code", "Texte par défaut", 100, 100)

Dim WS As Worksheet
Application.ScreenUpdating = False


If Code = "Ouvrir" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Unprotect password:="blablabla"

ElseIf Code = "Fermer" Then
For Each WS In ActiveWorkbook.Worksheets
WS.Protect password:="blablabla"

Else: Exit Sub

End If

Application.ScreenUpdating = True
End Sub