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

VB.NET Discussion :

Comparaison de deux dates


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Femme Profil pro
    etudiante
    Inscrit en
    Avril 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Avril 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut Comparaison de deux dates
    Bonjour je susis actuellement en stage et j'ai quelques petiters interrogation sur comment comparer deux dates. J'ai essayé plusieurs codes mais cela fonctionne pas je vous ai mis ci dessous mon dernier code. Sur ma feuille excel il y a toutes les intervention qui ont été effectué depuis 4 ans . a la demande de l'utilisateur il doit afficher toutes les interventions pour lesquelles sa date qqui ets dans la colonne 5 est compris entre l'intervalle que l'utilisateur saisie. JATTENDS PATIEMMENT VOS REPONSES PARCE QUE JE SUIS DANS UNE IMPASSE ....
    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
     
         Dim i As Integer
        Dim stock As Date
        Dim DateDebut As Date
        Dim DateFin As Date
        Dim papi As Integer
     
        fin = Range("A1").End(xlDown).Row
     
        DateDebut = InputBox("Entrer la date ", " Date de debut d'intervalle ", "01/01/2013 ")
     
        MsgBox "Bonjour" & Chr(10) & "La date est " & DateDebut
     
        DateFin = InputBox("Entrer la date ", " Date de fin d'intervalle ", "01/01/2013 ")
     
        MsgBox "Bonjour" & Chr(10) & "La date est " & DateFin
     
        For i = 2 To fin
          Cells(i, 5).Select
          stock = Cells(i, 5).Date.Value
          If (stock <= DateDebut) Or (stock >= DateFin) Then
            Rows(i).Select
            Selection.Delete Shift:=xlUp
            papi = Range("A1").End(xlDown).Row
            fin = papi
          End If
        Next i

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 206
    Points : 455
    Points
    455
    Par défaut
    bonjour sadhya,

    Tu a la fonction Date.compare(date1, date2) ou date1.CompareTo(date2)

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien bio médical
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    Sur ma feuille excel
    Ajouter par code un filtre de dates sur la colonne ???
    est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et

  4. #4
    Futur Membre du Club
    Femme Profil pro
    etudiante
    Inscrit en
    Avril 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Avril 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponses mais la fonction date.compare va t elle comparer si une date est supérieur ou égale à une autre ou sil elle est inférieur ou égale à une autre .

    J'ai déjà utilisé la touche F1 ça me renvoi la meme erreur 13 pour la ligne
    stock = Cells(i,5).Value
    ça ne veut pas stocker dans stock la date qui est dans la cellule .

    Par contre j'aimerais savoir si vous pouvez me dire si il est possible de coder l'intitialisation des colonnes, c'est-à-dire pour la colonne 1,2,3 et 6 format de cellule standard et la colonne 4 et 5 format de cellule date ???

    Dans l'attente de lire vos réponses et meerci encore pour cette aide .

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Points : 106
    Points
    106
    Par défaut
    la fonction...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateDiff(unit, date1, date2)
    si tu veux un ecart en jour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    'Ecart en jours
    DateDiff("d", date1, date2)
     
    'Ecart en mois
    DateDiff("M", date1, date2)
     
    'Ecart en année
    DateDiff("y", date1, date2)
    si date1 > date2, le résultat est négatif.

  6. #6
    Futur Membre du Club
    Femme Profil pro
    etudiante
    Inscrit en
    Avril 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Avril 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Salut,
    Merci pour ta réponse prologic mais ce n'est pas ce type de comparaison que je veux faire la comparaison que je souhaite faire est celle ci :
    Voici les informations que je souhaite avoir sur ma page excel à la fin :DateDebutD'intervalle < DateDansCellule < DateFinDintervalle

    Pour y arriver je procède comme ça :
    Donc Si DateDansCellule < DateDebutDintervalle alors on supprime la ligne

    et
    Si DateDansCellule > DateFinDintervalle alors on supprime la ligne
    C'est ce que j'essaye de faire avec mon code

  7. #7
    Futur Membre du Club
    Femme Profil pro
    etudiante
    Inscrit en
    Avril 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Avril 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Voilà j'ai un peu bidouiller mais ça fonctionne toujours pas . Je suis parti sur une idée ou je fais le test pour savoir si la date dans la cellule est comprise dans l'intervalle de l'utilisateur ensuite j'écris vrai dans une colonne pour toutes ces dates et faux pour toutes les dates hors intervalle.
    Ensuite je veux supprimer toutes les lignes qui ont faux à la colonne huit mais là mon programme fait ce qu'il veut. Pouvez vous me proposé des solutions pour que le programme suprrime toutes les lignes en questions svp ??

    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
    Sub ETAPE3()
     
    Dim i As Integer
    Dim DateDebut As Date
    Dim DateFin As Date
     
     
    Columns("D:E").Select
    Selection.NumberFormat = "dd/mm/yyyy"
     
    fin = Range("A1").End(xlDown).Row
     
    DateDebut = InputBox("Entrer la date ", " Date de debut d'intervalle ", "01/01/2013 ")
     
    MsgBox "Bonjour" & Chr(10) & "La date est " & DateDebut
     
    DateFin = InputBox("Entrer la date ", " Date de fin d'intervalle ", "01/01/2013 ")
     
    MsgBox "Bonjour" & Chr(10) & "La date est " & DateFin
     
    For i = 2 To fin
    Cells(i, 5).Select
     
    stock = Cells(i, 5).Value
     
     
    If stock > DateDebut And stock < DateFin Then
    Cells(i, 7) = True
    End If
    Next i
     
    For i = 2 To fin
     
    If Cells(i, 7) <> True Then
    Cells(i, 8) = False
    End If
     
    Next i
     
    For i = 2 To fin
     
    If Cells(i, 8) = False Then
    Rows(i).Delete
    End If
     
    Next i
     
    End Sub

    ATTENTION : CE COMMENTAIRE EST POSTE SUR UN AUTRE FORUM POUR MAXIMISER MES CHANCES DE REPONSES QUE LES PERSONNES QUE CA DERANGENT S'ABSTIENNENT DE ME REPONDRE SIL VOUS PLAIT SI JE VIENS LA CEST QUE JE SUIS VRAIMENT BLOQUEE ET QUE J'AI VRAIMENT BESOIN DAIDE J'AI PAS BESOIN QUE L'ON ME MEPRISE PARCE QUE JE SOUHAITE AVOIR PLUSIEURS REGARDS SUR MON PROBLEME

  8. #8
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Points : 106
    Points
    106
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.NumberFormat = "dd/mm/yyyy"
    Je crois que "mm" ce sont les minutes.... met "MM".

    Sinon pour ta comparaison de date, ma fonction DateDiff est tout indiqué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If DateDiff("s", DateDebut, stock) > 0 and DateDiff("s",stock, DateFin) < 0 then Cells(i, 7).Value = True
    Et le code est pas optimiser, pourquoi refaire la boucle à chaque fois ?

    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
    For i = 2 To fin
       Cells(i, 5).Select
       stock = Format(Cells(i, 5).Value, "dd/MM/yyyy")
     
     
      If DateDiff("s", DateDebut, stock) > 0 and DateDiff("s",stock, DateFin) < 0 Then
          Cells(i, 7).Value = True
       Else
          Cells(i, 8).Value = False
       End if
     
     
    Next i
     
     
    For i = 2 To fin
     
    If Cells(i, 8) = False Then
    Rows(i).Delete
    End If
     
    Next i

  9. #9
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 206
    Points : 455
    Points
    455
    Par défaut
    DateDiff fait partie de la bibliothèque VisualBasic

    privilégie

    Date.Compare ou Datefin.CompareTo

  10. #10
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Points : 106
    Points
    106
    Par défaut
    Citation Envoyé par chaparo Voir le message
    DateDiff fait partie de la bibliothèque VisualBasic

    privilégie

    Date.Compare ou Datefin.CompareTo
    Par curiosité, c'est un problème que ça fasse partie de la bibliothèque VisualBasic ?

  11. #11
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 206
    Points : 455
    Points
    455
    Par défaut
    Sur Social msdn
    he Microsoft.VisualBasic.dll is very well written helper functions that replicate the old Visual Basic function names in the old libraries. It uses all the managed code you would normally have to write yourself and calls standard .net framework functions.
    I would look at it this way, If you dont use this dll, would you rewrite the methods in your own utilities project? Most people would say yes, so why not let Microsoft do the work for you, plus support it for you too.

    If you are using a lot of it, then I would keep using it. If you are only using 1 little method like Trim or something which is easy to do in the framework already, then its a lot of code to load for one function.
    Ca fait juste chargé une dll en plus dans le projet qui n'est pas forcement utile, elle sert juste a facilité l'écriture de certaines fonction.

  12. #12
    Futur Membre du Club
    Femme Profil pro
    etudiante
    Inscrit en
    Avril 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Avril 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Salut les amis

    je regarde un peu ce qu'il se dit dans le forum parce que mon problème maintenant demeure dans la suppression de ligne.
    Le code fonctionne jusqu'aux marqueurs mais arrivé sur le code de suppression ça ne supprime même plus quoi que ce soit.

    Désolé de n'avoir pas répondu plus tôt mon ordi personnel est tombé en panne et ayant un décalage horraire de cinq heures c'était pas évident .




    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
    Sub ETAPE3()
    
    Dim i As Integer
    Dim DateDebut As Date
    Dim DateFin As Date
    
    
    Columns("D:E").Select
    Selection.NumberFormat = "dd/MM/yyyy"
    
    fin = Range("A1").End(xlDown).Row
     
    DateDebut = InputBox("Entrer la date ", " Date de debut d'intervalle ", "01/01/2013 ")
     
    MsgBox "Bonjour" & Chr(10) & "La date est " & DateDebut
     
    DateFin = InputBox("Entrer la date ", " Date de fin d'intervalle ", "01/01/2013 ")
     
    MsgBox "Bonjour" & Chr(10) & "La date est " & DateFin
     
    For i = 2 To fin
    
    stock = Cells(i, 5).Value
    If stock > DateDebut And stock < DateFin Then
    Cells(i, 7) = True
    Else: Cells(i, 7) = False
    End If
    Next i
    
    'For j = fin To 2 Step -1
    'If Cells(i, 7) = False Then
    'Rows(i).Delete
    'End If
    'Next j
    End Sub
    Voilà ça, ça foncitonne. Mais la suppression

  13. #13
    Futur Membre du Club
    Femme Profil pro
    etudiante
    Inscrit en
    Avril 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : etudiante

    Informations forums :
    Inscription : Avril 2013
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    merci beaucoup votre aide ça m'a été vraiment utile je vous présente mon code finale

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    Sub PMI()
    '##############Définition des colonnes en format dates#####################
    Dim i As Long
    Dim stock As Date
    fin = Range("A3").End(xlDown).Row
    
    '##############Définition des colonnes en format dates#####################
    Columns("D:E").Select
    Selection.NumberFormat = "dd/MM/yyyy"
    Columns("F").Select
    Selection.NumberFormat = "General"
    
    '###############Transformation de la périodicité en jours##################
    For i = 3 To fin
        Cells(i, 6).Select
        If Cells(i, 6).Value = "4 Ans" Then
        Cells(i, 6).Value = "1460"
        End If
        If Cells(i, 6).Value = "3 Ans" Then
        Cells(i, 6).Value = "1095"
        End If
        If Cells(i, 6).Value = "2 Ans" Then
        Cells(i, 6).Value = "730"
        End If
        If Cells(i, 6).Value = "1 Ans" Then
        Cells(i, 6).Value = "365"
        End If
        If Cells(i, 6).Value = "18 Mois" Then
        Cells(i, 6).Value = "548"
        End If
        If Cells(i, 6).Value = "6 Mois" Then
        Cells(i, 6).Value = "183"
        End If
        If Cells(i, 6).Value = "4 Mois" Then
        Cells(i, 6).Value = "122"
        End If
    Next i
    
    '############### Réécriture de la date prochaine ##################
    For i = 3 To fin
            Cells(i, 5).Select
            Cells(i, 4).Select
            Cells(i, 6).Select
            If Cells(i, 5).Value = "-" Then
            Cells(i, 5).Value = Application.Sum(Cells(i, 4).Value, Cells(i, 6).Value)
            End If
    Next i
    
    '############### Définition de l'intervalle de travail ##################
    DateDebut = InputBox("Entrer la date ", " Date de debut d'intervalle ", "01/01/2013 ")
    MsgBox "Bonjour" & Chr(10) & "La date est " & DateDebut
    DateFin = InputBox("Entrer la date ", " Date de fin d'intervalle ", "01/01/2013 ")
    MsgBox "Bonjour" & Chr(10) & "La date est " & DateFin
    
    For i = 3 To fin
    stock = Cells(i, 5).Value
    If stock > DateDebut And stock < DateFin Then
    Cells(i, 7) = True
    Else: Cells(i, 7) = False
    End If
    Next i
    
    For i = fin To 3 Step -1
    If Cells(i, 7) = False Then
    Rows(i).Delete
    End If
    Next i
    
    '############### Propeté du rapport ##################
    Columns("G").Select
    Selection.ClearContents
    
    End Sub

  14. #14
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,
    Tu peux simplifier
    Citation Envoyé par sadhya Voir le message
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    For i = 3 To fin
    stock = Cells(i, 5).Value
    If stock > DateDebut And stock < DateFin Then
    Cells(i, 7) = True
    Else: Cells(i, 7) = False
    End If
    Next i
     
    For i = fin To 3 Step -1
    If Cells(i, 7) = False Then
    Rows(i).Delete
    End If
    Next i
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            For i = fin To 3 Step -1
                If Not (DateDebut < Cells(i, 5).Value < DateFin) Then
                    Rows(i).Delete()
                Else
                    Cells(i, 7) = True ' si necessaire (a mon avis inutile puisqu'il seront tous à vrai)
                End If
            Next i
    A tester bien sur.

    Si tu n'as pas besoin de mettre la Cells(i, 7) à vrai
    Alors le code devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            For i = fin To 3 Step -1
                If Not (DateDebut < Cells(i, 5).Value < DateFin) Then Rows(i).Delete()
            Next i
    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

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

Discussions similaires

  1. [MySQL] comparaison de deux dates dans un ordre sql
    Par opeo dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/03/2007, 14h34
  2. comparaison de deux dates
    Par gloglo dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 16/01/2007, 13h39
  3. Comparaison entre deux dates dans une table
    Par Biskot75 dans le forum Access
    Réponses: 6
    Dernier message: 19/09/2006, 11h16
  4. comparaison de deux dates
    Par colombe dans le forum Bases de données
    Réponses: 4
    Dernier message: 13/07/2006, 18h44
  5. [VB6] Comparaison de deux dates dans une requête
    Par paradeofphp dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/06/2006, 19h45

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