Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Else sans if

Hellowa

XLDnaute Junior
Bonjour à tous, bonjour le forum
J'ai un souci sur une de mes macro.
J'ai en effet eu a la modifier, et à rajouter un if.
Maintenant lorsque j'essaye de la lancer, je me retrouve avec un message d'erreur "Else without if".
Quelqu'un voit il ou est l'erreur dans l'imbrication des mes fonctions?
Code:
Sub Decalage_semaine()
 Dim SEM As Integer, Iligne As Integer
 Dim rep As Long, lastlig As Long, nblignestot As Long, sautlign As Long, nbligne As Long
    Dim tempsrestant As String

        lastlig = Sheets("salaries").Range("A1000").End(xlUp).Row
        nbligne = lastlig
    'On calcule tout d'abbord la semaine en cours
    SEM = WeekNumber(Now)
    'On vérifie que l'on a bien passé une semaine
    If Sheets("Temps").Range("M3").Value = SEM Then
        MsgBox ("Le planning est déjà affiché pour la semaine" & SEM)
        rep = MsgBox("Voulez vous tout de même forcer l'actualisation du planning?", vbYesNo)
        If rep = 6 Then GoTo Decale
        Else: GoTo fin
        End If
 [COLOR="Red"]   ElseIf MsgBox("Le fait de décaler la semaine, va déplacer les tableaux et donc effacer les valeurs dans le tableau de la semaine passée." + Chr(10) + "Cette action est irrémédiable.", vbYesNo + 256, "Attention: Décalage des semaines") = vbYes Then[/COLOR]
: Decale

'Structure du programme
 
: fin
End If
End If
End If
End Sub

Merci d'avance,
cdlt
Eloi.
 

JeanMarie

XLDnaute Barbatruc
Re : Else sans if

Bonjour Hellowa

Attentioin à l'écriture du code
VBA ne considère pas le bloc Else: .... end if appartenant à la condition If rep = 6 Then GoTo Decale
Si c'est bien le cas, tu dois l'écrire de cette manière
Code:
Sub Decalage_semaine()
 Dim SEM As Integer, Iligne As Integer
 Dim rep As Long, lastlig As Long, nblignestot As Long, sautlign As Long, nbligne As Long
    Dim tempsrestant As String

        lastlig = Sheets("salaries").Range("A1000").End(xlUp).Row
        nbligne = lastlig
    'On calcule tout d'abbord la semaine en cours
    SEM = WeekNumber(Now)
    'On vérifie que l'on a bien passé une semaine
    If Sheets("Temps").Range("M3").Value = SEM Then
        MsgBox ("Le planning est déjà affiché pour la semaine" & SEM)
        rep = MsgBox("Voulez vous tout de même forcer l'actualisation du planning?", vbYesNo)
        If rep = 6 Then
            GoTo Decale
        Else
            GoTo fin
        End If
    ElseIf MsgBox("Le fait de décaler la semaine, va déplacer les tableaux et donc effacer les valeurs dans le tableau de la semaine passée." + Chr(10) + "Cette action est irrémédiable.", vbYesNo + 256, "Attention: Décalage des semaines") = vbYes Then
: Decale

'Structure du programme
 
: fin
End If
End If
End If
End Sub

PS : Un autre point, l'utilisation des GOTO est à supprimer, fait des recherches sur le site, il y a des exemples te montrant comment le faire.

@+Jean-Marie
 

Hulk

XLDnaute Barbatruc
Re : Else sans if

Salut Forum, Hellowa,

Essaye en modifiant les dernières lignes comme ceci...
Code:
    If MsgBox("Le fait de décaler la semaine, va déplacer les tableaux et donc effacer les valeurs dans le tableau de la semaine passée." & Chr(10) & "Cette action est irrémédiable.", vbYesNo & 256, "Attention: Décalage des semaines") = vbYes Then
: Decale

'Structure du programme
 
: fin

End If
End If
End Sub
Note que j'ai remplacé les "+" par des "&".

Cdt, Hulk.

EDIT : Oups Salut JeanMarie tu as raison... j'avais pas vu ça vais me recoucher un peu Bye.
 
Dernière édition:

michel_m

XLDnaute Accro
Re : Else sans if

Bonjour

1/ tu n'as pas besoin de "Elseif "mais "else" tout simplement

2/ les "goto" ne doivent être utilisés que pour la gestion d'erreurs (on est plus au bon vieux temps du gwbasic)

cordialement,
 

Discussions similaires

Réponses
2
Affichages
291
Réponses
28
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…