2015-03-01
- correction cosmétique
   du modèle du Blog
  ° diaporama occupant
     tout l'écran
  ° message défilant
     démarrant du bord
     droit sous Chrome

Trognon le chaton

En lumière..

Des articles Lesbiens: Camellia Rose ,
Lipsticks [:* Fanny] , Lisa
et des Histoires signées MyLzz59: Mylène écrit (http://mylene-ecrit.blogspot.fr)

Des articles Trans-*: Ma Vie En Rose ,
Wawa's Smile , FtM ? , Thomas Beatie 2

Des Coups de Coeur: EXL ,
Kashimashi ~Girl meets Girl~ ,
Sa Majesté Freddie , Mon Côté Midinette
des Coups de Gueule: Karol relève-toi ,
BlondeBox , 1 pub 2 mR2 [bon courage :D]
et des Coups de Blues: Pile 1 an ,
Baisser de Rideau , Interlude

Du Visual Basic (VB6-VBA): Mlle Hanoï
Boules , Bombes , AnaClock , DigiClock ,
Tris (tetris) ,
et de la Bricologie: Real Barbie Girl

Pis pour les plus grand(e)s, des
S*X TOYS:
DildoBike , Tech To Nique

Et même parfois de la vraie vie:
Impressions de Voyage (Maroc) ,
Chez Mickey , La Tonnelle ,
Nous Nous Sommes Rencontrées

.

La vraie Taunie ..


... Tu me manques :'(


Notre Taz :*




Clock & Zik..

Idée Cadeau..


Attrape-Mouches

dyke goudou gouine homo homoaffectivité homoaffectivity homosexual homosexualité homosexuality homosexuel homosexuelle inverti invertie lesbian lesbianism lesbianisme lesbien lesbienne lez néovagin neovagina réassignation saphique saphisme sapphic sapphism trans transgender transgenre transidentité transidentity transsexalité transsexality transsexual transsexualism transsexualisme transsexuel transsexuelle tribade tribadisme vaginoplastie ...

Le combat continue..

MyLzz59..

.. @gmail.com

Blog français

Ca va encore mieux en le disant.. Important
## Comment "marche" ce Blog / Comment laisser un Commentaire ##

Et pour finir,
Mylène écrit (http://mylene-ecrit.blogspot.fr)N'oubliez pas de visiter aussi
mon blog d'histoires ====>



-MyLzz59-

mercredi 1 juillet 2009

DigiClock sous Word

.
Présentation

Dans la même veine (la même inutilité ?) que la précédente (que je vous invite à relire tant elles se ressemblent), voici toujours sous Word, et avec des Segments, une Horloge ..Numérique, aussi appelée "7 Segments".

Si vous êtes pressé(e)s de la voir à l'oeuvre, vous pouvez commencer par l'intégrer à un nouveau document, et vous préoccuper des explications ultérieurement. Sinon, elles figurent sous ce code..

Le Code

Démarrez Word (version 2000 ou supérieure), ouvrez un nouveau document (vierge), et lancez l'éditeur VBA via le menu Outils > Macros, ou les touches Alt-F11. Repérez (ou affichez) l'explorateur de projets, et double-cliquez sur "ThisDocument". Ceci ouvre une fenêtre de code "ThisDocument (Code)". Effacez les lignes qui s'y trouveraient éventuellement, et collez le code ci-dessous.

Enregistrez (l'icône disquette ou Ctrl-S) le document, refermez l'éditeur VBA, ainsi que le document sauvegardé. Vérifiez au besoin (menu Outils > Macros > Sécurité) que le niveau de sécurité des macros ne soit pas sur "haut". Rouvrez le document, le code devrait démarrer, moyennant peut-être de valider "Activer les macros"..

' -----------------
' Zone Déclarations
' -----------------
Dim TD As Document

' ---------------------
' SUB: Horloge Digitale
' ---------------------
Private Sub Document_Open()
' Nettoyage
Set TD = ThisDocument
TD.Content.Delete
' Création des Chiffres ("L01" à "L42")
N = 0: X0 = 16: Y0 = 70
Z0$ = "1,0;3,0;4,1;4,3;4,5;4,7;3,8;1,8;0,7;0,5;0,3;0,1;1,4;3,4;"
For T = 1 To 6
Z$ = Z0$: X0 = X0 + 64 + 16 * (T Mod 2): GoSub SS1
Next T
' Création des Points ("L43" to "L46")
For X0 = 220 To 364 Step 144
Z$ = "0,2;0,3;0,5;0,6;": GoSub SS1
Next X0
' Boucle Infinie
Do
' Attente
Do: K$ = Time$: DoEvents: Loop While K$ = K0$: K0$ = K$
' Décryptage
For T = 1 To 6
V0 = Val(Mid$(K$, Int(1.4 * T), 1)): N = 7 * T - 6
V = V0 <> 1 And V0 <> 4: GoSub SS2
V = V0 < 5 Or V0 > 6: GoSub SS2
V = V0 <> 2: GoSub SS2
V = (V0 Mod 3) <> 1: GoSub SS2
V = (V0 Mod 2) = 0 And V0 <> 4: GoSub SS2
V = V0 = 0 Or (V0 > 3 And V0 <> 7): GoSub SS2
V = V0 > 1 And V0 <> 7: GoSub SS2
Next T
DoEvents
Loop
Exit Sub
' SSUB: Ajout Segments
SS1:
While Z$ <> ""
T1 = InStr(Z$, ","): T2 = InStr(T1 + 1, Z$, ";")
T3 = InStr(T2 + 1, Z$, ","): T4 = InStr(T3 + 1, Z$, ";")
N = N + 1: Z2$ = "L" + Format$(N, "00")
TD.Shapes.AddLine( _
X0 + 10 * Val(Left$(Z$, T1 - 1)), _
Y0 + 10 * Val(Mid$(Z$, T1 + 1, T2 - T1 - 1)), _
X0 + 10 * Val(Mid$(Z$, T2 + 1, T3 - T2 - 1)), _
Y0 + 10 * Val(Mid$(Z$, T3 + 1, T4 - T3 - 1)) _
).Name = Z2$
Z$ = Mid$(Z$, T4 + 1)
TD.Shapes(Z2$).Line.Weight = 11
TD.Shapes(Z2$).Line.ForeColor = &H800000
Wend
Return
' SSUB: Etat d'un Segment
SS2: TD.Shapes("L" + Format$(N, "00")).Visible _
= IIf(V, msoTrue, msoFalse): N = N + 1
Return
End Sub

Explications

Nous ne nous attarderons pas sur la création-même des Segments, ils ont été détaillés précédemment. Notez qu'ici la façon de les créer est "pilotée" par la chaîne Z$. Pour chacun des 6 Chiffres, la même séquence sera répétée.

En observant Z$, une séquence s'y reproduit, c'est "X,Y;". Pris séquentiellement par deux, ces Points (X,Y) serviront à créer et positionner les segments de chaque chiffre dans un ordre précis. Accessoirement, ces segments seront nommés également séquentiellement, pour le premier chiffre (dizaines d'heures) de "L01" à "L07", le second de "L08" à "L14", etc.. jusqu'au sixième (unités de secondes) de "L36" à "L42". Cette numérotation permet d'adresser un segment par deux paramètres: la position du chiffre, et la position du segment dans le chiffre.


La même méthode de construction est appliquée pour la création des deux paires de points ("L43" à "L46").

La boucle infinie, ainsi que la boucle d'acquisition de l'heure sont les mêmes que dans l'horloge précédente, à ce détail près: nous allons récupérer l'heure non pas via le Timer, mais la fonction Texte Time$(), plus adaptée ici, d'autant que nous n'utiliserons pas de centièmes pour faire clignoter les deux deux-points. Time$() renvoie une chaîne de 8 caractères selon ce motif: "hh:mm:ss". Une formule simple permet de transformer {1;2;3;4;5;6} et {1;2;4;5;7;8} afin d'éliminer les deux-points..

Reste la partie la plus intéressante, la conversion d'un chiffre de 0 à 9 en l'allumage ou l'extinction des 7 segments qui stylisent ce chiffre. Dressons le tableau..

0123456789
L01########
L02########
L03#########
L04#######
L05####
L06######
L07#######


Il suffit alors de relire ce tableau, d'abord en français, puis en code..
(V0 est la valeur du chiffre, et V l'état allumé/éteint résultant)

L01 s'allume pour les valeurs autres que 1 et 4
=> V = V0 <> 1 And V0 <> 4

L02 s'allume si la valeur est inférieure à 5 ou supérieure à 6
=> V = V0 < 5 Or V0 > 6

L03 s'allume si la valeur est différente de 2
=> V = V0 <> 2

L04 s'allume pour toute valeur dont le reste de la division entière par 3 n'est pas 1
=> V = (V0 Mod 3) <> 1

..et ainsi de suite (essayez avec les 3 segments restants) !

Dernière chose: les DoEvents permettent de rendre du temps CPU au système lorsque le programme n'en requiert pas 100%, par exemple pour ..rafraîchir l'affichage :)

-MyLzz59-

2 Commentaire(s):

Stéphane a dit…
waaouh..
j avais pas capté que les segments des digits etaient gerés individuellement....
miam!
:p
bon, ça fonctionne....encore bravo...
:*


(suis le seul à essayer ces(ses) jouets!? dites moi?)
MyLzz59 a dit…
Je crois que ça saute aux yeux, 'suffit de lire les noms des auteurs des derniers commentaires -taires -taires.. (tiens, y'a même de l'écho) :(

:* Taz,
-MyLzz59-

Rem: "Miam" ? :P