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 :

si heure système = heure dans cellule alors [XL-2002]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Par défaut si heure système = heure dans cellule alors
    bonjour
    existe un code qui déclenche une macro si l'heure système est = à l'heure écrite dans une cellule
    le tout mis en fonctionnement à l'ouverture du fichier
    et ne fonctionne pas si le fichier est fermé
    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Quelques précisions sont nécessaires.

    A priori, cela est possible, mais a peu de chance de se réaliser au moment où vous ouvrez votre fichier.

    Quelle est la motivation exacte ?

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut vsobo et le forum
    Je suppose que tu veux parler de l'instruction OnTime. Mais elle ne s'arrête que si tu la fermes (voir l'aide).
    A+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Par défaut si heure systeme
    bonjour
    justement je veux éviter l'application ontime
    j'avais déjà fait une application de ce type avec la date et ça fonctionnait
    voici l'exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private sub worksheet
    if range("A1")>=today then
    me.tab.colorindex=4
    end if
    if range("B1)=>today then
    me.tab.colorindex=3
    end if
    end sub
    et donc je voudrai un peu la même chose mais avec une heure
    merci

  5. #5
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    bonjour,

    C'est hyper clair vu qu'on ne sait pas ce qui alimente today qui n'est pas il me semble une instruction vba, vois du côté de Now et de ses copains, si ton code cité fonctionne, ça doit suivre...

    cordialement,

    Didier

  6. #6
    Invité
    Invité(e)
    Par défaut
    Déjà dans votre exemple de code, il y a une petite incohérence :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private sub worksheet
    if range("A1")>=today then
    me.tab.colorindex=4
    end if
    if range("B1)=>today then 'il faut écrire : if range("B1)>= today
    me.tab.colorindex=3
    end if
    end sub
    Ensuite que se passe-t-il si les 2 conditions sont réunies ?

    D'autre part, vous avez écrit à l'origine :
    existe un code qui déclenche une macro si l'heure système est = à l'heure écrite dans une cellule
    Ce qui m'a amené à vous répondre :
    A priori, cela est possible, mais a peu de chance de se réaliser au moment où vous ouvrez votre fichier.
    Alors est-ce vraiment : si l'heure système est = à ?
    ou : si l'heure système est >= à ?

  7. #7
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour Jacques Jean,

    'il faut écrire : if range("B1)>= today
    vous ne vouliez pas rajouter un " ??

    cordialement,

    Ps je crois que ce qu'il veut, c'est émuler le mode tâche d'Outlook, qui, s'il est ouvert envoie un message (pop-up), sachant que là ça ne se déclencherait que si l'heure voulue est "à venir"..

    Didier

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour Ormonth,

    Oui, bien vu. J'ai fait d'abord un copier/coller et je n'ai même pas vu les guillemets manquants.

    Quant à l'émulation du "mode tâche d'Outlook" vous avez peut-être ou sans doute raison, mais il faudrait quand même qu'il soit plus précis sur ce qu'il veut faire.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Par défaut si heure systeme
    bonjour
    l'exemple avec la date n'est qu'un exemple qui fonctionne
    j'ai des séries de feuille
    chaque feuille est une semaine et quand le premier jour de la feuille est égal à maintenant alors l'onglet devient vert et quand le dernier jour de la feuille est égal à maintenant alors l'onglet devient rouge
    mais ,nous nous écartons du sujet
    le but du sujet est d'avoir le même système , mais avec l'heure
    merci

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mh = Format(Now, "hh:mm:ss")

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Par défaut si heure systeme
    bonjour
    je n'arrive pas à le faire fonctionner
    est-ce que dans la cellule référence , l'heure doit être écrite d'une certaine façon ,pourtant j'ai mis la cellule en format hh:mm:ss
    merci

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Cela fonctionne si les cellules sont formatées en texte.

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut vsobo et le forum
    Date : partie entière du nombre => une égalité est facile à obtenir
    heure : partie décimale du nombre => le micro ne travaille pas à la seconde! Il faudrait établir une égalité jusque sur le bit de poid le plus faible. Et ça, ce n'est pas du domaine du possible!
    Reste 2 possibilités : l'arrondi à la seconde du nombre (et pas de l'affichage) ou la fourchette (supérieur à limite_inf et inférieurà limite_sup)
    A+

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour Gorfael,

    Sauf erreur de ma part (toujours possible) j'ai essayé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet()
    mh = Format(Now, "hh:mm:ss")
     
    If Range("A1") >= mh Then
    Cells(1, 1).Interior.ColorIndex = 4
    End If
    If Range("B1") >= mh Then 'il faut écrire : if range("B1)>= today
    Cells(1, 2).Interior.ColorIndex = 3
    End If
    End Sub
    En "A1" j'ai entré : "14:10:15" et en "B1" : "14:10:55" (format texte).

    Entre 14:10:16 et 14:10:55 la première condition ne s'exécute pas mais la deuxième s'exécute bien et avant 14:10:15 les deux conditions s'exécutent, après 14:10:55 aucune ne s'exécute.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Par défaut si heure systeme
    bonjour
    désolé , avec moi ça ne fonctionne pas
    au travail j'avais mis une horloge dans une cellule
    bref , dès que je remet la main sur ce code , je vous le montre
    merci

  16. #16
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Une précision :

    - vous n'avez peut-être pas la possibilité de mettre vos données au format texte et dans ce cas, il y a une autre solution tenant compte de la remarque de Gorfael.

    - si vous avez mis vos cellules au format texte alors qu'elles sont déjà renseignées, cela ne fonctionnera pas non plus.

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Par défaut si heure
    bonjour
    voilà comme promis ce que j'avais fait au travail pour appeler un userform avec l'heure systême
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim temps
     
    Private Sub Worksheet_Activate()
    Hon
    Private Sub Worksheet_Deactivate()
    Hoff
    End Sub
    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 Workbook_BeforeClose(Cancel As Boolean)
    Hoff
    End Sub
     
    Private Sub Workbook_Open()
    Hon
     
    End Sub
     
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Range("C1") = 1 Then
    UserForm1.Show
    End If
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim temps
    Sub Hon()
    ThisWorkbook.Sheets(1).Range("A1") = Format(Now, "hh:mm:ss")
    temps = Now + TimeValue("00:00:01")
    Application.OnTime temps, "Hon"
    End Sub
     
    Sub Hoff()
    On Error Resume Next
    Application.OnTime temps, procedure:="Hon", schedule:=False
    End Sub
    dans la cellule B1 ,j'écris l'heure au format hh:mm:ss
    et dans la cellule C1 , je mets la fonction =si(B1=A1;1;"")
    et ça fonctionne ,libre à vous pour l'userform
    y a t il des inconvénient ?
    est-ce correct?
    merci

  18. #18
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Je viens de parcourir rapidement votre dernier message et a priori il ouvre de nouveaux horizons.

    Vous n'aviez pas donné ces précisions dans les précédents et la différence peut se trouver justement dans le fait que vous utilisez un Userform.

    Je n'ai pas le temps d'approfondir ce soir, mais demain, j'y regarderai de plus près, si vous n'avez pas obtenu d'autres réponses avant.

    Bonne soirée en attendant.

  19. #19
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    J'ai regardé votre code mais n'ayant pas le tout, je ne peut pour l'instant qu'imaginer : vous utilisez un Userform et donc je suppose que vous affectez le contenu des cellules qui contiennent "hh:mm:ss" à des Textbox ou autres objets du formulaire ?

    Si c'est bien le cas, à priori, le raison du bon fonctionnement est la même que celle qui fonctionne chez moi en affectant le format texte aux cellules.

    En effet, si vous utilisez le contenu de TextBox pour faire des comparaisons, ce contenu est bien en format texte alors que ce n'est pas le cas si vous faite la comparaison dans des formules Excel utilisant le contenu de vos cellules au format "hh:mm:ss".

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Par défaut si heure
    bonjour
    le chiffre "1" déclenche un userform
    ce que je voulais au départ , c'est un enregistrement automatique , mais on me l'a fortement déconseillé (si mauvais manipulation , l'enregistrement auto peut être catastrophique)
    donc l'userform est un simple double bouton , un pour enregistrer si on clic dessus et l'autre pour ne pas enregistrer
    donc enregistrement semi-auto avec validation de la main de la personne
    merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Insérer une heure d'arrivée dans une cellule
    Par TALAIN111261 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/09/2008, 02h12
  2. heure système et cellule excel
    Par lollo dans le forum Excel
    Réponses: 3
    Dernier message: 07/08/2008, 13h28
  3. soustraction d'heures dans cellules non consécutives
    Par kikinou91 dans le forum Excel
    Réponses: 4
    Dernier message: 03/08/2007, 15h40
  4. Réponses: 11
    Dernier message: 24/07/2007, 16h14
  5. Réponses: 2
    Dernier message: 19/05/2006, 14h48

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