Selection d'un onglet en fonction de la date
Résolu
a51432
Messages postés
39
Statut
Membre
-
mamyvtte44420 -
mamyvtte44420 -
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
3 réponses
-
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
-
-
-
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 ! -
-
-
Salut pijaku,
On voit le pro!
Bonne journée
-
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!
-
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 -
-