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 :

[VBA-E]Extraire une périodes de dates


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Par défaut [VBA-E]Extraire une périodes de dates
    Bonjour tout le monde, j'essaye de réaliser une macro mai bien sur tout ne marche pas lol
    jvous explique...

    je dispose d'un fichier excel contenant plus de 8000 entreprises avec entre autre une colonne contenant les dates d'inscription de chaque entreprises. Ma macro doit me permettre parmi les 8000 individus de choisir ceux inscrits entre par exemple 01/01/1991 et le 31/03/1991 et me supprimer les autres.

    Pour cela g créer un userform où je saisie ma date de début de la période (date1) et ma date de fin (date2).

    Ma macro contient des érreurs, car si je tape du 01/01/1991 au 31/03/1991 elle va fonctionner
    Par contre si je saisie du 01/01/1991 au 01/06/1991 elle va me garder seulement les dates du premier jour de chaque moi ( 01/01/1991, 01/02/1991.....01/05/1991) ou encore si je saisie du 01/01/1991 au 31/03/1992 je vai obtenir les dates de 1991 jusquau 31/03/1991 seulement et celle du 01/01/1992 au 31/03/1992 et toute celles entre sont supprimés.

    C'est assez dur de l'expliquer, mais pour d'autres renseignements n'hésitez pas
    merci d'avance de votre aide car je bloque dur la...


    voici la macro en question :

    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
    44
    45
    46
    47
    48
    49
    Private Sub ok2_Click()
    Dim val As String
    Dim pl As Integer
    Dim pc As Byte
    Dim dn1 As Date
    Dim dn2 As Date
     
    pl = 2
    pc = 6
     
    dn1 = date1 'textbox1
    dn2 = date2 'textbox2
     
    Sheets("Resultat").Activate
    For pl = 2 To nb_ligne()
    dn = Cells(pl, pc)
    vna = Mid(dn, 7, 4)
    vnb = Mid(dn, 4, 2)
    vnc = Mid(dn, 1, 2)
    vn1a = Mid(dn1, 7, 4)
    vn1b = Mid(dn1, 4, 2)
    vn1c = Mid(dn1, 1, 2)
    vn2a = Mid(dn2, 7, 4)
    vn2b = Mid(dn2, 4, 2)
    vn2c = Mid(dn2, 1, 2)
    If dn <> "" Then
        If vna >= vn1a And vna <= vn2a Then
            If vnb >= vn1b And vnb <= vn2b Then
                If vnc >= vn1c And vnc <= vn2c Then
                Else
                    Rows(pl).Delete
                    pl = pl - 1
                End If
            Else
                Rows(pl).Delete
                pl = pl - 1
            End If
        Else
            Rows(pl).Delete
            pl = pl - 1
        End If
    Else
    Exit Sub
    End If
    Me.Hide
    date1.Value = ""
    date2.Value = ""
    Next pl
    End Sub

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Par défaut
    Bonjour,

    Je n'ai pas de solution à t'apporter, néanmoins j'ai déjà eu des soucis pour faire des soustractions entre 2 dates (fonction DattDiff sur Access).

    Je peux me tromper, mais le résultat d'un Mid(...) est des fois de type String ... si tu appliques une comparaison "<" ou ">", tu pourrais te retrouver avec 3 > 20 par exemple, ce qui est gênant !

    Bon courage

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour Matt^^,

    Si vous voulez conserver cette façon de traiter les dates, vous pouvez utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim vna, vn1a, vn2a as Long
    vna = Val(Mid(dn, 7, 4) & Mid(dn, 4, 2) & Mid(dn, 1, 2))
    vn1a = Val(Mid(dn1, 7, 4) & Mid(dn1, 4, 2) & Mid(dn1, 1, 2))
    vn2a = Val(Mid(dn2, 7, 4) & Mid(dn2, 4, 2) & Mid(dn2, 1, 2))
    Amicalement.
    Dernière modification par Invité ; 16/05/2007 à 08h12. Motif: Balise Code (Sélection du code + #)

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Regarde , le dernier post.

Discussions similaires

  1. Calcul sur une période de date
    Par alexdevl dans le forum QlikView
    Réponses: 2
    Dernier message: 13/01/2015, 13h08
  2. [XL-2010] Code vba pour extraire une chaîne spécifique de caractéres
    Par samy35 dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 25/09/2013, 18h34
  3. [VBA excel] Extraire une chaine de caract. d'une cellule.
    Par Mourne dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/01/2007, 08h35
  4. Réponses: 10
    Dernier message: 22/11/2005, 16h35
  5. extraire une date dans un texte
    Par fbu78 dans le forum Access
    Réponses: 1
    Dernier message: 06/10/2005, 23h12

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