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
A voir également:
- Selection d'un onglet en fonction de la date
- Fonction si et - Guide
- Rouvrir onglet fermé chrome - Guide
- Comment ouvrir un fichier dat - Guide
- Ajoutez à la liste de contacts ana le goff, inscrite le 27 novembre 2015, dans la catégorie i. puis triez les contacts en les classant : par ordre alphabétique de leur nom de famille (critère principal), puis par date du plus récent au plus ancien (critère secondaire). quel mot apparaît à la verticale dans la colonne "catégorie" entre les lignes 200 et 209 (en-tête compris) ? ✓ - Forum Word
- Airpods 3 date de sortie - Guide
3 réponses
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
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!
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
Voilà
Ou encore plus court, sur ton exemple...
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 !