Macro récupérant l'année d'une date et bascule vers l'onglet de même nom...

Kronos

XLDnaute Nouveau
Bonjour,

je suis un grand débutant en macros Excel 2007....et malgré mes recherches sur différents forums, je sèche sur un problème sans doute très simple.

En cellule J1, j'ai une date au format mm/dd/yyyy par exemple 10/28/2009. Cette date peut changer selon ce que rentre l'utilisateur.

Je voudrais avec une macro pouvoir récupérer l'année dans une variable ( 2009 ) pour ensuite ouvrir automatiquement l'onglet de la feuille excel qui s'intitule 2009.
Si par exemple on tape en J1 07/24/2010 , la macro doit pouvoir activer l'onglet "2010".

Voilà où j'en suis dans cette macro sans pouvoir aller plus loin sans votre aide:

J'ai testé ça dans le code mais sans succès...:(

Sheets(a).Activate


Code:
Sub Test()
Dim Dte As Date
Dim a As Integer
Dim Date1 As Date


 
Dte = DateValue(Range("J1"))
j = Day(Dte)
m = Month(Dte)
a = Year(Dte)
 
MsgBox " - année: " & a

If a = 2009 Then

Sheets("2009").Activate

End If

End Sub

Merci pour vos conseils...
 

Pierrot93

XLDnaute Barbatruc
Re : Macro récupérant l'année d'une date et bascule vers l'onglet de même nom...

Bonjour,

regarde ceci, suppose la date dans la cellule A1 de la feuille active, sinon préciser le nom de la feuille :
Code:
Dim i As Integer
i = Year(Range("A1").Value)
Sheets(i).Activate

on pourrait également coder directement :
Code:
Sheets(Year(Range("A1").Value)).Activate

Attention, renverra une erreur si A1 ne contient pas une date.

bon après midi
@+
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Macro récupérant l'année d'une date et bascule vers l'onglet de même nom...

Bonjour Kronos

Et bienvenue sur XLD

Code:
Sub Test()
Dim Dte As Date
Dim a As Variant
Dim Date1 As Date
Dte = DateValue(Range("J1"))
j = Day(Dte)
m = Month(Dte)
a = CStr(Year(Dte))
Sheets(a).Activate
End Sub

Edit Salut ami Pierrot :)
 
Dernière édition:

Kronos

XLDnaute Nouveau
Re : Macro récupérant l'année d'une date et bascule vers l'onglet de même nom...

Merci pour vos réponses rapides !!!

Le 2ieme code de Pierrot qui me semble être le plus simple ne fonctionne pas: "Erreur d’exécution 9 : L'indice n'appartient pas à la sélection"

Le code de Pierrejean fonctionne parfaitement.
 

Kronos

XLDnaute Nouveau
Re : Macro récupérant l'année d'une date et bascule vers l'onglet de même nom...

Est-il possible de faire la même chose que le code de Pierrejean sur 1 seule ligne de code ?? Celui de Pierrot me renvoie toujours une erreur...

Merci
 

Pierrot93

XLDnaute Barbatruc
Re : Macro récupérant l'année d'une date et bascule vers l'onglet de même nom...

Re, bonjour PierreJean:)

Aarf, j'ai oublié la conversion... ca m'apprendra à ne pas tester...
Code:
Sheets(CStr(Year(Range("A1").Value))).Activate
 

tototiti2008

XLDnaute Barbatruc
Re : Macro récupérant l'année d'une date et bascule vers l'onglet de même nom...

Bonjour Kronos, Bonjour Pierrot, Bonjour PierreJean :)

Le 2ieme code de Pierrot qui me semble être le plus simple ne fonctionne pas
Il ne doit manquer qu'un CStr pour qu'il fonctionne

Code:
Sheets(CStr(Year(Range("A1").Value))).Activate

Edit : Bing, désolé...
 

Kronos

XLDnaute Nouveau
Re : Macro récupérant l'année d'une date et bascule vers l'onglet de même nom...

Merci pour vos réponses super rapides !....

mais j'ai encore une erreur...

en J1, l'utilisateur tape une date 05/20/2009 par exemple.
En L1 je calcule J1+365 afin d'afficher en L1 la date de J1 + 1 an exactement.

Le code fonctionne pour aller à l'onglet de la date J1, mais pas pour aller à l'onglet de la date L1 qui résulte d'un calcul...>> j'ai une erreur...j'aurais peut-être dû expliquer ce détail au tout début ?...:(

en tout cas, merci pour vos conseils qui me font gagner un temps précieux.:)

voici le code:
Code:
Sub Test3()

Sheets(CStr(Year(Range("J1").Value))).Activate
MsgBox "F2"
Sheets(CStr(Year(Range("L1").Value))).Activate
MsgBox "F3"

End Sub
 

pierrejean

XLDnaute Barbatruc
Re : Macro récupérant l'année d'une date et bascule vers l'onglet de même nom...

Re

Code:
Sub Test3
Set sh = ActiveSheet
Sheets(CStr(Year(sh.Range("J1").Value))).Activate
MsgBox "F2"
Sheets(CStr(Year(sh.Range("L1").Value))).Activate
MsgBox "F3"
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Macro récupérant l'année d'une date et bascule vers l'onglet de même nom...

Re,

pas de problème chez moi, attention va chercher la valeur de L1 sur la feuille active...
Edition : Aarf, un peu en retard moi...
 
Dernière édition:

Kronos

XLDnaute Nouveau
Re : Macro récupérant l'année d'une date et bascule vers l'onglet de même nom...

C'est impeccable... ça fonctionne.

Qui pourrait m'expliquer pourquoi le simple rajout de cette ligne " Set sh = ActiveSheet" fait que le code fonctionne ??

Encore merci à tous...

Re

Code:
Sub Test3
Set sh = ActiveSheet
Sheets(CStr(Year(sh.Range("J1").Value))).Activate
MsgBox "F2"
Sheets(CStr(Year(sh.Range("L1").Value))).Activate
MsgBox "F3"
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Macro récupérant l'année d'une date et bascule vers l'onglet de même nom...

Re,

sans précision de la feuille, la valeur recherchée va lêtre sur la feuille active.... et comme tu change de feuille entre temps... PierreJean:) défini tout de suite la feuille sur laquelle sera pris la donnée...
 

Kronos

XLDnaute Nouveau
Re : Macro récupérant l'année d'une date et bascule vers l'onglet de même nom...

Et si à la place de MsgBox "F2" j'ai de nombreuses procédures intermédiaires, l'activation de la bonne feuille via la date L1 sera toujours effective ??

Merci
 

Pierrot93

XLDnaute Barbatruc
Re : Macro récupérant l'année d'une date et bascule vers l'onglet de même nom...

Re,

précise le nom de la feuille concernée sur laquelle se troubve L1, nom à adapter... :
Code:
Sheets(CStr(Year(Sheets("NomFeuille").Range("L1").Value))).Activate

si feuille sur autre classeur, il faudrait également le préciser..;
 

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 731
Membres
110 553
dernier inscrit
loic55