Aide pour Macro (VBA)

Bastienn

XLDnaute Nouveau
Bonjour à tous,
je suis actuellement en stage en contrôle de gestion et chargé de renouvellement des tableaux de bord à l'aide de macros Excel.

Cependant, j'essaye de créer une liste déroulante (entre 1 et 12), chiffre qui déclenchera automatiquement la macro que j'ai décidé d'y associer (ici, Janvier, Février...), sans succès jusqu'ici.

Voici ma macro, mais quand j'essaye de l'enclencher, j'ai sans cesse le message suivant "ERREUR DE COMPILATION, END SUB ATTENDU" malgré mes différentes modification.


Sub MOIS()
' MOIS Macro
Private Sub Worksheet_Change (ByVal Target As Range)
If Range ("S8").Value = "1" Then Call Janvier
If Range ("S8").Value = "2" Then Call Février
If Range ("S8").Value = "3" Then Call Mars
If Range ("S8").Value = "4" Then Call Avril
If Range ("S8").Value = "5" Then Call Mai
If Range ("S8").Value = "6" Then Call Juin
If Range ("S8").Value = "7" Then Call Juillet
If Range ("S8").Value = "8" Then Call Août
If Range ("S8").Value = "9" Then Call Septembre
If Range ("S8").Value = "10" Then Call Octobre
If Range ("S8").Value = "11" Then Call Novembre
If Range ("S8").Value = "12" Then Call Décembre
End Sub


Voilà, j'attends vivement votre aide ! ;)
 

rhodan44

XLDnaute Nouveau
Re : Aide pour Macro (VBA)

Bonsoir,
je n'es pas une très grande vue sur votre projet, mais je pense pour que la macro fonctionne je l'aurai plutot mis dans le ruban ou menu pour activer l'action "macro". si les calculs ou les actions ne sont pas important il faut mieux résoudre l'action par des formules...
Bien amicalement
 

Staple1600

XLDnaute Barbatruc
Re : Aide pour Macro (VBA)

Bonsoir le fil

Ca devrait mieux fonctionner ainsi

Code:
Sub MOIS() 'ici à mettre dans un module
' MOIS Macro
If Range ("S8").Value = "1" Then Call Janvier
If Range ("S8").Value = "2" Then Call Février
If Range ("S8").Value = "3" Then Call Mars
If Range ("S8").Value = "4" Then Call Avril
If Range ("S8").Value = "5" Then Call Mai
If Range ("S8").Value = "6" Then Call Juin
If Range ("S8").Value = "7" Then Call Juillet
If Range ("S8").Value = "8" Then Call Août
If Range ("S8").Value = "9" Then Call Septembre
If Range ("S8").Value = "10" Then Call Octobre
If Range ("S8").Value = "11" Then Call Novembre
If Range ("S8").Value = "12" Then Call Décembre
End Sub
... ou comme cela

Code:
Private Sub Worksheet_Change (ByVal Target As Range) ' à mettre dans le code de la feuille
If Range ("S8").Value = "1" Then Call Janvier
If Range ("S8").Value = "2" Then Call Février
If Range ("S8").Value = "3" Then Call Mars
If Range ("S8").Value = "4" Then Call Avril
If Range ("S8").Value = "5" Then Call Mai
If Range ("S8").Value = "6" Then Call Juin
If Range ("S8").Value = "7" Then Call Juillet
If Range ("S8").Value = "8" Then Call Août
If Range ("S8").Value = "9" Then Call Septembre
If Range ("S8").Value = "10" Then Call Octobre
If Range ("S8").Value = "11" Then Call Novembre
If Range ("S8").Value = "12" Then Call Décembre
End Sub
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : Aide pour Macro (VBA)

Bonjour,

Le sub mois ne sert à rien,

Et ce code qui est une gestion évenementielle ne fonctionne que dans un code feuil,

Si ton menu est en feuil1 , alors met le code en feuil1, et pas dans un module

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("S8").Value = "1" Then Call Janvier
If Range("S8").Value = "2" Then Call Février
If Range("S8").Value = "3" Then Call Mars
If Range("S8").Value = "4" Then Call Avril
If Range("S8").Value = "5" Then Call Mai
If Range("S8").Value = "6" Then Call Juin
If Range("S8").Value = "7" Then Call Juillet
If Range("S8").Value = "8" Then Call Août
If Range("S8").Value = "9" Then Call Septembre
If Range("S8").Value = "10" Then Call Octobre
If Range("S8").Value = "11" Then Call Novembre
If Range("S8").Value = "12" Then Call Décembre
End Sub
 

Pièces jointes

  • Mois.xls
    28 KB · Affichages: 42
  • Mois.xls
    28 KB · Affichages: 49
  • Mois.xls
    28 KB · Affichages: 49

Staple1600

XLDnaute Barbatruc
Re : Aide pour Macro (VBA)

RE


Relis bien mon message (tu verras que les codes ne sont pas un simple copier/coller)

Tu verras que j'ai supprimé ce que Chris et rhodan44 t'ont fait remarqué.
(A savoir l'imbrication de deux procédures en une

Pour chaque Sub ...() il doit y avoir un End Sud
 

Staple1600

XLDnaute Barbatruc
Re : Aide pour Macro (VBA)

Re


Je me suis amusé avec ta question, alors je poste au cas ou

Dans le code de la Feuille
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$S$8" Then
If Target.Value > 1 And Target.Value < 13 Then
Application.Run MonthName(Target)
End If
End If
End Sub

Dans un module standard, tes macros "mensuelles"
avec le nom des mois correctement orthographiés
ex:
Code:
Public Sub janvier()
MsgBox "janvier"
End Sub
Code:
Public Sub février()
Msgbox "février"
End Sub
etc pour le reste des mois

J'ai testé cela fonctionne.
 

Discussions similaires

Réponses
5
Affichages
170
Réponses
1
Affichages
164