Automatiser une macro vba excel

Fermé
philieb - 21 mars 2010 à 11:45
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 22 mars 2010 à 11:47
depuis la semaine dernière j'ai beaucoup travaillé à partir de ta réponse dont je te remercie beaucoup.
J'étais novice, j'ai un peu progressé pour arriver à cette procédure qui ne semble pas avoir de bug mais qui ne fonctionne pas, où est l'erreur ? je l'ai mise dans this workbook en vain!
Si tu comprends mon objectif merci de tes conseils.
"plus VBA tu moulineras, plus intelligent tu seras"

Option Explicit
'Classeur commande repas.xls
'au changement de feuille active vers la feuille "CARTE"
'la macro "MENU" s'exécute automatiquement dans la cellule nommée "ENTREE"


Private Sub ActiveSheet_Change(ByVal Target As Range)
If Target.Address = Worksheets("CARTE").Range("ENTREE") Then
Range("ENTREE") = Application.Run("commande repas.xls!MENU")
End If
End Sub
Sub MENU()
'
' MENU Macro
'La cellule "ENTREE" = le contenu des cellules L5c3,L10c3,L15c3,L20c3 de la feuille "MENU"
'selon que le contenu de la cellule "REGIME" = à la cellule L3C3 de la feuille "PLAN"
'(qui contient un élément de la liste déroulante = cellules L3c3, L4c3,L5c3, L6c3 de la feuille "Légende")


'et si la cellule L7c3 de la feuille "CARTE" = Potage ( ou L3c5 de la feuille "Plan", liste déroulante de la feuille"légende")
'alors la police du texte de la cellule L7c2 de la feuille "CARTE" = blanc ou noir si faux

If Cells("REGIME") = Worksheets("Légende").Cells(3, 3) Then
Cells("ENTREE") = Worksheets("MENU").Cells(5, 3)
End If
If Cells("REGIME") = Worksheets("Légende").Cells(4, 3) Then
Cells("ENTREE") = Worksheets("MENU").Cells(10, 3)
End If
If Cells("REGIME") = Worksheets("Légende").Cells(5, 3) Then
Cells("ENTREE") = Worksheets("MENU").Cells(15, 3)
End If
If Cells("REGIME") = Worksheets("Légende").Cells(6, 3) Then
Cells("ENTREE") = Worksheets("MENU").Cells(20, 3)
End If
If Worksheets("CARTE").Cells(7, 3) = Worksheets("Légende").Cells(12, 3) Then
Worksheets("CARTE").Cells("ENTREE").Font.ColorIndex = 2
ElseIf Worksheets("CARTE").Cells(7, 3) = False Then
Worksheets("CARTE").Cells("ENTREE").Font.ColorIndex = 1
End If
End Sub
A voir également:

1 réponse

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 22/03/2010 à 11:49
Bonjour,

Je trouve plusieurs anomalies dans les syntaxes de ces macros.

1/ Si l'objectif est de lancer la macro MENU lorsqu'il y a changement de feuille active vers la feuille CARTE alors la macro a placer dans ThisWorkbook est la suivante :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
    If Sh.Name = "CARTE" Then 
        Call MENU 
    End If 
End Sub


2/ Dans la macro MENU je suppose que ENTREE et REGIME sont des plages nommées (avec insertion/nom/définir) donc la syntaxe Cells("REGIME") n'est pas correcte il faut écrire Range ("REGIME") idem pour ENTREE

Voila peut-être deux choses à essayer.

A+
Cordialement,
0