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 :

Désactivation de bouton en fonction de la Date du systeme [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Invité
    Invité(e)
    Par défaut Désactivation de bouton en fonction de la Date du systeme
    Bonjour,

    J'ai un userform qui contient un bouton particulier " Créer un nouvel exercice". Je souhaite que ce bouton ne soit actif que du 1 au 15 janvier ( selon date du système)

    voici ci-dessous le code de mon bouton

    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
    Private Sub CommandButton11_Click()
    Dim i As Byte
    With ThisWorkbook
    Sheets(Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre", "RECAPITULATIF")).Copy
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & "ARCHIVES" & "-" & Format(Year(Now()) - 1, "0000")
    ActiveWorkbook.Close
    Windows("GESTION.xlsm").Activate
    End With
    Sheets("Janvier").Range("A3:H756").ClearContents
    Sheets("Février").Range("A3:H756").ClearContents
    Sheets("Mars").Range("A3:H756").ClearContents
    Sheets("Avril").Range("A3:H756").ClearContents
    Sheets("Mai").Range("A3:H756").ClearContents
    Sheets("Juin").Range("A3:H756").ClearContents
    Sheets("Juillet").Range("A3:H756").ClearContents
    Sheets("Aout").Range("A3:H756").ClearContents
    Sheets("Septembre").Range("A3:H756").ClearContents
    Sheets("Octobre").Range("A3:H756").ClearContents
    Sheets("Novembre").Range("A3:H756").ClearContents
    Sheets("Décembre").Range("A3:H756").ClearContents
    End Sub
    Quel code dois je saisir ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour

    Quel code dois je saisir ?
    celui d'une simple expression conditionnelle !
    - la date du jour est retournée par la fonction Date
    - la fonction YEAR(une-date) retourne le millésime de la date une-date
    - la propriété Enabled inhibe ou non un bouton selon qu'elle a la valeur false ou true
    et donc : si la date du jour est supérieure au 15 janvier de l'année en cours, on inhibe le bouton. Expression conditionnelle à mettre dans l'évènement activate du userform.
    Si tu permets, je vais te laisser écrire cette ligne de code trop élémentaire (ou au moins tenter de le faire et revenir ici avec ce que tu auras tenté, si tu n'y parviens vraiment pas).

    PS : ce n'est pas par hasard, que j'ai choisi de lier au millésime de l'année en cours et de ne pas me contenter une comparaison (également possible) faite sur la seule base du jour du mois et du mois.
    Et si mon petit doigt ne me ment pas, tu aurais peut-être intérêt à stocker en mémoire (dans un fichier texte bien caché) la dernière date d'utilisation (après avoir vérifié qu'elle n'est pas inférieure à la dernière déjà enregistrée) et à réagir comme tu l'entends s'il apparait que la date système est inférieure à la dernière date ainsi stockée.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mkl21 Voir le message
    Bonjour,

    (Salut Jacques).

    A 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Option Explicit
     
    Private Sub CommandButton11_Click()
     
    Dim I As Integer
    Dim LesOnglets As Variant
     
        With ThisWorkbook
     
             If Date >= DateSerial(Year(Date), 1, 1) And Date <= DateSerial(Year(Date), 1, 15) Then
                LesOnglets = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre", "RECAPITULATIF")
                .Sheets(LesOnglets).Copy
                With ActiveWorkbook
                     .SaveAs ThisWorkbook.Path & "\" & "ARCHIVES" & "-" & Format(Year(Now()) - 1, "0000")
                     .Close savechanges:=True
                End With
     
                For I = LBound(LesOnglets, 1) To UBound(LesOnglets, 1)
                    Select Case LesOnglets(I)
                           Case "RECAPITULATIF"
     
                           Case Else
                                .Sheets(LesOnglets(I)).Range("A3:H756").ClearContents
                    End Select
                Next I
             Else
                MsgBox "Vous n'êtes pas dans le créneau des dates pour l'archivage !", vbCritical, "Archivage du fichier"
             End If
     
      End With
     
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Salut Eric (matinal ?)
    Tu es bien gentil. Je l'aurais personnellement laissé se mettre en selle
    Regarde ce que j'ai ajouté à mon message précédent, mais laisse-le réfléchir au moins seul à la raison de ce rajout.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par unparia Voir le message
    Salut Eric (matinal ?)
    Comme dab.

  6. #6
    Invité
    Invité(e)
    Par défaut Merci
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    (Salut Jacques).

    A 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Option Explicit
     
    Private Sub CommandButton11_Click()
     
    Dim I As Integer
    Dim LesOnglets As Variant
     
        With ThisWorkbook
     
             If Date >= DateSerial(Year(Date), 1, 1) And Date <= DateSerial(Year(Date), 1, 15) Then
                LesOnglets = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre", "RECAPITULATIF")
                .Sheets(LesOnglets).Copy
                With ActiveWorkbook
                     .SaveAs ThisWorkbook.Path & "\" & "ARCHIVES" & "-" & Format(Year(Now()) - 1, "0000")
                     .Close savechanges:=True
                End With
     
                For I = LBound(LesOnglets, 1) To UBound(LesOnglets, 1)
                    Select Case LesOnglets(I)
                           Case "RECAPITULATIF"
     
                           Case Else
                                .Sheets(LesOnglets(I)).Range("A3:H756").ClearContents
                    End Select
                Next I
             Else
                MsgBox "Vous n'êtes pas dans le créneau des dates pour l'archivage !", vbCritical, "Archivage du fichier"
             End If
     
      End With
     
    End Sub

    Bonjour Monsieur Eric KERGRESSE,

    Merci pour votre promptitude. Le code fonctionne parfaitement.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mkl21 Voir le message
    Cf le message d'UNPARIA. En d'autres termes, il faudrait tester l'absence d'un fichier archivé avant de lancer le code, sinon c'est la cata... Mais je suppose que comme pour tout fichier important, vous faites une copie journalière datée. Si c'est bien le cas, votre fichier archive, c'est celui du 31/12 de l'année précédente...

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

Discussions similaires

  1. [XL-2013] Activer/désactiver un bouton en fonction des éléments des combobox
    Par sakhob dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 25/11/2017, 16h07
  2. [PrestaShop] désactiver un produit en fonction d'une date
    Par roman77 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 09/02/2017, 12h04
  3. Recherche en fonction de la date du system
    Par phantomatiik dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 23/03/2012, 20h29
  4. Réponses: 2
    Dernier message: 03/12/2008, 07h32

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