Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion ozerte
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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...
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.
 
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

Dernière édition:
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.
 
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
 
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

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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
582
Réponses
12
Affichages
499
Réponses
9
Affichages
893
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…