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 :

Horloge dans une cellule qui fonctionne meme en mode d'edition de la feuile (Edit Mode)


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 29
    Points : 30
    Points
    30
    Par défaut Horloge dans une cellule qui fonctionne meme en mode d'edition de la feuile (Edit Mode)
    Bonjour,

    Voici un truc que j"avais decouvert qui force excel a mettre a jour l'horloge dans une cellule meme quand on entre la feuile et on est en train de taper ce qui est théoriquement impossible selon Microsoft !


    Dans un module Standard:
    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
    Option Explicit
     
    #If VBA7 Then
        Private Declare PtrSafe Function SetTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr
        Private Declare PtrSafe Function KillTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr) As Long
    #Else
        Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
        Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
    #End If
     
     
    Private oTemp As Range
     
     
    Public Sub AddClock(ByVal Cell As Range)
     
        If oTemp Is Nothing Then
            With Cell
                Set oTemp = Cell
                .FormulaR1C1 = "=TEXT(NOW(),""hh:mm:ss"")"
                Call SetTimer(Application.hwnd, 0, 1000, AddressOf TimerProc)
            End With
        End If
     
    End Sub
     
    Public Sub RemoveClock(ByVal Cell As Range)
     
        If Not oTemp Is Nothing Then
            With Cell
                KillTimer Application.hwnd, 0
                .FormulaR1C1 = vbNullString
                .Interior.ColorIndex = xlNone
                Set oTemp = Nothing
            End With
        End If
     
    End Sub
     
     
    Private Sub TimerProc(ByVal hwnd As Long, ByVal MSG As Long, ByVal nIDEvent As Long, ByVal dwTimer As Long)
     
        On Error GoTo errHandler
     
        oTemp.Interior.ColorIndex = IIf(Int(dwTimer / 1000) Mod 2 = 0, xlNone, 6)
        oTemp.Calculate
     
        Exit Sub
    errHandler:
        KillTimer Application.hwnd, 0
     
    End Sub

    Puis on ajoute et on retire l'horloge dans la cellule A1 comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub CreateClock()
        AddClock Feuil1.Range("a1")
    End Sub
     
    Sub DestroyClock()
        RemoveClock Feuil1.Range("a1")
    End Sub

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour RAFAAJ2000
    Je te propose de constater ceci :
    1) tu lances ta macro
    2) tu entres dans une cellule
    3) tu en changes le format (menu -->> format)
    --->> Constate

    Le pire, maintenant : il te faudra quitter le mode exécution puis y revenir pour pouvoir relancer cette horloge.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 29
    Points : 30
    Points
    30
    Par défaut
    Merci unparia

    Le code s'arrete pendant qu'une boite de dialogues est affiché apres le code reprend ... testé en excel 2007 et 2010

    En excel 2013 le code s'arrete.

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Les risques sont énormes, RAFAAJ2000.
    La faille que je t'ai montrée n'en est qu'une parmi des centaines et n'est pas la plus grave.
    La plus grave étant le calcul des formules éventuellement présentes, alors que tu modifies la valeur de l'une des références utilisées dans la formule.
    Le conseil, maintenant, du vieux pêcheur que je suis : ne jamais ferrer un poisson sans, les deux pieds bien sur terre, assurer sa position de telle manière qu'on pourra éventuellement faire face à une bête d'une taille telle qu'il faudra mener un combat de plusieurs minutes.
    Amitiés.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 29
    Points : 30
    Points
    30
    Par défaut
    @unparia

    Oui je suis d'accord avec toi.

    Je voulais juste montrer une singularité marrante et interssante qui pourrait eventuellement etre utile dans des scenarios differents.

Discussions similaires

  1. SQL à la carte dans le FM qui fonctionne pas
    Par mederik dans le forum Cognos
    Réponses: 2
    Dernier message: 19/04/2012, 20h43
  2. Réponses: 1
    Dernier message: 02/11/2011, 11h02
  3. [Lazarus] TStringGrid et texte dans une cellule qui disparaît
    Par koolkris dans le forum Lazarus
    Réponses: 1
    Dernier message: 04/10/2011, 12h12
  4. [Excel VBA]fonction dans une cellule qui modifie une autre cellule
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/01/2007, 17h43

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