Selection d'un onglet en fonction de la date

Résolu/Fermé
a51432 Messages postés 37 Date d'inscription lundi 13 juillet 2015 Statut Membre Dernière intervention 20 octobre 2015 - 22 juil. 2015 à 11:26
 mamyvtte44420 - 11 sept. 2015 à 08:35
Bonjour,

Je dispose d'un classeur excel contenant un onglet pour chaque mois de l'année.
J'ai fait une macro qui copie des cellules provenant d'un autre classeur dans ce fichier. Seulement, j'aimerai que les données soient copiées automatiquement dans le bon onglet. Par exemple, si nous sommes au mois de juillet, je veux que les cellules copiées soient placées dans l'onglet juillet.
Si vous avez la solution, cela m'aiderait beaucoup ! Merci d'avance
A voir également:

3 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
22 juil. 2015 à 18:51
Bonjour,

A mettre dans le classeur des mois dans ThisWorkBook:

Option Explicit
Dim chaine As String
Dim monmois As String
Private Sub Workbook_Open()
[A1] = Now
 [A1].Value = Format([A1].Value, "dd mmmm yyyy")
chaine = [A1].Value
extractionMots
End Sub
'Extraire les données séparées par un espace dans une chaine de caractères
Sub extractionMots()
    Dim Tableau() As String
    Dim i As Integer
    
    'découpe la chaine en fonction des espaces " "
    'le résultat de la fonction Split est stocké dans un tableau
    Tableau = Split(chaine, " ")
    
    'boucle sur le tableau pour visualiser le résultat
    For i = 0 To UBound(Tableau)
        'Le résultat s'affiche dans la fenêtre d'execution de l'éditeur de macros
        Debug.Print Tableau(i)
    Next i
    monmois = Tableau(1)
    Sheets(monmois).Select
End Sub

0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
22 juil. 2015 à 21:30
On peut faire plus court:

Option Explicit
Dim monmois As String
Private Sub Workbook_Open()
[A1] = Now
 [A1].Value = Format([A1].Value, "mmmm")
 monmois = [A1].Value
    Sheets(monmois).Select
End Sub
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
23 juil. 2015 à 11:32
Encore plus court:

Option Explicit
Dim monmois As String
Private Sub Workbook_Open()
monmois = Now
 monmois = Format(monmois, "mmmm")
Sheets(monmois).Select
End Sub


Voilà
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
23 juil. 2015 à 11:42
Salut LePivert,

Ou encore plus court, sur ton exemple...
Option Explicit

Private Sub Workbook_Open()
Sheets(Format(Now, "mmmm")).Select
End Sub
0
a51432 Messages postés 37 Date d'inscription lundi 13 juillet 2015 Statut Membre Dernière intervention 20 octobre 2015 1
23 juil. 2015 à 14:17
Bonjour,

Le code fonctionne parfaitement ! Malheuresement je n'ai pas été précis dans ma description et m'en excuse...
Les noms des onglets ne sont pas le mois complet mais une série de 3, 4 ou 5 lettres comme suit : janv, fev, mars, avril, mai, juin, juil, août, sept, oct, nov, dec.
Je ne vois pas comment adapter le code et je ne peux pas renommer les onglets (ce qui serait sûrement plus simple). Si vous avez une solution... Merci d'avance !
0
mamyvtte44420
11 sept. 2015 à 08:35
Jevoudrai avoir accès a mes onglets
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
23 juil. 2015 à 11:57
Salut pijaku,

On voit le pro!

Bonne journée
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
23 juil. 2015 à 14:42
Si tu ne veux pas renommer tes onglets, je ne vois qu'une solution:

Option Explicit
Dim monmois As String
Private Sub Workbook_Open()
monmois = Now
 monmois = Format(monmois, "mmmm")
 If monmois = "juillet" Then
 monmois = "juil"
 End If
Sheets(monmois).Select
End Sub


je te laisse faire le reste

A moins que pijaku est la solution miracle!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 23/07/2015 à 16:39
A moins que pijaku est la solution miracle!
Hé hé!
La voici :
Dim MesMois As String, Feuille As String, MoisEnCours As Integer
MesMois = "janv;fev;mars;avril;mai;juin;juil;août;sept;oct;nov;dec"
MoisEnCours = Month(Date)
Feuille = Split(MesMois, ";")(MoisEnCours - 2)
Sheets(Feuille).Select


Ou, encore mieux, en déclarant MesMois en Constante :

Option Explicit

Const MesMois As String = "janv;fev;mars;avril;mai;juin;juil;août;sept;oct;nov;dec"

Private Sub Workbook_Open()
Dim Feuille As String, MoisEnCours As Integer

    MoisEnCours = Month(Date)
    Feuille = Split(MesMois, ";")(MoisEnCours - 2)
    Sheets(Feuille).Select
End Sub


Ce qui, après raccourci, s'écrit en une seule ligne de code (si on excepte la constante) :

Option Explicit

Const MesMois As String = "janv;fev;mars;avril;mai;juin;juil;août;sept;oct;nov;dec"

Private Sub Workbook_Open()
    Sheets(CStr(Split(MesMois, ";")(Month(Date) - 2))).Select
End Sub


EDIT : Attention!!! J'm'ai gouré!!
Ma date système est déréglée... Chez moi on est déjà le 15/08... Donc utilisez ceci :

Option Explicit

Const MesMois As String = "janv;fev;mars;avril;mai;juin;juil;août;sept;oct;nov;dec"

Private Sub Workbook_Open()
    Sheets(CStr(Split(MesMois, ";")(Month(Date) - 1))).Select
End Sub

Il me semblait bien que le -2 n'était pas normal..... Pfff!
Bonne fin de journée
0
a51432 Messages postés 37 Date d'inscription lundi 13 juillet 2015 Statut Membre Dernière intervention 20 octobre 2015 1
23 juil. 2015 à 16:26
Ca devrait résoudre mon problème, je met le post en résoulu après vérification.
Merci beaucoup !
0