Block else sans if

Bonjour

J'ai une erreur sur cette partie :

Private Sub Workbook_Open()

Dim i As Integer

i = Target.Row

If Range("AB" & i) = "Oui" And Range("AX" & i) <> "" Then Range("AJ" & i).Value = "Scolaire avec CMU"

ElseIf Range("AB" & i) = "Oui" And Range("AX" & i) = "" Then Range("AJ" & i).Value = "Avec CMU" '<------- ICI

ElseIf Range("AB" & i) = "Non" And Range("AX" & i) <> "" Then Range("AJ" & i).Value = "Scolaire sans CMU"

ElseIf Range("AB" & i) = "Non" And Range("AX" & i) = "" Then Range("AJ" & i).Value = "Sans réduction"

End If

Range("N" & i) = (Year(Now) - Year(Range("M" & i))) * 12 + Month(Now) - Month(Range("M" & i)) & " mois"

End Sub

Je ne comprends pas car j'ai le IF et le END IF

Bonsoir Theyoshi,

1) Dans Workbook_Open() tu ne peux pas utiliser Target.Row

2) Il faut écrire l'instruction ainsi

Private Sub Workbook_Open()
  Dim i As Integer
  'i = Target.Row
  i = Selection.Row
  If Range("AB" & i) = "Oui" And Range("AX" & i) <> "" Then
    Range("AJ" & i).Value = "Scolaire avec CMU"
  ElseIf Range("AB" & i) = "Oui" And Range("AX" & i) = "" Then Range("AJ" & i).Value = "Avec CMU" '< -------ICI
  ElseIf Range("AB" & i) = "Non" And Range("AX" & i) <> "" Then Range("AJ" & i).Value = "Scolaire sans CMU"
  ElseIf Range("AB" & i) = "Non" And Range("AX" & i) = "" Then Range("AJ" & i).Value = "Sans réduction"
  End If
  Range("N" & i) = (Year(Now) - Year(Range("M" & i))) * 12 + Month(Now) - Month(Range("M" & i)) & " mois"
End Sub

@+

Bonsoir

Toujours l'erreur Else sans If

Bonsoir,

Va à la ligne après tes ELSEIF comme ceci

Private Sub Workbook_Open()
  Dim i As Integer
  i = selection.Row
  If Range("AB" & i) = "Oui" And Range("AX" & i) <> "" Then
    Range("AJ" & i).Value = "Scolaire avec CMU"
  ElseIf Range("AB" & i) = "Oui" And Range("AX" & i) = "" Then 
    Range("AJ" & i).Value = "Avec CMU" '< -------ICI
  ElseIf Range("AB" & i) = "Non" And Range("AX" & i) <> "" Then 
    Range("AJ" & i).Value = "Scolaire sans CMU"
  ElseIf Range("AB" & i) = "Non" And Range("AX" & i) = "" Then 
    Range("AJ" & i).Value = "Sans réduction"
  End If
  Range("N" & i) = (Year(Now) - Year(Range("M" & i))) * 12 + Month(Now) - Month(Range("M" & i)) & " mois"
End Sub

Et là il va le prendre c'est juste un pb de syntaxe il me semble

Bonne soirée

Re,

Le problème de syntaxe est normalement qu'avec le 1er "IF... THEN"
Les "ElseIF" VBA sait géré, en tout cas chez moi sur 2016/O365

Sinon la syntaxe de PtitPanda est tout à fait correcte aussi et plus lisible

@+

Bonjour,

Pour le fun !?

Private Sub Workbook_Open()
Dim i As Long
    i = Selection.Row
    Select Case True
        Case Range("AB" & i).Value = "Oui" And Not IsEmpty(Range("AX" & i)):
            Range("AJ" & i).Value = "Scolaire avec CMU"
        Case Range("AB" & i).Value = "Oui" And IsEmpty(Range("AX" & i)):
            Range("AJ" & i).Value = "Avec CMU"
        Case Range("AB" & i).Value = "Non" And Not IsEmpty(Range("AX" & i)):
            Range("AJ" & i).Value = "Scolaire sans CMU"
        Case Range("AB" & i).Value = "Non" And IsEmpty(Range("AX" & i)):
            Range("AJ" & i).Value = "Sans réduction"
    End Select
    Range("N" & i) = (Year(Date) - Year(Range("M" & i))) * 12 + Month(Date) - Month(Range("M" & i)) & " mois"
End Sub
Rechercher des sujets similaires à "block else"