Si fonction = 00:00:00

Bonjour à toutes et à tous,

J'admets que ce message fait un peu doublon avec mon précédent concernant une alarme sonore mais je me suis dit qu'en divisant les messages, ça serait plus simple si quelqu'un avait le même souci que moi pour ce point précis.

Donc ...

J'ai une fonction qui émet un son quand une cellule est à 0 mais je voudrais faire pareil quand un temps calculé est à 0 donc en fait 00:00:00

J'ai tenté ceci mais j'ai une erreur.

Function BEEPNOW(Time As Long) As String

If Time = 00:00:00 Then
    Beep
    Message = "Go"
End If

Application.Speech.Speak Message
BEEPNOW = Message

End Function

J'imagine que c'est le As Long As string mais je ne trouve pas de solution.

D'avance merci pour votre aide et pistes.

Bonne journée

Bonjour,

Je connais pas du tout cette fonction,

Par contre si tu penses que c'est juste un problème de type de variable, pourquoi ne pas utiliser variant pour accepter tout type de valeur?

Bonne journée

Merci pour cette information mais cela ne fonctionne pas.

bonjour,

1) une heure est stockée en excel sous forme d'un nombre décimal < 1, si tu passes cette information dans une variable long (nombre entier) tu auras toujours 0 comme valeur.

2) pour comparer une variable qui contient une heure avec une constante utilise TimeValue ou utilise sa représentation décimale.

Function BEEPNOW(Temps) As String

If Temps = TimeValue("00:00:00") Then 'ou Temps=0
    Beep
    Message = "Go"
End If

Application.Speech.Speak Message
BEEPNOW = Message

End Function

Sub test()
t = TimeValue("00:00:00")
BEEPNOW (t)
End Sub

évite aussi d'utiliser des mots réservés du langage VBA pour nommer tes fonctions ou variables. (exemple Time)

Merci h2so4, cela fonctionne.

Je ne connaissais pas et n'ai pas trouvé le TimeValue donc je pense que c'est là où je bloquais.

Comment faire pour ajouter la valeur d'une cellule dans le message ?
Mais ligne par ligne

Quand le message déclenche par exemple à la ligne 7, il me faudrait le message avec la valeur de A7 + B7

Si ligne 5, A5 + B5

Merci.

re,

Comment faire pour ajouter la valeur d'une cellule dans le message ?

Mais ligne par ligne

Quand le message déclenche par exemple à la ligne 7, il me faudrait le message avec la valeur de A7 + B7

Si ligne 5, A5 + B5

Merci.

Voyons ce que ma boule de cristal me suggère :

j'ajouterai un paramètre (indiquant la ligne en cours) dans la fonction beepnow

Function BEEPNOW(Temps, ligne) As String

    If Temps = 0 Then
        Beep
        Message = "Go " & (Range("a" & ligne).Value + Range("b" & ligne).Value)
    End If

    Application.Speech.Speak Message
    BEEPNOW = Message

End Function

Sub test()
    t = TimeValue("00:00:00")
    x = 5 'numéro de ligne
    reponse = BEEPNOW(t, x)
    MsgBox response
End Sub

Merci h2so4,

Voici donc le code au complet mais au moment de déclencher, la cellule en question mentionne "Valeur#"

Function BEEPNOW(Temps) As String

If Temps = TimeValue("00:00:00") Then 'ou Temps=0
    Beep
    Message = "Go " & (Range("a" & ligne).Value + Range("b" & ligne).Value)
End If

Application.Speech.Speak Message
BEEPNOW = Message

End Function

Sub test()
t = TimeValue("00:00:00")
BEEPNOW (t)
End Sub

Si je ne mets que GO ou tout autre texte, cela fonctionne.

Merci pour ton aide.

bonsoir,

Le code que j'ai fourni fonctionne, tant suite à un appel VBA, qu'à une utilisation de la fonction dans une cellule excel.

beepnow

Pour le reste ma boule de cristal est hors d'usage.

Bonsoir,

Function BEEPNOW(Time As Date) As String

If Format(Time, "hh:mm:ss") = "00:00:00" Then

    Beep
    Message = "Go"
End If

Application.Speech.Speak Message
BEEPNOW = Message

End Function
Sub test()
BEEPNOW #12:00:00 AM#
End Sub

Bonjour,

Voici le fichier, je pense que ça sera plus simple.

Pour ma part, j'avais pas mis de ROW dans la cellule, chose faite mais message d'erreur #valeur
Et concernant le GO + texte, c'est GO + col A et col B (je me suis mal exprimé ;) )

Merci pour votre aide.

Je vous souhaite une bonne journée

3alertes.xlsm (22.81 Ko)

bonjour,

le code que j'ai fourni fonctionne tel quel, même si tu remplaces le + par un & pour l'adapter à ta demande (Et concernant le GO + texte, c'est GO + col A et col B (je me suis mal exprimé ;) ). Dans ton code (que tu appelles le code au complet ?) il manque ligne en paramètre de la fonction.

Merci h2so4 pour ta patience et ton aide précieuse.

Mais ça fonctionne toujours pas. Quand ça arrive à 0, j'ai #valeur qui s'affiche dans la cellule (et qui disparaît ensuite puisque ça devient négatif)

@igz-onizuka : j'ai essayé. Idem même problème.

Merci pour votre aide.

Bonsoir,

Ton code "complet" n'est pas correct ! Utilise tel quel le code que j'ai proposé et ensuite revalide toutes tes cellules utilisant cette fonction.

ps : En français la fonction ROW() qui donne le numéro de ligne de la cellule est LIGNE().

Merci h2so4,

Effectivement, code complet + ligne au lieu de row et ça fonctionne parfaitement.

Un énorme merci pour ta patience et ton temps.

Bonne journée

Rechercher des sujets similaires à "fonction"