Problème finalisation macro VBA
Bonjour,
Je viens de créer la macro ci-dessous mais j'ai une erreur de compilation Bloc If/End if.
Impossible de comprendre d'où vient le problème. Je suis sûr que c'est un petit hic mais impossible de l'identifier. Pouvez-vous m'aider ?
Bonjour,
Tu as utilisé : IF et ElseIF il te faut donc 2 end IF à la fin.
Bonjour,
Avc le fichier !...
Cdlt.
Un grand merci Jean-Eric.
Ca fonctionne.
J'ai deux petits points en suspens.
1. J'aimerais que la macro propose 3 autres menus dans la cellule E7 si le nombre de convives est inférieurs à 25. J'ai bien écris le code avec les Else If mais elle ne le prend pas en compte. Auriez-vous une idée de la raison ?
2. J'ai voulu modifié les cellules dans lesquelles le choix des plats apparaissaient. Au lieu des F15:H15, j'ai tout passé à B15:D15 mais depuis... plus rien ne s'affiche :-(
Je vous joins le fichier.
Un grand merci encore pour votre aide.
Bonjour,
Votre macro fonctionne correctement. Le problème est que vous ne mettez pas à jour la liste des repas en fonction du nombre de convives. Pour remédier à cela je vous propose le code ci-après :
Je vous ai aussi un peu simplifié la partie de l’intersection, ca permet d’eviter d’avoir trop de conditions encastrées les unes dans les autres.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim nbConvives As Long
Dim menuChoisi As String
If Intersect(Target, Range("D7:E7")) Is Nothing Then Exit Sub
' evite de relancer la macro lors du clearcontents
Application.EnableEvents = False
nbConvives = Range("D7").Value
menuChoisi = Range("E7").Value
Range("B15:D15").ClearContents
Range("B15:D15").Validation.Delete
If Target.Address(False, False) = "D7" Then
' modification de la liste des menus possibles
Range("E7").Validation.Delete
Select Case nbConvives
Case Is > 25
CreateValidationList Range("E7"), "Menu Marie-Antoinette,Menu Louis XIV,Menu des Rois", "Menu"
Case Else
CreateValidationList Range("E7"), "Menu � 29�,Menu � 49�,Menu � 75�", "Menu"
End Select
End If
If nbConvives > 25 Then
Select Case menuChoisi
Case "Menu Marie-Antoinette"
CreateValidationList Range("B15"), "Authentique Terrine de Campagne,Poireau Vinaigrette traditionnel,Velout� Potimarron", "Entr�e"
CreateValidationList Range("C15"), "Boeuf Bourguignon fa�on Mamie Monique,Filet de Lieu Noir et L�gumes du march�,Linguine Tomate & Basilic", "Plat"
CreateValidationList Range("D15"), "Mousse au Chocolat et fleur de sel,Panacotta aux agrumes,Crumble aux pommes et cr�me vanille", "Dessert"
Case "Menu Louis XIV"
CreateValidationList Range("B15"), "Saumon Gravelax et Cr�me Aneth,Flan au comt� 18 mois & Noix,Oeuf Poch� et cr�meux de Champignons", "Entr�e"
CreateValidationList Range("C15"), "Supr�me de volaille et pur�e maison,Filet de Daurade et L�gumes du march�,Coquillette � la cr�me de truffe", "Plat"
CreateValidationList Range("D15"), "Fondant au chocolat et cr�me anglaise,Tiramisu � la Cl�mentine,Ananas r�ti & Mousse de Fruits de la passion", "Dessert"
Case "Menu des Rois"
CreateValidationList Range("B15"), "C�vich� de Daurade et fruit de la passion,Op�ra de Foie Gras,P�el�e de gambas au lait de coco & curry", "Entr�e"
CreateValidationList Range("C15"), "Confit de canard et gratin dauphinois,Filet de St Pierre et pur�e de C�leri,Risotto � la cr�me de truffe", "Plat"
CreateValidationList Range("D15"), "Paris-Brest du Chapeau,Fondant � la Pistache,Poire poch�e au chocolat", "Dessert"
End Select
ElseIf nbConvives > 0 And nbConvives <= 25 Then
Select Case menuChoisi
Case "Menu � 29�"
CreateValidationList Range("B15"), "Entr�e du jour & Plat du jour & 1/4 vins,Plat du jour & Dessert du jour & 1/4 vins,Entr�e du jour & Plat du jour & Dessert du jour", "Formule"
Range("C15:D15").ClearContents 'Effacer les autres colonnes
Case "Menu � 49�"
CreateValidationList Range("B15"), "Oeuf Bio poch� et cr�meaux de foie Gras,Marbr� de saumon gravelax et sa chantilly de wasabi", "Entr�e (49�)"
CreateValidationList Range("C15"), "Cordon bleu du Chapeau et pur�e Grand chef,P�che du jour et L�gumes du march�", "Plat (49�)"
CreateValidationList Range("D15"), "Mousse au chocolat maison et noisettes torr�fi�es,Cr�me brul�e", "Dessert (49�)"
Case "Menu � 75�"
CreateValidationList Range("B15"), "Op�ra de foie gras,C�vich� de daurade aux fruits de la passion,Po�l�e de Gambas au lait de coco et curry", "Entr�e (75�)"
CreateValidationList Range("C15"), "Confit de canard et gratin dauphinois,Filet de St Pierre et pur�e de c�leri,Risotto � la cr�me de truffe", "Plat (75�)"
CreateValidationList Range("D15"), "Paris-Brest du Chapeau,Fondant pistache,Poire poch�e au chocolat", "Dessert (75�)"
End Select
End If
Application.EnableEvents = True
End Sub
Private Sub CreateValidationList(rng As Range, listValues As String, inputTitle As String)
With rng.Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=listValues
.IgnoreBlank = True
.InCellDropdown = True
.inputTitle = inputTitle
.ErrorTitle = "Erreur"
.ErrorMessage = "Veuillez choisir une option dans la liste."
.ShowInput = True
.ShowError = True
End With
rng.Value = "Choisir " & inputTitle
End Sub