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érifier si une date existe dans un intervale de deux dates


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Par défaut Vérifier si une date existe dans un intervale de deux dates
    Bonjour à tout le Forum

    Après plusieurs recherches et adaptation (Merci d'ailleurs une fois de plus à tout ceux qui partagent ici leurs connaissance),
    J'ai pu mettre en place un code pour extraire les lignes se trouvant entre deux dates. Le code est le 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
    29
    30
    Sub Filtre_Fact()
     
    If DateValue(Range("H4")) - DateValue(Range("F4")) <= 0 Then
         MsgBox "Vous devez spécifier une date de DEBUT Inférieure à la date de FIN !", _
         vbOKOnly + vbCritical, "Attention"
         Exit Sub
    End If
        Set f = Sheets("Archiv_Fact")
        Tablo = f.Range("A7:J" & f.Range("A" & Rows.Count).End(xlUp).Row)
        dteD = Range("F4")
        dteF = Range("H4")
     
        k = 0
        For i = 1 To UBound(Tablo, 1)
            If Tablo(i, 3) >= dteD And Tablo(i, 3) <= dteF Then
                ReDim Preserve tabloR(UBound(Tablo, 2), k + 1)
                For j = 1 To 10
                    If j = 3 Then
                        tabloR(j - 1, k) = CDate(Tablo(i, j)) * 1
                    Else
                        tabloR(j - 1, k) = Tablo(i, j)
                    End If
                Next j
                k = k + 1
            End If
        Next i
        Range("A7:J" & Application.Max(3, Range("A" & Rows.Count).End(xlUp).Row) + 1).EntireRow.Delete
        Range("A7").Resize(UBound(tabloR, 2), UBound(tabloR, 1)) = Application.Transpose(tabloR)
     
    End Sub
    c'est peut être pas très bien élaboré, mais cela fait le boulot.

    Mon problème actuel est le suivant :

    Lorsque aucune valeur ne se trouve entre la date de début et la date de fin,
    je souhaite pouvoir renvoyer le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox "Aucune facture trouvée dans la période sélectionnée !", _
                vbOKOnly + vbCritical, "Désolé"
    Toutes mes tentatives jusqu'ici n'ont abouties à aucun résultat exploitable.
    Merci pour vous qui prendrez la peine de lire ce message et encore plus votre aide.

    Cordialement

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 405
    Par défaut
    Bonjour.

    As-tu essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ubound(tabloR)=0 then
       'Désolé pas de donnée
    end if
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 405
    Par défaut
    sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim estAvecDonnees as boolean:estAvecDonnees=false
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Tablo(i, 3) >= dteD And Tablo(i, 3) <= dteF Then
                estAvecDonnees=true
                ReDim Preserve tabloR(UBound(Tablo, 2), k + 1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if not estAvecDonnees then
       'Désolé, pas de données
    end if
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Par défaut Ca Fonctionne ...
    Merci Marot_r

    Ta deuxième proposition fonctionne très bien.

    Merci encore et à bientôt

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/04/2012, 01h25
  2. Réponses: 2
    Dernier message: 04/06/2010, 22h53
  3. Réponses: 2
    Dernier message: 07/05/2010, 14h36
  4. Réponses: 0
    Dernier message: 30/03/2010, 13h43
  5. Vérifier si une modifié existe dans ma table
    Par hoangeric dans le forum Dreamweaver
    Réponses: 0
    Dernier message: 01/07/2009, 18h37

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