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 :

Dernier jour du mois


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2013
    Messages : 23
    Par défaut Dernier jour du mois
    Bonjours à tous,

    Je suis en train de réaliser une macro qui me permet de créer un nouvel onglet et en fonction du jour que l'on inscrit dans une inputbox, le contenu de cet onglet change.

    Pour le dernier jour de chaque mois, une certaine commande doit être effectuée. (Copier le tableau de la feuille "Initialisation")
    J'ai trouvé la formule via Excel qui me permet de comparer le jour entré dans l'inputbox et le dernier du mois mais impossible de la retranscrire sur VBA!!

    Via Excel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(DAY(F1)= DAY(DATE(YEAR(F1),MONTH(F1+1),1)-1),"dernier jour de l'année", "il reste des jours en "&MONTH(F1))
    Via VBA (j'ai essayé avec "LastDayInMonth" mais pas concluant...) :

    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
        'Entrer la Date
        Dim dt As Date
     
        dt = Application.InputBox("Enter la date")
        dt = Format(dt, "dd/mmm/yyyy")
     
        Range("F1").Value = dt
     
        Range("F1").NumberFormat = "[$-80C]dddd d mmmm yyyy;@"
     
    ActiveSheet.Name = "Test"
     
    ' Copie du tableau de la feuille "Initialisation" 
     
    If (Day([F1]) = LastDayInMonth) Then
        Sheets("Initialisation").Select
        Range("A22:O46").Select
        Selection.Copy
        Sheets("Test").Select
        Range("A3").Select
        ActiveSheet.Paste
    End If
    Je fait appel a votre savoir faire pour me sortir de là!

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une fonction personnalisé qui est Vrai si la date en paramètre correspond au dernier jour du mois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function SiFinMois(ByVal Dte As Date) As Boolean
     
    SiFinMois = DateDiff("d", Dte, DateSerial(Year(Dte), Month(Dte) + 1, 0)) = 0
    End Function

    Tu peux l'utiliser comme ceci (code simplement pour tester)
    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
    Sub Test()
    Dim Str As String
    Dim Dt As Date
     
    Str = Application.InputBox("Enter la date")
    If IsDate(Str) Then
        Dt = CDate(Str)
        Sheets("Initialisation").Range("F1").Value = Dt
        Sheets("Initialisation").Range("F1").NumberFormat = "[$-80C]dddd d mmmm yyyy;@"
     
        If SiFinMois(Dt) Then
            Worksheets("Initialisation").Range("A22:O46").Copy Sheets("Test").Range("A3")
            MsgBox "Copie effectuée"
        Else
            MsgBox Dt & " n'est pas le dernier jour du mois. Aucune copie n'est effectuée"
        End If
    Else
        MsgBox "Veuillez entrer une date valide"
    End If
    End Sub

  3. #3
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Je te propose le code suivant :
    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
    Sub testdate()
    Dim dt As Date
    Dim Sht As Worksheet
    Dim shtname
     
    dt = InputBox("Entrer un date", "Date", "dd/mm/yyyy")
    dt = Format(dt, "dd/mmm/yyyy")
     
    shtname = "Date" & Day(dt) & Month(dt) & Year(dt)
    'Sheets.Add.Name = shtname
    Sheets.Add after:=Sheets(Sheets.count)
    ActiveSheet.Name = shtname
     
    With Worksheets(shtname)
        .Range("F1") = dt
        .Range("F1").NumberFormat = "[$-80C]dddd d mmmm yyyy;@"
     
        If Month(dt + 1) <> Month(dt) Then
            'MsgBox "suceed"
            For i = 1 To (46 - 21)
                For j = 1 To 15
                    .Cells(i, j) = Worksheets("Initialisation").Cells(i + 21, j)
                Next j
            Next i
        End If
    End With
     
    End Sub
    Je fais personellement le test de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Month(dt + 1) <> Month(dt) Then
    Bref tiens nous au courant !

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    @Kimy_Ire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Month(dt + 1) <> Month(dt) Then
    C'est plus concis.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2013
    Messages : 23
    Par défaut
    Parfait ça fonctionne!!

    J'ai pris le code de mercatog, qui me semble plus simple à utiliser avec la suite de mon programme VBA.

    En tout cas un grand merci à vous deux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. dernier jour du moi
    Par lazzeroni dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/09/2006, 15h34
  2. [Dates] Premier et dernier jour du mois
    Par Jarodd dans le forum Langage
    Réponses: 6
    Dernier message: 04/08/2006, 11h52
  3. Dernier jour du mois
    Par jane_ng dans le forum Langage
    Réponses: 13
    Dernier message: 03/08/2006, 13h43
  4. Dernier Jours du mois en cours
    Par paradeofphp dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/06/2006, 20h55
  5. premier et dernier jour du mois
    Par oneill701 dans le forum Bases de données
    Réponses: 9
    Dernier message: 21/06/2006, 12h05

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