VBA : Impression souci code IF

  • Initiateur de la discussion Initiateur de la discussion Kiseki
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Kiseki

XLDnaute Occasionnel
Bonjour,


C'est sans doute tout bête mais je ne comprend pas pourquoi il me dit "Else sans If".

Code:
Sub P_print()
    Dim zprint As Range
    If Range("E50") <> "" Then zprint = "Print!$A$5:$G$61"
    ElseIf Range("E35") <> "" Then zprint = "Print!$A$5:$G$46"
    ElseIf Range("E20") <> "" Then zprint = "Print!$A$5:$G$31"
    ElseIf Range("E5") <> "" Then zprint = "Print!$A$5:$G$16"
    Else
        MsgBox ("Aucune donnée à imprimer")
        End Sub
    End If
    Sheets("Print").Range("zprint").PrintOut
End Sub
 
Re : VBA : Impression souci code IF

Bonjour
If...Then...Else, instruction


Permet d'exécuter conditionnellement des instructions en fonction du résultat d'une expression.

Syntaxe

If condition Then [statements] [Else elsestatements]

Vous pouvez également utiliser la syntaxe suivante :

If condition Then
[statements]

[ElseIf condition-n Then
[elseifstatements] ...

[Else
[elsestatements]]

End If
Vous commencez sur la première syntaxe où il n'attend plus ni ElseIf ni Else ni End If et considère que la suite n'a rien a voir et commence par EsleIf alors qu'il n'y a pas de If (syntaxe 1) auparavant.

Et d'ailleurs il ne doit pas y avoir non plus d'instruction sur la même ligne derrière Then dans un ElseIf.

Une insruction directement après un Then empêche VBA de considérer le If comme la première instruction d'un bloc devant se terminer par un End If.

Cordialement
 
Dernière édition:
Re : VBA : Impression souci code IF

Bonjour Kiseki,

Si tu mets l'action à réaliser directement derrière le Then, tu n'as pas besoin d'un End If
Si tu veux pouvoir en mettre un il faut aller à la ligne
D'autre part tu dois remplacer ton End sub dans le Else par un Exit Sub

Code:
    If Range("E50") <> "" Then
        zprint = "Print!$A$5:$G$61"
    ElseIf Range("E35") <> "" Then
        zprint = "Print!$A$5:$G$46"
    ElseIf Range("E20") <> "" Then
        zprint = "Print!$A$5:$G$31"
    ElseIf Range("E5") <> "" Then
        zprint = "Print!$A$5:$G$16"
    Else
        MsgBox ("Aucune donnée à imprimer")
        Exit Sub
    End If

edit : Bing, bonjour néné
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
756
Réponses
4
Affichages
523
Réponses
2
Affichages
411
Réponses
5
Affichages
916
Retour