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 :

affichage d'une horloge dynamique sous exel [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 54
    Par défaut affichage d'une horloge dynamique sous exel
    bonjour


    j'ai besoin de votre aide
    je suis en train de développer une application , je suis débutant en vba j'ai pas réussi a crée un macro pour l'affichage dynamique de l'heure , minute et seconde lors de l'ouverture de chaque feuille de mon classeur j'ai aussi un autre problème j'ai un tableau de 8 ligne je veux masquer les lignes selon le temps
    exemple:
    pour la première ligne il doit être masqué si le temps actuel dépasse
    7.20 et un de ces cellules est encore vide
    le 2 ligne doit être masqué sil le temps actuel dépasse 08.20 et l'un de ces cellules est encore vide
    .
    .
    .
    la dernière ligne doit être masque si le temps actuel dépasse 14.20 et l'un de ces cellules est encore vide
    merci d'avance pour votre aide

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 141
    Par défaut Précisez le contexte d'affichage de l'heure dynamique en Excel VBA
    Bonjour,
    Citation Envoyé par frihat mohamed Voir le message
    créer une macro pour l'affichage dynamique de l'heure , minute et seconde lors de l'ouverture de chaque feuille de mon classeur
    Où voulez-vous afficher dynamiquement l'heure ?

    Dans la fenêtre d'Exécution immédiate (Ctrl+G) du VBE d'Excel, copier-coller et valider par ENTER :
    10:19:33
    L'heure s'est affichée dynamiquement dans la fenêtre d'Exécution immédiate.

    En quoi l'heure qui s'affiche sur la barre des tâches de Windows n'est pas suffisante ?
    Comme il s'agit d'une heure dynamique, indiquez la fréquence de rafraichissement de l'affichage telle que toutes les secondes.

    Citation Envoyé par frihat mohamed Voir le message
    lors de l'ouverture de chaque feuille de mon classeur
    Pourquoi déclencher l'affichage de l'heure dynamique sur ouverture d'une feuille ?

    Indiquez comment vous voulez détecter l'ouverture de chaque feuille. Avec Workbook_SheetActivate ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     
    End Sub
    Citation Envoyé par frihat mohamed Voir le message
    j'ai un tableau de 8 ligne je veux masquer les lignes selon le temps
    Définir en constante le nom de la feuille ou son indice où se trouve le tableau. Si ce tableau est dans chaque feuille, le préciser.

    Donnez la déclaration des constantes sur la définition de la première ligne à traiter et commenter chaque déclaration selon le modèle ci-joint.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Option Explicit ' Gestion dynamique de l'heure
    Public Const rowFirst = 1 ' Première ligne à masquer
    Public Const rowLast = rowFirst + 7 ' Dernière ligne à masquer
    Si ces constantes diffèrent par feuille, créer autant de constantes qu'il y a de feuilles.
    Indiquez les constantes d'heure : 7.20, 8.20, etc. en précisant les unités 7 h 20 ou 00:07:00 s ?
    Ou indiquez la constante de la 1ere heure puis la constante de délai et éventuellement la constante de la dernière heure.

    Citation Envoyé par frihat mohamed Voir le message
    la dernière ligne doit être masque
    Donnez comment vous avez personnalisé le code de l'enregistreur de macro pour masquer une ligne.
    ___________

    En bas de ce message s'il vous a apporté des éléments de réponse pertinents, pensez également à voter en cliquant sur le bouton vert ci-dessous.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 54
    Par défaut
    bonjour merci pour votre réponse
    je veux ajouter le temps dans une cellule de chaque feuille de classeur par exemple dans la cellule D8 sous la format 6h.20 ou 6 :20.12
    pour masquer les lignes
    je dois faire pour chaque ligne une comparaison entre le temps actuel contenue de la cellule D8 et le temps cible
    le temps cibles pour chaque ligne est
    ligne 1 : 07.20
    ligne 2 : 08.20

    ligne 1 : 09.20

    ligne 1 : 10.20
    ligne 1 : 11 .20
    ligne 1 : 12.20
    ligne 1 : 13.20
    ligne 1 : 14.20

    la condition pour masquer une ligne est la suivante
    si l'un de cellules de cette ligne est vide et le temps actuel > temps cible de ce ligne alors ce ligne doit être masqué

    je suis débutant en vba
    j'ai pas compris votre code "?time " ou je dois mettre ce code ??? dans un module??
    MERCI

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 141
    Par défaut Datation de l'ouverture d'une feuille
    1. La fenêtre d'Exécution immédiate du VBE

    Citation Envoyé par frihat mohamed Voir le message
    j'ai pas compris votre code "?time " ou je dois mettre ce code ??? dans un module??
    1. Ouvrir le Visual Basic Editeur (Alt+F11) que l'on nommera par l'abréviationVBE.

    2. Pour ouvrir la fenêtre d'Exécution immédiate du VBE,
    tapez le raccoursi clavier Ctrl+G ou
    cliquez sur le VBE menu "Affichage" > "Fenêtre d'Exécution"

    Copier-coller et valider par ENTER :
    10:19:33
    L'heure actuelle s'affiche dans votre fuseau horaire. On met en bleu foncé le résultat affiché dans la fenêtre d'Exécution.

    Le "?" est l'abréviation de Debug.Print :
    07:20:00
    C'est la constante de début de masquage de la 1ere ligne de votre tableau.
    Debug.Print ou "?" est un moyen pratique de tester des fonctions VBA.

    2. Datation de l'ouverture de la feuille en D8

    Le problème s'est considérablement simplifié depuis que vous avez parlé de temps actuel par rapport à un temps d'ouverture de la feuille en D8. On n'a pas besoin de maintenir une vraie horloge dynamique en D8 mais uniquement de sauver l'heure d'ouverture.

    Je reformule l'énoncé. Modifier si nécessaire.
    A 7 h 20 du matin, la ligne 1 de la feuille ouverte (ou de toutes les feuilles ? Si c'est le cas, le préciser) doit être masquée si une de ses cellules est vide. Cela signifie qu'il faut déclarer les constantes de n° de la colonne de début et la colonne de fin pour la ligne à masquer parce qu'on ne va pas parcourir potentiellement toutes les colonnes que Excel peut fournir.

    Citation Envoyé par frihat mohamed Voir le message
    je dois faire pour chaque ligne une comparaison entre le temps actuel contenue de la cellule D8 et le temps cible
    Le problème c'est de voir quand il faut faire cette comparaison.
    Car vous parlez de temps actuel. Hors le temps actuel ne s'arrête jamais. Parler plutôt d'heure d'ouverture en D8 qui est une heure fixe.

    Donnez un exemple de chronologie concrète.
    Ouverture de la feuille disons à 7 h 00.
    Au bout de 20 minutes, la ligne 1 est masquée si condition remplie.
    Une heure plus tard, la seconde ligne est masquée si le classeur est toujours ouvert. Etc.

    Dans votre scénario, indiquez le cas où on ferme le classeur avant 14 h 20.
    On le réouvre avant 14 h 20 et on le ferme à 15 h.

    Le but de cette chronologie est de savoir quand le traitement pour masquage doit être lancé.
    Est ce un traitement périodique lancé automatiquement à partir de l'ouverture du classeur ou est-ce un traitement à la demande de l'utilisateur qui souhaite masquer les lignes par rapport à l'heure d'ouverture ?

    3. Démarrez le module ModClock

    Cliquez sur l'Excel menu "Outils" > "Options" > onglet "General" option [x] R1C1 reference style
    Cela facilitera les conversions de n° de colonne sinon vous devriez calculer la position des n° de colonne dans l'alphabet.

    Vous pouvez commencer le projet maintenant en déclarant les constantes.
    Cliquez sur le VBE menu "Insérer" > "Module"
    Dans les propriétés de Module 1, renommer le en ModClock.

    Vous avez parlé de la cellule d'heure d'ouverture.
    Décrivez là par la constante de sa rangée 8 et le nom de sa colonne D en coordonnées R1C1.

    Dans le module ModClock, copier-coller et compléter le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Explicit ' Gestion dynamique de l'heure
    Public Const rowTabFirst = 1 ' Première ligne du tableau à masquer
    Public Const rowTabLast = rowTabFirst + 7 ' Dernière ligne à masquer
     
    Public Const rowHourOpen = rowTabLast + 1 ' Rangée de la datation d'ouverture de la feuille
    Public Const colHourOpen = 4 ' Colonne "D" de la datation d'ouverture de la feuille
    Public Const hourMaskStart = #07:20:00# ' Heure de masquage de la 1ere ligne
    Créez, dans le module ModClock, la constante de délai entre deux masquage des autres lignes.

    Dans la fenêtre d'Exécution immédiate (Ctrl+G) du VBE d'Excel, copier-coller et valider par ENTER :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ? hourMaskStart + TimeSerial(1, 0, 0)
    08:20:00

    C'est la seconde heure pour le masquage de rowMaskFirst + 1. Il faut parler en utilisant les constantes que vous définissez parce que ce sera ce que fera votre macro.

    Après avoir défini la constante de délai entre deux masquages,
    remplacez le premier paramètre de TimeSerial(), à savoir la constante numérique 1 par le nom de votre constante de délai que vous venez de définir. Le résultat dans la fenêtre d'Exécution immédiate sera bien sûr identique à savoir : 08:20:00

    Poster la nouvelle version de ModClock en ajoutant les constantes utiles au projet et la procédure -- au moins son nom si elle est vide -- qui fera la comparaison pour masquage des lignes.
    Le but est que vous définissez et commentez vos constantes, votre nom significatif de macro.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 54
    Par défaut
    j'ai pas réussi à ouvrir la fenêtre d'excution
    j'ai indiqué par le temps actuel notre temps donc la ligne 1 doit être masqué si le temps actuel dépasse 07.20 et l'un des cellules est vide . la compraison est alors entre le temps actuel et 07.20.
    j'ai pas compris votre code assez bien
    merci

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 141
    Par défaut Fenêtre d'Exécution immédiate (Ctrl+G) du VBE d'Excel
    Citation Envoyé par frihat mohamed Voir le message
    j'ai pas réussi à ouvrir la fenêtre d'excution
    Il faut m'indiquer où quelque chose ne marche pas.
    Dans quelle langue est votre Excel ? Quelle est sa version ?

    Citation Envoyé par MattChess Voir le message
    Ouvrir le Visual Basic Editeur (Alt+F11) que l'on nommera par l'abréviation VBE.
    Est-ce que l'éditeur VBE du Visual Basic for Application d'Excel s'est ouvert en avant plan de la feuille Excel ?

    Citation Envoyé par MattChess Voir le message
    Pour ouvrir la fenêtre d'Exécution immédiate du VBE,
    tapez le raccoursi clavier Ctrl+G ou
    cliquez sur le VBE menu "Affichage" > "Fenêtre d'Exécution"
    Est-ce que vous avez ce menu ? Sinon listez moi tous les items de menu "Affichage" ainsi que leurs raccourcis claviers.

    La fenêtre d'Exécution immédiate (Ctrl+G) s'ouvre généralement sous la fenêtre d'Edition.

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

Discussions similaires

  1. Problème d'affichage d'une liste déroulante sous IE
    Par devdebutante dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 09/07/2007, 16h29
  2. Affichage d'une image dynamique
    Par chris81 dans le forum iReport
    Réponses: 1
    Dernier message: 11/01/2007, 12h40
  3. Réponses: 5
    Dernier message: 27/09/2006, 15h07
  4. Question sur l'affichage d'une form dynamique?
    Par Jayceblaster dans le forum Delphi
    Réponses: 1
    Dernier message: 18/09/2006, 15h36

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