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

VB 6 et antérieur Discussion :

Fonction Beep et fonction format()


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par défaut Fonction Beep et fonction format()
    Bonjour à tous. Je cherche à créer un réveil qui sera un contrôle OCX. J'ai quelques problèmes néanmoins avec les fonction Beep et Format. Pour la fonction Beep, je souhaite l'appeller via un événement "Alarme" que j'ai préablablement déclarée. Concernant la fonction format, je veux que lorsque l'utilisateur ne rentre pas l'heure de l'alarme au format suivant (hh:mm:ss) qu'un MsgBox s'ouvre indiquant que le fomat de l'heure est invalide. Quand je compile et que j'essaye de rentrer un mauvais format d'heure, j'ai une erreur de type missmatch.

    Voila mon code:

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    Dim Rev As String
    Event Alarme(Beep) ' Ici je déclare mon événement Alarme
    Private Sub UserControl1_Initialize()
    FontSize = Label1.FontSize
    End Sub
     
     
    Private Sub Check1_Click()
    If (Check1.Value = 1) & (Text1.Text = Format(Text1.Text, "HH:mm:ss")) Then ' Ici j'essaye de vérifier si le format rentré est correct
    Text1.Locked = False
    Text1.Enabled = False
    End If
    If (Check1.Value = 1) & (Text1.Text <> Format(Label1, "HH:mm:ss")) Then
    MsgBox ("Format de l'heure invalide (HH:mm:ss)")
    End If
    If Check1.Value = 0 Then
    Text1.Enabled = True
    End If
    End Sub
     
     
    Private Sub Text1_Change()
    Rev = Text1.Text
    End Sub
     
    Private Sub Timer1_Timer()
    Timer1.Enabled = True
    Label1.Caption = Time
    If Rev = Label1.Caption Then
    RaiseEvent Alarme(200)
    End If
    End Sub
     
     
     
    '/////////Les propriétés///////////
     
    Public Property Get FontSize() As Integer
    FontSize = Label1.FontSize
    End Property
     
    Public Property Let FontSize(ByVal New_FontSize As Integer)
    Let Label1.FontSize = New_FontSize
    PropertyChanged "FontSize"
    End Property
     
    Public Property Get HeureAlarme() As String
    HeureAlarme = Text1.Text
    End Property
     
    Public Property Let HeureAlarme(ByVal New_Heure As String)
    Let Text1.Text = New_Heure
    PropertyChanged "HeureAlarme"
    End Property
     
    Public Property Get AlarmeActive() As Boolean
    AlarmeActive = Check1.Enabled
    End Property
     
    Public Property Let AlarmeActive(ByVal New_AlarmeActive As Boolean)
    Let Check1.Enabled = New_AlarmeActive
    PropertyChanged "AlarmeActive"
    End Property
     
    Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
    Call PropBag.WriteProperty("FontSize", Label1.FontSize, 8)
    Call PropBag.WriteProperty("HeureAlarme", Text1.Text, "")
    Call PropBag.WriteProperty("AlarmeActive", Check1.Enabled, True)
    End Sub
     
    Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    Label1.FontSize = PropBag.ReadProperty("FontSize", 8)
    Text1.Text = PropBag.ReadProperty("HeureAlarme", "")
    Check1.Enabled = PropBag.ReadProperty("AlarmeActive", True)
    End Sub
     
     
    '///////Les méthodes////////
     
    Public Sub Show(Affiche As Boolean)
    If UserControl1(Affiche) = True Then
    Check1.Visible = True
    Text1.Text = True
    End Sub
     
    Public Sub Hide(Cache As Boolean)
    If UserControl1(Cache) = False Then
    Check1.Visible = False
    Text1.Text = False
    End Sub
    je sais bien que Beep prends en compte 2 valeurs, une pour la fréquence et une pour la durée, mais je ne vois pas comment m'y prendre pour l'appeller via l'événement.

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    je sais bien que Beep prends en compte 2 valeurs
    Citation Envoyé par MSDN
    La fréquence et la durée du signal sonore dépendent des caractéristiques du matériel et du logiciel système utilisés, lesquelles peuvent varier d'un ordinateur à l'autre.
    Beep n'est donc pas parametrable, a moins que , tu declares l'API Beep

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
    la façon de l'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     'son de Frequence 6 Khertz pour une durée de 25 millisecondes
     Beep 6000, 25
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (Check1.Value = 1) & (Text1.Text = Format(Text1.Text, "HH:mm:ss")) Then
    le & a remplacer surement par un And
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Check1.Value = 1 And Text1.Text <> Format(Label1, "HH:mm:ss") Then
    Mais que contient Label1 , mystére car même si Text1.Text contient bien une heure valide, ... MsgBox est declanché
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Si tu utilises un composant DateTimePicker (Microsoft Windows Common Controls-2 6.0), tu n'auras plus à te soucier du format de l'heure entré par l'utilisateur. Tu peux aussi utiliser un composant MaskEdBox (Microsoft Masked Edit Control 6.0).

    Voici un petit exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Form_Load()
        ' Initialisation du Masked Edit Control
        With MaskEdBox1
            .Mask = "##:##:##"  ' hh:mm:ss
            .Text = CStr(Time)  ' affiche l'heure
        End With
     
        ' Initialisation du Date & Time Picker
        With DTPicker1
            .Format = dtpTime   ' définit le format
            .Value = Time       ' affiche l'heure
        End With
    End Sub
    pour les autres propriétés, méthodes et événements de ces composants, tu appuie sur F2 pour afficher l'explorateur d'objet, tu sélectionne l'élément qui t'intéresse et tu appuie sur F1.

  4. #4
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par défaut
    Pour ProgElecT, j'ai mis dans mon Label1 l'heure système du PC.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Timer1_Timer()
    Timer1.Enabled = True
    Label1.Caption = Time 'Ici
    If Rev = Label1.Caption Then
    RaiseEvent Alarme(200)
    'Beep
    End If
    End Sub

  5. #5
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Le format pour afficher l'heure est "HH:nn:ss" et pas "HH:mm:ss"

    mm est donné pour le mois dans "dd/mm/yyyy"

    l'erreur vient peut être de la

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonsoir,
    Pour info, donné par MSDN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyStr = Format(MyTime, "hh:mm:ss")   ' Renvoie "05:04:23".
    A+

Discussions similaires

  1. VBA: fonction Beep
    Par vatfer dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/10/2010, 16h03
  2. Sélection colonne fonction de la date + format colone
    Par fabiencal dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/10/2008, 16h21
  3. Fonction qui permet de formater 3,1 en 3,10 ?
    Par wormseric dans le forum Langage
    Réponses: 3
    Dernier message: 14/09/2007, 19h32
  4. Fonction Si sur le format de cellule
    Par samimikha dans le forum Excel
    Réponses: 3
    Dernier message: 23/05/2007, 19h20
  5. Equivalent fonction Beep
    Par fabiengb dans le forum Windows
    Réponses: 1
    Dernier message: 24/08/2006, 13h25

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