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 (100 Affichages)
collection boite de dialogue perso episode 7

Citation Envoyé par patricktoulon Voir le message
Bonjour a tous
il y a beaucoup d'exemple sur ce sujet mais celui la n'y est pas

je vous propose aujourd'hui avec si peu de code un :
un msgbox temporaire avec un userform
sans boucle!! , sans app.ontime!! , sans app.wait !! , sans api SetTimer !!! etc....
ET non!! bloquant
que vous pouvez personaliser a votre gout

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


(((a savoir classer la commandbars et créer l'evenement OnUpdate)))
cet evenement se declenche quand on modifie un bouton dans la commandbars
mais nous alons créer cet evenement non pas dans un module classe mais 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
Nom : Capture.JPG
Affichages : 40
Taille : 89,9 Ko

Maintenant que nous avons notre msgbox(X) ( je l'ai appelé MsgBoxX)

On va lui mettre ce code ci dessous

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
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 : 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
'  !!!!!!!!!!!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

'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
 
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
voila pour le userform

voyons maintenant pour l'appel de ce MsgBoxX
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
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
tout les lignes taguées "(facultatif)" comme le mot l'indique ne sont pas obligatoire

une petite demo avec l'affichage pendant 2 secondes

Nom : demo3.gif
Affichages : 38
Taille : 140,8 Ko
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 (.show 0)


merci a RAFAAJ2000 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




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