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 :

Comparaison de date (nom d'un fichier) et date saisie dans Userform [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 77
    Par défaut Comparaison de date (nom d'un fichier) et date saisie dans Userform
    Bonsoir,

    Tournant en rond depuis deux jours, je reviens vers vous pour une Nième énigme pour moi (je vous rassure, je commence à trouver moi-même des réponses à certaines énigmes, même si j'y mets le temps ) ...
    Je vais essayer d'être le plus clair possible dans mes explications.

    Via un UserForm, je souhaite permettre la suppression de fichiers archivés.
    Ces fichiers portent un nom contenant systématiquement la date d'archivage au format anglais (yymmdd).
    J'ai créé le UserForm avec entre autres :
    - une ComboBox (cmbDate) contenant les opérateurs de comparaison
    - une TextBox (txtDate) pour la saisie d'une date au format français (jj/mm/aa)
    - une ListBox (lbListeArchives) pour afficher les noms des fichiers xls trouvés dans le répertoire (ThisWorkbook.Path)
    A ce jour, j'ai réussi à alimenter la ListBox si je ne mets pas de date ou si j'en mets une (l'opérateur de comparaison n'est pas encore opérationnel). Je souhaite maintenant utiliser le comparateur (<=, >=, = ou <>) et ne récupérer dans la ListBox que les fichiers répondant au critère de recherche (ex : fichiers contenant dans leur nom une date <= à la date saisie dans le UserForm). Et c'est là que le bas blesse, car malgré mes recherche et mes essais, je n'y arrive pas
    Voici où j'en suis (code du UserForm).

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Option Explicit
     
    Private Sub UserForm_Initialize()
    ' Alimentation de la ComboBox cmdDate avec les opérateurs de comparaison
        cmbDate.AddItem "<="
        cmbDate.AddItem ">="
        cmbDate.AddItem "="
        cmbDate.AddItem "<>"
    End Sub
     
    Private Sub cmdRechercher_Click()
    ' Déclaration des variables
        Dim Chemin As String ' Variable indiquant le répertoire de stockage de l'application
        Dim NomFichier As String ' Variable de stockage du nom du fichier archivé
        ' Variables date
        Dim Jour As String, Mois As String, Annee As String ' Variables pour conversion de la date saisie
        Dim DateSaisie As String ' Valeur de txtDate
        Dim ValeurDate As String ' Date saisie mise au format "jjmmaa" ("ddmmyy")
    '
    ' Définition des valeurs de la variable ValeurDate
        Chemin = ThisWorkbook.Path
        DateSaisie = txtDate.Value
    '
    ' Conversion au format anglais ("yymmdd") de la date saisie (DateSaisie)
        ' Récupération des 2 premiers caractères en partant de la gauche (jour)
        Jour = Left(DateSaisie, 2)
        ' Récupération des 2 caractères suivant le 4ème caractère en partant de la gauche (mois)
        Mois = Mid(DateSaisie, 4, 2)
        ' Récupération des 2 premiers caractères en partant de la droite (année)
        Annee = Right(DateSaisie, 2)
        ' Définition de ValeurDate (mise au format anglais de la date saisie)
        ValeurDate = Annee & Mois & Jour
    '
    ' Recherche des fichiers
        NomFichier = Dir(Chemin & "\*" & ValeurDate & "*.xls"
    ' La boucle tourne tant qu'elle trouve un fichier correspondant aux critères de recherche
        Do While Len(NomFichier) > 0
            ' Ajoute le nom du fichier dans la ListBox
            lbListeArchives.AddItem NomFichier
            ' Recherche du fichier suivant
            NomFichier = Dir()
        Loop
    End Sub
    Merci d'avance pour votre aide. J'essayerai ensuite d'avancer seul pour la suite ... sauf si je bute à nouveau
    Bruno

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    la combobox où tu a mis tes opérateurs de comparaison contient des chaînes de caractères (string) qui ne peuvent être interprêtées comme comaparateurs.

    Il te faut donc établir, par exemple, un mécanisme d'interprêtation, du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Select case toto ' toto étant la sélection faite dans la combo
     
      Case is ">"
         .....tes instructions
      Case is ">="
       .....tes instructions
      Case is "<"
        ... tes instructions
      Case is "<="
        .....tes instructions
    End select
    Tes instructions ?
    Isoler de l'inventaire fait par la boucle sur DSir, pour chaque fichiuer trouvé, les 4 derniers caractères, les transformer en numérique et comparer avec l'équivalent résultant de tes textboxes. Comme tu as choisi yymmdd, la comparaison numérique (donc pas de dates) sera parfaite si tu n'omets pas de bien formater chacun de ces nombres sur deux chiffres (donc, par exemple, 02 pour 2).
    Tu devrais t'en sortir avec ces explications.
    Reviens si tu ne t'en sors pas.

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

Discussions similaires

  1. Parser une date suivi d'un fuseaux horaire (date+02:00) et conversion en Date.
    Par SpeedOverflow dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 30/06/2013, 13h37
  2. Réponses: 0
    Dernier message: 28/06/2011, 15h18
  3. [CRONTAB]Nom d'un fichier avec la date du jour
    Par fabszn dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 22/05/2007, 14h37
  4. [VBA-E]ouvrir un fichier dont le nom est determiné par sa date de création
    Par olivertwist dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/04/2007, 17h29
  5. [D7] Comparaison de dates d'accès de fichier
    Par johweb dans le forum Delphi
    Réponses: 2
    Dernier message: 18/01/2007, 14h45

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