IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

patricktoulon

un msgbox temporaire sans boucle ontime sans wait sans api SetTimer etc.. .. dans un userform

Noter ce billet
par , 20/03/2019 à 13h28 (1282 Affichages)
[CENTER][B][SIZE=3] collection boite de dialogue perso episode 7[/SIZE][/B][/CENTER]

[QUOTE=patricktoulon;10836043]Bonjour a tous
il y a beaucoup d'exemple sur ce sujet m[B]ais celui la n'y est pas
[/B]
je vous propose aujourd'hui avec si peu de code un :[CENTER][SIZE=3][B]un msgbox temporaire [/B][B]avec un userform
[/B][B]sans boucle!! , sans app.ontime!! , sans app.wait !! , sans api SetTimer !!! etc....
[COLOR=#b22222]ET non!! bloquant
que vous pouvez personaliser a votre gout

[/COLOR][/B][/SIZE][/CENTER]
[SIZE=3][SIZE=1]comment allons nous faireet bien dans une autre discussion qui n'avait rien a voir avec ce projet ,on m'a fait decouvrir quelque chose

[/SIZE][/SIZE]
[CENTER](((a savoir [B][I]classer la commandbars et créer l'evenement OnUpdate)))
[/I][/B][/CENTER]
[SIZE=3][SIZE=1]cet evenement se declenche quand on modifie un bouton dans la commandbars
mais nous alons créer cet evenement[B] non pas dans un module classe mais [/B]dans le userform lui meme qui sera le msgbox
apres tout il me semble avoir entendu dire que les modules userform sont des classes ;)
on va donc prendre un Userform lui mettre un textbox multiligne avec scroll vetical pour un eventuel grand texte ,avec saut de ligne
et un bouton( vous placez le textbox comme vous voulez)
pour ma part je l'ai placé comme il est dans un msgbox classique

voyons voir une image parle mieux que des mots
[ATTACH=CONFIG]459601[/ATTACH]

[B]Maintenant que nous avons notre msgbox(X) ( je l'ai appelé [B][COLOR=#b22222]MsgBoxX[/COLOR])
[/B]
On va lui mettre ce code ci dessous

[/B][CODE]Option Explicit
Private WithEvents Cmbrs As CommandBars 'creation de l'object commandbars events
Public delay As Long ' delay d'affichage
Public title As String 'titre de la caption
Public PosX As Long 'position horizontale
Public PosY As Long ' position verticale
Dim t[/CODE][/SIZE][/SIZE][CODE]
[SIZE=3][SIZE=1]' !!!!!!!!!!!evenement commandbars!!!!!!!!!!!
Private Sub Cmbrs_OnUpdate()
Application.CommandBars.FindControl(ID:=2040).Enabled = Not Application.CommandBars.FindControl(ID:=2040).Enabled
If Timer - t >= delay - 0.5 Then Application.CommandBars.FindControl(ID:=2040).Enabled = True: Unload Me
End Sub[/SIZE][/SIZE]
[SIZE=3][SIZE=1]
'l'ecriture dans le textbox est bloquée
Private Sub message_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer): KeyCode = 0: End Sub[/SIZE][/SIZE]

Private Sub CommandButton1_Click(): Unload Me: End Sub ' bouton fermer
Private Sub UserForm_Activate()
Me.Caption = IIf(title <> "", title, "Message d' Alerte !!")
t = Timer
If PosX <> 0 And PosY <> 0 Then Me.Left = PosX: Me.Top = PosY
Set Cmbrs = Application.CommandBars
Application.CommandBars.FindControl(ID:=2040).Enabled = Not Application.CommandBars.FindControl(ID:=2040).Enabled' va avoir pour effet de declencher l'evenement de la commandbars
End Sub
[/CODE]

voila pour le userform

[B]voyons maintenant pour l'appel de ce [COLOR=#b22222][B]MsgBoxX[/B][/COLOR]
[/B][CODE]
Option Explicit
'model MsgBoxX
Sub test()
With MsgBoxX
With .message
.Value = "ceci est une message test!!! " & vbCrLf & "temporaire " & vbCrLf & "DEVELOPPEZ.COM"
'la ligne ci dessous est facultative c'est les options du textbox
.BackColor = vbBlue: .ForeColor = RGB(255, 200, 100): .Font.Name = "arial black"
End With
.title = "message de test !" '(facultatif)
.PosX = 50 '(facultatif)
.PosY = 100 '(facultatif)
.delay = 3 '(obligatoire)
.Show 0
End With
End Sub
[/CODE]
tout les lignes taguées "(facultatif)" comme le mot l'indique ne sont pas obligatoire

une petite demo avec l'affichage pendant 2 secondes

[ATTACH=CONFIG]459605[/ATTACH]
voila j'ai mon compteur Windows 7 qui bouge pas d'un poil il n'y a donc pas de consomation excessive de processeur ou memoire comme avec d'autre procédés

pour info pour que ca fonctionne il faut que le userform soit non modal ([B].show [COLOR=#b22222]0[/COLOR])[/B]


merci a [URL="https://www.developpez.net/forums/u901761/rafaaj2000/"]RAFAAJ2000[/URL] de m'avoir fait decouvrir la possibilité de créer cet evenement commandbars ;)
comme lui en a trouvée une je suppose que les idées de mise en application vont fleurir ( partagez)

qu'en pensez vous

[SIZE=3]
[SIZE=1]

[/SIZE][/SIZE][/QUOTE]
Miniatures attachées Images attachées   

Envoyer le billet « un msgbox temporaire sans  boucle  ontime  sans wait  sans api SetTimer etc.. ..  dans un userform » dans le blog Viadeo Envoyer le billet « un msgbox temporaire sans  boucle  ontime  sans wait  sans api SetTimer etc.. ..  dans un userform » dans le blog Twitter Envoyer le billet « un msgbox temporaire sans  boucle  ontime  sans wait  sans api SetTimer etc.. ..  dans un userform » dans le blog Google Envoyer le billet « un msgbox temporaire sans  boucle  ontime  sans wait  sans api SetTimer etc.. ..  dans un userform » dans le blog Facebook Envoyer le billet « un msgbox temporaire sans  boucle  ontime  sans wait  sans api SetTimer etc.. ..  dans un userform » dans le blog Digg Envoyer le billet « un msgbox temporaire sans  boucle  ontime  sans wait  sans api SetTimer etc.. ..  dans un userform » dans le blog Delicious Envoyer le billet « un msgbox temporaire sans  boucle  ontime  sans wait  sans api SetTimer etc.. ..  dans un userform » dans le blog MySpace Envoyer le billet « un msgbox temporaire sans  boucle  ontime  sans wait  sans api SetTimer etc.. ..  dans un userform » dans le blog Yahoo

Commentaires

  1. Avatar de FLORY AZA
    • |
    • permalink
    Merci pour l'acquis