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

 .NET Discussion :

Déclenchement à horaire fixe [VB.NET]


Sujet :

.NET

  1. #21
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Er3van Voir le message
    Allez, je me risque à faire du LinQ en VB, je ne garantie rien :
    T'as raison de pas garantir, parce que c'est pas bon ^^
    La syntaxe des expressions lambda en VB est différente (et il manque un ToList) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        lstPassedHours = lstHours.Where(Function(d) d.CompareTo(Now) < 0).ToList()
    (ouais, c'est moche... c'est VB quoi )

  2. #22
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Super ca

    ce sont effectivement les fonctions à côté desquelles j'étais passé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DateNaissance.ToLongDateString        'dimanche 02 décembre 1951
     
    DateNaissance.ToShortDateString       '02/12/1951
     
    DateNaissance.ToLongTimeString        '11:00:00
     
    DateNaissance.ToShortTimeString       '11:00
    De plus, je me suis effectivement simplifié la tâche en utilisant le < now comme proposé
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #23
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par tomlev Voir le message
    T'as raison de pas garantir, parce que c'est pas bon ^^
    Raaaaah, j'y ai presque cru pourtant... et le ToList(), même en C# il serait nécessaire, donc j'ai pas d'excuse !

    Citation Envoyé par tomlev Voir le message
    (ouais, c'est moche... c'est VB quoi )
    Tu prêches un convaincu !
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  4. #24
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    J'ajoute pour info le code dans la partie timer que je compte finalement utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub testtimer() Handles Timer1.Tick
            Dim tmp As Date
            For Each tmp In lstHours
                If tmp < Now Then
                    Debug.Print(Now.ToString)
                    lstHours.Remove(tmp)
                End If
            Next
        End Sub
    je regarde aussi les possiblités de TimeSpan
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #25
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    J'ajoute pour info le code dans la partie timer que je compte finalement utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub testtimer() Handles Timer1.Tick
            Dim tmp As Date
            For Each tmp In lstHours
                If tmp < Now Then
                    Debug.Print(Now.ToString)
                    lstHours.Remove(tmp)
                End If
            Next
        End Sub
    Ça va pas marcher : tu peux pas modifier le contenu d'une liste pendant que tu l'énumères, ça provoquera une exception. Il faut passer par une autre liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub testtimer() Handles Timer1.Tick
            Dim tmp As New List(Of Date)
            For Each d In lstHours
                If d < Now Then
                    Debug.Print(Now.ToString)
                    tmp.Add(d)
                End If
            Next
     
            For Each d In tmp
                lstHours.Remove(d)
            Next
        End Sub

  6. #26
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Oeuf corse

    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
    Private Sub testtimer() Handles Timer1.Tick
            Dim tmp As Date
            Dim lsttmp As New List(Of Date)
     
            For Each tmp In lstHours
                If tmp < Now Then
                    Debug.Print(Now.ToString)
                    lsttmp.Add(tmp)
                End If
            Next
            Do Until lsttmp.Count = 0
                lstHours.Remove(lsttmp.Item(0))
                lsttmp.Remove(lsttmp.Item(0))
            Loop
        End Sub
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #27
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Quel est l'utilité de ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            Do Until lsttmp.Count = 0
                lstHours.Remove(lsttmp.Item(0))
                lsttmp.Remove(lsttmp.Item(0))
            Loop
    Tu n'as pas besoin de supprimer les éléments de lsttmp, puisque de toutes façons c'est une variable locale qui sera abandonnée à la fin de la méthode.

    De plus, pour supprimer l'élément à la position 0, utilise plutôt la méthode RemoveAt, sinon tu fais une recherche linéaire alors que tu connais déjà la position...

    (d'ailleurs il vaut mieux supprimer en commençant par la fin, ça évite de déplacer tous les éléments à chaque fois ; et puis de toutes façons il y a la méthode Clear pour vider la liste )

  8. #28
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    effectivement, on peut simplifier encore

    et donc tu conseillerais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Do Until lsttmp.Count = 0
                lstHours.Remove(lsttmp.Item(0))
                lsttmp.RemoveAt(0)
            Loop
    ou bien un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each tmp in lsttmp
                lstHours.Remove(tmp)
            Loop
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #29
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    et donc tu conseillerais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Do Until lsttmp.Count = 0
                lstHours.Remove(lsttmp.Item(0))
                lsttmp.RemoveAt(0)
            Loop
    ou bien un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each tmp in lsttmp
                lstHours.Remove(tmp)
            Loop
    Bah dans mon exemple j'avais utilisé For Each, mon avis sur la question n'a pas changé

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Lancement d'une macro à horaire fixe
    Par didiflo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/03/2012, 18h49
  2. [PROCEDURE] déclenchement d'une procédure à heure fixe
    Par Fragonard dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/08/2005, 10h03
  3. Déclenchement Programme sur Virtual Key
    Par Tom-G dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 09/05/2003, 12h58
  4. Comment enregistrer un stream de longueur fixe ?
    Par Alcarbone dans le forum MFC
    Réponses: 5
    Dernier message: 13/04/2003, 20h14
  5. Chiffre a Virgule Fixe
    Par garybaldi dans le forum C
    Réponses: 3
    Dernier message: 21/06/2002, 10h41

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