XL 2010 activer une feuille selon la valeur d'une cellule

ozerte

XLDnaute Nouveau
Bonjour,
j'ai créer un tableur de gestion personnel avec 12 feuilles chacunes correspondant à un mois de l'année dans chaque feuilles la cellule X4 compte les semaines de 1 à 5 dans la feuille du mois en cour, elle n'affiche rien sur les autre mois. Je voudrai que lorsque j'ouvre mon classeur la feuille du mois en cour s'ouvre automatiquement si la cellule affiche un chiffre sinon elle ouvre le mois suivant et ainsi de suite. J'ai essayer ce code mais ça na marche pas :
VB:
Private Sub Workbook_Open()
    If Worksheets("Janvier").Range("X4").Value >= 1 Then Sheets("Janvier").Activate
    If Worksheets("Février").Range("X4").Value >= 1 Then Sheets("Février").Activate
    If Worksheets("Mars").Range("X4").Value >= 1 Then Sheets("Mars").Activate
    If Worksheets("Avril").Range("X4").Value >= 1 Then Sheets("Avril").Activate
    If Worksheets("Mai").Range("X4").Value >= 1 Then Sheets("Mai").Activate
    If Worksheets("Juin").Range("X4").Value >= 1 Then Sheets("Juin").Activate
    If Worksheets("Juillet").Range("X4").Value >= 1 Then Sheets("Juillet").Activate
    If Worksheets("Aout").Range("X4").Value >= 1 Then Sheets("Aout").Activate
    If Worksheets("Septembre").Range("X4").Value >= 1 Then Sheets("Septembre").Activate
    If Worksheets("Octobre").Range("X4").Value >= 1 Then Sheets("Octobre").Activate
    If Worksheets("Novembre").Range("X4").Value >= 1 Then Sheets("Novembre").Activate
    If Worksheets("Décembre").Range("X4").Value >= 1 Then Sheets("Décembre").Activate
    
End Sub
 
Solution
Bonjour,
J'ai essayé de comprendre votre fichier, et votre macro du post #1;
Ci joint un essai.
VB:
Private Sub Workbook_Open()
    Dim ListeMois, NoMois%, Ajoute%
    ' Liste des mois, le premier est "rien" car l'array commence en 0, Décembre est doublé car on reste sur ce mois si on est en décembre
    ListeMois = Array("Rien", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septmbre", "Octobre", "Novembre", "Décembre", "Décembre")
    NoMois = Month(Now)                                     ' Calcule le numéro du mois courant
    On Error Resume Next
    If Sheets(ListeMois(NoMois)).[X4] >= 1 Then Ajoute = 0 Else Ajoute = 1  ' Ajoute 1 si X4>=1
    If Sheets(ListeMois(NoMois)).[X4] = "" Then Ajoute = 1...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Ozerte et bienvenu sur XLD,
Votre truc ne peut pas marcher car jamais on ne se pose la question de quel mois on est.
VB:
Private Sub Workbook_Open()
    Dim ListeMois, NoMois%, Ajoute%
    ' Liste des mois, le premier est "rien" car l'array commence en 0, Décembre est doublé car on reste sur ce mois si on est en décembre
    ListeMois = Array("Rien", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septmbre", "Octobre", "Novembre", "Décembre", "Décembre")
    NoMois = Month(Now)                                     ' Calcule le numéro du mois courant
    If Sheets(ListeMois(NoMois)).[X4] >= 1 Then Ajoute = 1  ' Ajoute 1 si X4>=1
    Sheets(ListeMois(NoMois + Ajoute)).Activate             ' Active mois courant ou mois prochain suivant valeur de Ajoute
End Sub
Pas testé. Si ça ne colle pas, donner nous un petit fichier test pour fignoler.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,

1-Pourquoi avoir modifier ma macro ?
Dans Sheets(ListeMois(NoMois + Ajoute)), Ajoute à son importance puisque c'est lui qui décide si on reste sur le mois en cours ou on passe au mois suivant.

2- Décembre X4 est en erreur, c'est pour ça que ça coince.
En PJ on reste sur le mois courant si X4 est en erreur avec : On Error Resume Next
Ensuite reste à comprendre et supprimer l'erreur dans X4, peut être avec un SIERREUR.

ADD : Dans votre feuille Liste, cellule L5 vous avez la formule "=JOURSEM(B5;15)", à quoi correspond le 15 ?
Etes vous sur que ce paramètre peut valoir 15.
 

Pièces jointes

  • Budget.xlsm
    160.3 KB · Affichages: 13
Dernière édition:

ozerte

XLDnaute Nouveau
Donc ça marche ? et en Liste L5 vous n'avez pas d'erreur ?
( car sur XL2007 cela donne une erreur, le paramètre ne peut valoir que 1,2 ou 3 )
Donc c'est résolu ?
oui ça c'est bon, mais votre formule ne fonctionne pas comme je voudrai car si je régle mon pc sur le 1er décembre, sur mon classeur on est toujour dans la derniére semaine de novembre or la ça m'ouvre décembre idem pour d'autre mois qui se chevauche.
 

ozerte

XLDnaute Nouveau
j'ai rajouter comme ça mais ça ne fonctionne pas :
VB:
Private Sub Workbook_Open()
    Dim ListeMois, NoMois%, Ajoute%
    ' Liste des mois, le premier est "rien" car l'array commence en 0, Décembre est doublé car on reste sur ce mois si on est en décembre
    ListeMois = Array("Rien", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septmbre", "Octobre", "Novembre", "Décembre", "Décembre")
    NoMois = Month(Now)                                     ' Calcule le numéro du mois courant
    If Sheets(ListeMois(NoMois)).[X4] = "" Then Ajoute = 1  ' Ajoute 1 si X4>=1
    Sheets(ListeMois(NoMois + Ajoute)).Activate             ' Active mois courant ou mois prochain suivant valeur de Ajoute
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
J'ai essayé de comprendre votre fichier, et votre macro du post #1;
Ci joint un essai.
VB:
Private Sub Workbook_Open()
    Dim ListeMois, NoMois%, Ajoute%
    ' Liste des mois, le premier est "rien" car l'array commence en 0, Décembre est doublé car on reste sur ce mois si on est en décembre
    ListeMois = Array("Rien", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septmbre", "Octobre", "Novembre", "Décembre", "Décembre")
    NoMois = Month(Now)                                     ' Calcule le numéro du mois courant
    On Error Resume Next
    If Sheets(ListeMois(NoMois)).[X4] >= 1 Then Ajoute = 0 Else Ajoute = 1  ' Ajoute 1 si X4>=1
    If Sheets(ListeMois(NoMois)).[X4] = "" Then Ajoute = 1                  ' Ajoute 1 si X4 est vide
    Sheets(ListeMois(NoMois + Ajoute)).Activate           ' Active mois courant ou mois prochain suivant valeur de Ajoute
End Sub
A l'ouverture fichier on regarde X4 du mois en cours.
Si cette valeur est supérieure ou égale à 1 on reste sur cette feuille.
Si cette valeur est inférieure à 1 ou vide alors on passe au mois suivant.
Sauf en décembre où dans tous les cas on reste sur cette feuille.
 

Pièces jointes

  • Budget (4).xlsm
    160 KB · Affichages: 3

ozerte

XLDnaute Nouveau
Bonjour,
J'ai essayé de comprendre votre fichier, et votre macro du post #1;
Ci joint un essai.
VB:
Private Sub Workbook_Open()
    Dim ListeMois, NoMois%, Ajoute%
    ' Liste des mois, le premier est "rien" car l'array commence en 0, Décembre est doublé car on reste sur ce mois si on est en décembre
    ListeMois = Array("Rien", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septmbre", "Octobre", "Novembre", "Décembre", "Décembre")
    NoMois = Month(Now)                                     ' Calcule le numéro du mois courant
    On Error Resume Next
    If Sheets(ListeMois(NoMois)).[X4] >= 1 Then Ajoute = 0 Else Ajoute = 1  ' Ajoute 1 si X4>=1
    If Sheets(ListeMois(NoMois)).[X4] = "" Then Ajoute = 1                  ' Ajoute 1 si X4 est vide
    Sheets(ListeMois(NoMois + Ajoute)).Activate           ' Active mois courant ou mois prochain suivant valeur de Ajoute
End Sub
A l'ouverture fichier on regarde X4 du mois en cours.
Si cette valeur est supérieure ou égale à 1 on reste sur cette feuille.
Si cette valeur est inférieure à 1 ou vide alors on passe au mois suivant.
Sauf en décembre où dans tous les cas on reste sur cette feuille.
Bonjour,
je vient d'essayer le problême si je regle mon pc sur le 1er Février il voit que X4 est vide alors il passe en Mars alors que le 1er Février on est toujour sur la dernière semaine de Janvier, il ne serais pas préférable de ne pas considerer les feuille comme des mois mais comme de simple feuille et créer une variable qui lui dirait d'afficher celle ou X4 affiche quelque chose.
 

Discussions similaires

Réponses
2
Affichages
289

Statistiques des forums

Discussions
299 850
Messages
1 979 570
Membres
206 781
dernier inscrit
BERTÉ