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 :

Vérification d'une date entre 2 dates dans 2 plages [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Militaire
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Militaire
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Par défaut Vérification d'une date entre 2 dates dans 2 plages
    Bonjour,

    J'ai un Userform dans un fichier Excel. L'utilisateur indique une date dans un TextBox. Le code ci-bas vérifie si la date est entre deux dates. Le code fonctionne.

    J’aimerais remplacé, dans le code, la date qui est en vert par une plage qui se nomme "DebutAnneeFisc" et la date qui est en rouge par une plage qui se nomme "FinAnneeFisc". Les deux plages se trouve dans l’onglet « Code ». De cette manière un utilisateur peut changer lui-même les dates à chaque année fiscale au lieu d'aller dans le code.

    J'ai cherché et j'ai rien trouvé et de plus je suis débutant en VBA.

    Merci.

    Grandgate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub validation()
    'Validation de la date
    Range("DateAct").Select
    Do While (ActiveCell.Value < #1/1/2016#) Or (ActiveCell.Value >= #1/1/2017#)
    If (ActiveCell.Value < #1/1/2016#) Then
    msg = "La date doit être après le début de l'année fiscale!"
    ElseIf (ActiveCell.Value >= #1/1/2017#) Then
    msg = "La date doit être avant la fin de l'année fiscale!"
    End If
    Merci.

  2. #2
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour Grandgate,

    J'opterais pour le gestionnaire de noms :
    Onglet Formules -> Noms définis -> Définir un nom.
    Tu donnes un nom et une référence.

    Exemple :
    Nom : Gestionnaire de noms.PNG
Affichages : 182
Taille : 30,8 Ko

    Ensuite dans le code tu peux utiliser Range("DebutAnneeFisc") ou Range("FinAnneeFisc") comme tu le fais déjà dans le code pour Range("DateAct")

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Militaire
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Militaire
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Par défaut
    Merci Antony,

    J'ai fait un test et ça fonctionne.

    Encore merci.

    Gaétan

    Voici le code final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Range("DateAct").Select
    Do While (ActiveCell.Value < Range("DebutAnneeFisc")) Or (ActiveCell.Value >= Range("FinAnneeFisc"))
    If (ActiveCell.Value < Range("DebutAnneeFisc")) Then
    msg = "La date doit être après le début de l'année fiscale!"
    ElseIf (ActiveCell.Value >= Range("FinAnneeFisc")) Then
    msg = "La date doit être avant la fin de l'année fiscale!"
    End If

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    puisqu'on parle d'année fiscale, tu pourrais tester si l'année de la date saisie est différente de l'année fiscale présente sur l'une des deux plages non ?
    ça évite de faire une double condition

    voici un exemple à adapter :

    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
    Sub validation()
    'Validation de la date
    Dim Annee As Long
    Dim Conforme As Boolean
     
        Annee = Year(Worksheets("LaFeuille").Range("DebutAnneeFisc").Value)
     
        While Not Conforme
            Select Case Annee - Year(Worksheets("Code").Range("DateAct").Value)
                Case Is > 0
                     msg = "La date doit être après le début de l'année fiscale!"
                Case Is < 0
                    msg = "La date doit être avant la fin de l'année fiscale!"
                Case Else
                    msg = "La date est bien dans l'année fiscale"
                    Conforme = True
            End Select
        Wend
    End Sub

    Si cela ne convient pas, tu as la méthode pour utiliser une date provenant d'une plage

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Militaire
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Militaire
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Par défaut
    Bonjour à tous,

    J'ai joint le fichier afin de vous aider à m'aider.

    Le code fonctionne très bien mais je ne veux pas aller dans le code à chaque année et changer les dates.

    Je veux que l'utilisateur soit capable de changer les dates, alors j'ai créé deux plages qui se nomment "DebutanneeFisc" et "FinanneeFisc" avec le gestionnaire de nom dans l'onglet "Code".

    J'aimerais seulement remplacer #1/1/2016# et #1/1/2017 par les plages "DebutanneeFisc" et "FinanneeFisc" qui se trouve dans l'onglet "Code" dans la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do While (ActiveCell.Value < #1/1/2016#) Or (ActiveCell.Value >= #1/1/2017#)
    Merci.

    registre activite.xlsm

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

Discussions similaires

  1. [AC-2007] Générer une liste de date entre 2 dates dans une requête
    Par Sonilight dans le forum Access
    Réponses: 4
    Dernier message: 29/08/2012, 17h23
  2. [Oracle 9] Une date entre deux dates !
    Par jf-nigou dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/04/2006, 10h45
  3. [VB6] Toutes les dates entre un interval dans un dynaset
    Par tim69000 dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 10/04/2006, 15h13
  4. CALCUL D UNE DUREE ENTRE 2 DATES SANS LES DIMANCHES
    Par sarahsonia dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/04/2006, 17h12
  5. Calculer une duree entre 2 dates
    Par d.w.d dans le forum C++
    Réponses: 7
    Dernier message: 02/03/2005, 22h39

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