IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Renommer Onglet par mois


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2018
    Messages : 15
    Points : 3
    Points
    3
    Par défaut Renommer Onglet par mois
    Bonjour, j'utilise actuellement une macro me permettant de copier un onglet une fois par semaine à l'identique de l'original, mais qui me le nomme "original_1"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function NumSem(LaDate As Date) As Integer
     
        NumSem = Int((LaDate - DateSerial(Year(LaDate - Weekday(LaDate - 1) + 4), 1, 1) _
                 + Weekday(DateSerial(Year(LaDate - Weekday(LaDate - 1) + 4), 1, 1)) + 5) / 7)
     
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Option Explicit
    Sub CopycartouchesSheetRename()
     
        Dim Fe As Worksheet
        Dim Nom As String
        Dim I As Integer
        Dim Max As Integer
     
        If MsgBox("Etes vous certain(e) de vouloir dupliquer cette feuille ?", vbYesNo + vbInformation, _
            "Demande de confirmation REGISTRE") = vbYes Then
     
            For Each Fe In Worksheets
     
                If InStr(Fe.Name, "Registre_") > 0 Then If Split(Fe.Name, "_")(1) > Max Then Max = Split(Fe.Name, "_")(1)
     
            Next Fe
     
            ActiveSheet.Copy Before:=Worksheets("Registre")
     
            ActiveSheet.Name = "Registre_" & NumSem(Date) 'Date = date du jour
     
     
     
        Else
     
            Sheets("Registre").Range("A1").Select
            MsgBox "Op_ration annul_e par l'utilisateur"
     
        End If
     
    End Sub
    J'aimerais pouvoir faire la même chose mais une fois par mois, c'est à dire que lorsque l'on change de mois et bien que je puisse renommer l'onglet "original_1" ou "original_janv"

    Est-ce que cela est possible

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il y a plusieurs possibilités, voici deux fonctions qui pourront t'aider
    La fonction MonthName renvoie le nom du mois par rapport à son numéro passé en paramètre ainsi renverra "Janvier"
    La fonction Format qui transforme un nombre (date pour notre exemple en chaîne de caractères formatée selon le format passé en deuxième argument.
    Exemple
    Affiche le mois de la date du jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Format(Date, "mmmm")
    Affiche le mois de la date du jour en abrégé
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2018
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Merci mais ce que j'aimerais faire c'est pouvoir modifier mon 1er code qui fait référence à la semaine et pouvoir l'adapter au mois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function NumSem(LaDate As Date) As Integer
     
        NumSem = Int((LaDate - DateSerial(Year(LaDate - Weekday(LaDate - 1) + 4), 1, 1) _
                 + Weekday(DateSerial(Year(LaDate - Weekday(LaDate - 1) + 4), 1, 1)) + 5) / 7)
     
    End Function
    ceci afin de pouvoir l'intégrer dans mon 2ème code

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Snowkite Voir le message
    Merci mais ce que j'aimerais faire c'est pouvoir modifier mon 1er code qui fait référence à la semaine et pouvoir l'adapter au mois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function NumSem(LaDate As Date) As Integer
        NumSem = Int((LaDate - DateSerial(Year(LaDate - Weekday(LaDate - 1) + 4), 1, 1) _
                 + Weekday(DateSerial(Year(LaDate - Weekday(LaDate - 1) + 4), 1, 1)) + 5) / 7)
    End Function
    Qu'est-ce que cette formule est supposée calculer ?

    Citation Envoyé par Snowkite Voir le message
    J'aimerais pouvoir faire la même chose mais une fois par mois, c'est à dire que lorsque l'on change de mois et bien que je puisse renommer l'onglet "original_1" ou "original_janv"
    Il suffit de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            ActiveSheet.Name = "Registre_" & NumSem(Date) 'Date = date du jour
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            ActiveSheet.Name = "Registre_" & Format(Date,"mmm")
    Quoi que... perso, je pense qu'il serait préférable de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            ActiveSheet.Name = "Registre_" & Format(Date,"mm")
    Et pour ce qui est de ta fonction, elle ne sert plus à rien.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2018
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Par rapport à la date du jour, ou le fichier excell est utilisé, cela permet de calculer le n° de la semaine, et j'aimerais pouvoir adapter également ce code par rapport au numéro ou nom du mois

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Snowkite Voir le message
    Par rapport à la date du jour, ou le fichier excell est utilisé, cela permet de calculer le n° de la semaine
    En somme, tu as réinventé la fonction NO.SEMAINE().
    https://support.office.com/fr-FR/art...1-b18c13c75340
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2018
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Je pense que je me suis mal exprimé

    A partir de ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function NumSem(LaDate As Date) As Integer
     
        NumSem = Int((LaDate - DateSerial(Year(LaDate - Weekday(LaDate - 1) + 4), 1, 1) _
                 + Weekday(DateSerial(Year(LaDate - Weekday(LaDate - 1) + 4), 1, 1)) + 5) / 7)
     
    End Function
    Qui lui est intégré dans la macro suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Option Explicit
    Sub CopycartouchesSheetRename()
     
        Dim Fe As Worksheet
        Dim Nom As String
        Dim I As Integer
        Dim Max As Integer
     
        If MsgBox("Etes vous certain(e) de vouloir dupliquer cette feuille ?", vbYesNo + vbInformation, _
            "Demande de confirmation REGISTRE") = vbYes Then
     
            For Each Fe In Worksheets
     
                If InStr(Fe.Name, "Registre_") > 0 Then If Split(Fe.Name, "_")(1) > Max Then Max = Split(Fe.Name, "_")(1)
     
            Next Fe
     
            ActiveSheet.Copy Before:=Worksheets("Registre")
     
            ActiveSheet.Name = "Registre_" & NumSem(Date) 'Date = date du jour
     
     
     
        Else
     
            Sheets("Registre").Range("A1").Select
            MsgBox "Op_ration annul_e par l'utilisateur"
     
        End If
     
    End Sub
    Cela me permet de pouvoir créer un nouvel onglet portant le nom de l'original suivi du N° de semaine.

    J'aimerais pouvoir adapter ce code de la même manière mais avec le N°de mois à la place du N°de semaine

  8. #8
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Snowkite Voir le message
    J'aimerais pouvoir adapter ce code de la même manière mais avec le N°de mois à la place du N°de semaine
    Voir mon message #4.
    (j'avais fais une édition en même temps que tu rédigeais ta réponse).
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2018
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Nickel, cela fonctionne parfaitement

    Encore merci

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2018
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Désolé, mais à 1ére vue il y a un bug

    J'ai dupliquer la feuille registre afin de la nommer Registre_janvier et lorsque je clique sur créer une nouvelle feuille afin d'avoir l'onglet Registre_février, j'ai un message d'erreur "incompatibilité de Type"

    Nom : Capture d’écran 2018-02-01 à 18.48.51.png
Affichages : 923
Taille : 221,9 Ko

    Nom : Capture d’écran 2018-02-01 à 18.49.02.png
Affichages : 929
Taille : 215,0 Ko

    Car à chaque début de mois il faudra que je crée un nouvel onglet

  11. #11
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Snowkite Voir le message
    J'ai dupliquer la feuille registre afin de la nommer Registre_janvier et lorsque je clique sur créer une nouvelle feuille afin d'avoir l'onglet Registre_février, j'ai un message d'erreur "incompatibilité de Type"
    Sur quelle ligne de code se situe l'erreur ?

    Le message d'erreur sur la copie d'écran est vraiment... étrange. Ca ressemble plus au résultat d'un MsgBox qu'à un message d'erreur (je dirais même que ça ressemble comme deux goutes d'eau au message de ta première copie d'écran issu d'un MsgBox). Est-ce qu'il n'y aurait pas dans ton code des cochonnerie du type "On Error Goto" ? Si c'est le cas, vire-les qu'on puisse obtenir la véritable erreur.

    Comment as-tu fais pour espérer avoir une onglet février ? Tu as modifié la date système de ton ordinateur ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2018
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Je commence a être un peu perdu là

    Je te joins le fichier éventuellement si tu veux y jeter un oeil

    https://www.cjoint.com/c/HBbsNTVfpCu

  13. #13
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Snowkite Voir le message
    Je te joins le fichier éventuellement si tu veux y jeter un oeil
    https://www.cjoint.com/c/HBbsNTVfpCu
    En retour je te joins un lien vers une règle du forum : https://www.developpez.net/forums/d8...s-discussions/

    J'ai posé quelques questions simples. Fais l'effort d'y apporter des réponses.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2018
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Franchement, je suis désolé d'avoir joint le fichier, je ne savais pas que cela n'était pas autorisé.

    Encore merci de me l'avoir signalé

Discussions similaires

  1. [Requête] Regroupement par mois en cours
    Par Burnout dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 09/01/2006, 09h36
  2. Réponses: 5
    Dernier message: 18/10/2005, 09h49
  3. Comment grouper une requête par mois ?
    Par Le Pharaon dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/06/2005, 12h01
  4. résultat d'une requete affiché par mois
    Par zorely dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/05/2004, 07h18
  5. Regroupement par mois
    Par fplanglois dans le forum SQL
    Réponses: 7
    Dernier message: 29/07/2003, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo