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
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
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:
- Selection d'un onglet en fonction de la date
- Fonction si et - Guide
- Rouvrir un onglet fermé - Guide
- Ouvrir un fichier .dat - Guide
- L'indice n'appartient pas à la sélection vba ✓ - Forum Programmation
3 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
22 juil. 2015 à 18:51
22 juil. 2015 à 18:51
Bonjour,
A mettre dans le classeur des mois dans ThisWorkBook:
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
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
23 juil. 2015 à 11:57
23 juil. 2015 à 11:57
Salut pijaku,
On voit le pro!
Bonne journée
On voit le pro!
Bonne journée
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
23 juil. 2015 à 14:42
23 juil. 2015 à 14:42
Si tu ne veux pas renommer tes onglets, je ne vois qu'une solution:
je te laisse faire le reste
A moins que pijaku est la solution miracle!
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!
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
Modifié par pijaku le 23/07/2015 à 16:39
Modifié par pijaku le 23/07/2015 à 16:39
A moins que pijaku est la solution miracle!
Hé hé!
La voici :
Ou, encore mieux, en déclarant MesMois en Constante :
Ce qui, après raccourci, s'écrit en une seule ligne de code (si on excepte la constante) :
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 :
Il me semblait bien que le -2 n'était pas normal..... Pfff!
Bonne fin de journée
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
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
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 !
Merci beaucoup !
22 juil. 2015 à 21:30
23 juil. 2015 à 11:32
Voilà
23 juil. 2015 à 11:42
Ou encore plus court, sur ton exemple...
23 juil. 2015 à 14:17
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 !
11 sept. 2015 à 08:35