Else sans If
Résolu
S9091
Messages postés
8
Statut
Membre
-
S9091 Messages postés 8 Statut Membre -
S9091 Messages postés 8 Statut Membre -
Bonjour ,
Pourrez vous me dire quelle est la faute dans ce code ??? lors de la compilation un message " else sans if" s'affiche au niveau de la première elseif . Voici le code :
merci d'avance :)
Pourrez vous me dire quelle est la faute dans ce code ??? lors de la compilation un message " else sans if" s'affiche au niveau de la première elseif . Voici le code :
DPass = CDate(Range("M2")) If Application.WorksheetFunction.NETWORKSDAYS(M2, M2 + Application.WorksheetFunction.VLookup(P2, Worksheet.Produits!("A2:C169"), 3, 0), 3, 0, Worksheet.JoursfériésTunisie!("B2:B13")) = Application.WorksheetFunction.VLookup(P2, Worksheet.Produits!("A2:C169"), 3, 0) Then SLA = CDate(M2 + Application.WorksheetFunction.VLookup(P2, Worksheet.Produits!("A2:C169"), 3, 0)) Else: SLA = CDate(M2 + 2 * Application.WorksheetFunction.VLookup(P2, Worksheet.Produits!("A2:C169"), 3, 0) - Application.WorksheetFunction.NETWORKSDAYS(M2, M2 + Application.WorksheetFunction.VLookup(P2, Worksheet.Produits!("A2:C169"), 3, 0), 3, 0, Worksheet.JoursfériésTunisie!("B2:B13"))) End If If Application.WorksheetFunction.VLookup(E2, Worksheet.Clients!("A1:AJ836"), 31, 0) = "YES" Then D = "lundi" ElseIf Application.WorksheetFunction.VLookup(E2, Worksheet.Clients!("A1:AJ836"), 32, 0) = "YES" Then D = "mardi" ElseIf Application.WorksheetFunction.VLookup(E2, Worksheet.Clients!("A1:AJ836"), 33, 0) = "YES" Then D = "mercredi" ElseIf Application.WorksheetFunction.VLookup(E2, Worksheet.Clients!("A1:AJ836"), 34, 0) = "YES" Then D = "jeudi" ElseIf Application.WorksheetFunction.VLookup(E2, Worksheet.Clients!("A1:AJ836"), 35, 0) = "YES" Then D = "vendredi" Else: D = "samedi" End If
merci d'avance :)
1 réponse
Bonjour,
Remplacez :
Par :
==> nouvelle ligne après chaque Then.
Remplacez :
If Application.WorksheetFunction.VLookup(E2, Worksheet.Clients!("A1:AJ836"), 31, 0) = "YES" Then D = "lundi" ElseIf Application.WorksheetFunction.VLookup(E2, Worksheet.Clients!("A1:AJ836"), 32, 0) = "YES" Then D = "mardi" ElseIf Application.WorksheetFunction.VLookup(E2, Worksheet.Clients!("A1:AJ836"), 33, 0) = "YES" Then D = "mercredi" ElseIf Application.WorksheetFunction.VLookup(E2, Worksheet.Clients!("A1:AJ836"), 34, 0) = "YES" Then D = "jeudi" ElseIf Application.WorksheetFunction.VLookup(E2, Worksheet.Clients!("A1:AJ836"), 35, 0) = "YES" Then D = "vendredi" Else: D = "samedi" End If
Par :
If Application.WorksheetFunction.VLookup(E2, Worksheet.Clients!("A1:AJ836"), 31, 0) = "YES" Then D = "lundi" ElseIf Application.WorksheetFunction.VLookup(E2, Worksheet.Clients!("A1:AJ836"), 32, 0) = "YES" Then D = "mardi" ElseIf Application.WorksheetFunction.VLookup(E2, Worksheet.Clients!("A1:AJ836"), 33, 0) = "YES" Then D = "mercredi" ElseIf Application.WorksheetFunction.VLookup(E2, Worksheet.Clients!("A1:AJ836"), 34, 0) = "YES" Then D = "jeudi" ElseIf Application.WorksheetFunction.VLookup(E2, Worksheet.Clients!("A1:AJ836"), 35, 0) = "YES" Then D = "vendredi" Else: D = "samedi" End If
==> nouvelle ligne après chaque Then.
Comme ici, il souhaite continuer le test par des ElseIf, il convient d'utiliser la syntaxe sur plusieurs lignes, soit :
avez vous une idée ???
Application.WorksheetFunction.NETWORKSDAYS(M2, M2 + Application.WorksheetFunction.VLookup(P2, Worksheet.Produits!("A2:C169"), 3, 0), 3, 0, Worksheet.JoursfériésTunisie!("B2:B13"))
Mais comme cette formule ne me dis rien, voici la marche à suivre :
1- saisir votre formule excel telle qu'elle serait normalement utilisée (sans VBA) dans une cellule,
2- sélectionnez cette cellule
3- Tapez Alt+F11 (==>VBA)
4- Tapez Ctrl+G (==> la fenêtre d'exécution apparaît)
5- dans la fenêtre d'exécution saisir :
? ActiveCell.Formula
6- valider par la touche Entrée
revenez ici copier/coller la formule obtenue dans la fenêtre d'exécution.
Sub date_promise()
'
' date_promise Macro
'
'
ActiveCell.FormulaR1C1 = _
"=IF(NETWORKDAYS(RC[-2],RC[-2]+VLOOKUP(RC[1],Produits!R2C1:R169C3,3,0),'Jours fériés Tunisie'!RC[-13]:R[11]C[-13])=VLOOKUP(RC[1],Produits!R2C1:R169C3,3,0),RC[-2]+VLOOKUP(RC[1],Produits!R2C1:R169C3,3,0),RC[-2]+2*VLOOKUP(RC[1],Produits!R2C1:R169C3,3,0)-NETWORKDAYS(RC[-2],RC[-2]+VLOOKUP(RC[1],Produits!R2C1:R169C3,3,0),'Jours fériés Tunisie'!RC[-13]:R[11]C[-13]))"
Range("O2").Select
Selection.AutoFill Destination:=Range("O2:O1997")
Range("O2:O1997").Select
End Sub