13 votes

Puis-je faire en sorte qu'Excel émette un bip lorsqu'un calcul est terminé ?

J'ai des calculs très longs dans Excel. J'aimerais détourner mon attention de l'écran et faire quelque chose à mon bureau, mais être alerté lorsque le calcul est terminé.

Des idées ?

21voto

Brandon Points 2580

OK, voici quelque chose à essayer (les instructions supposent qu'Excel 2007 ou une version plus récente) :

  • Ouvrez votre classeur.

  • L'enregistrer en tant que SS activé par macro ( .XLSM ).

  • Appuyez sur Alt-F11 pour ouvrir la fenêtre de codage VBA.

  • Cliquer avec le bouton droit de la souris sur VBAProject ( yourbook.xlsm ), et choisir Insérer → Module.

  • Ouvrez le "Module1" nouvellement créé.

  • Dans le module, collez cet extrait :

    Sub Auto_Open()
        Application.OnKey "{F9}", "F9Handler"
    End Sub

    La touche F9 sera ainsi réaffectée à chaque fois que le SS sera ouvert. Lorsque vous appuyez sur la touche F9, le système exécute F9Handler au lieu du calcul habituel.

  • Dans le module, collez cet extrait :

    Sub F9Handler()
        Application.Calculate
        Beep
    End Sub

    C'est ce qui sera exécuté lorsque vous appuierez sur la touche F9. La première ligne exécute le programme Application.Calculate (ce que fait habituellement F9), puis Bip.

  • Sauvegardez tout.

  • Fermer Excel.

  • Ouvrez (à nouveau) le fichier XLSM que vous avez créé.

  • Profit. :)

Remarque : vous devrez probablement activer les macros et/ou faire du document un document "de confiance" pour vous assurer que les macros s'exécutent comme prévu.

Plus d'informations :

5voto

BlizzardsGambit Points 154

Comme les autres l'ont mentionné, utilisez la fonction beep en Visual Basic (VB) :

Function beepNow()
Beep 
End Function

Pour obtenir le codage VB, vous devez obtenir le fichier Developer tab disponible (voir : Rendre visible l'onglet Développeur )

Ainsi, lorsque vous modifiez une cellule ou une condition, il émet un signal sonore. Exemple de macro pour appeler le code VBS ci-dessus : =IF(C2<>C3,beepNow(),"")

1voto

Ruthie Points 11

Au lieu de placer le module dans le ss, vous pourriez le placer dans votre Personal.xlsb. Cela vous permettrait de mettre le "bip" à la disposition de n'importe quel utilisateur. Pour l'exécuter, modifiez la barre d'outils d'accès rapide ou insérez un bouton/une forme à cliquer dans votre ES et assignez-lui la macro.

0voto

ChrisB Points 231

La réponse donnée par @c007 est excellente, à une exception près, que d'autres ont déjà commentée : les Beep s'appuie sur le haut-parleur intégré (et parfois désactivé) de l'ordinateur et n'utilise pas vos haut-parleurs, il se peut donc que vous n'entendiez rien.

Je publie une solution de contournement basée sur cette réponse. S'il y avait eu moins de contenu, j'aurais plutôt posté un commentaire.

Voici ce que j'utilise pour jouer un son avec VBA sous Windows. Il utilise les haut-parleurs normaux de l'ordinateur au lieu du haut-parleur intégré, souvent désactivé, auquel on accède avec la touche Beep méthode.

Commencez par la réponse de @c007. Changez simplement Beep à cela :

PlaySound sound_Up

Vous pouvez modifier le son en changeant sound_Up à un autre élément de l'énumération SoundType (liste) dans le code ci-dessous, par exemple sound_Complete o sound_Notify .

Option Explicit
' --------------------------------------------------
' --------------------------------------------------
'   REQUIRED DLL REFERENCE AND CONSTANTS
' --------------------------------------------------
' Reference to external procedure in DLL to play sounds

#If VBA7 Then
    ' 64-bit MS Office
    Private Declare PtrSafe Function sndPlaySound32bit Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As LongPtr) As LongPtr
#Else
    ' 32-bit MS Office
    Private Declare Function sndPlaySound32bit Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As LongPtr) As LongPtr
#End If

' --------------------------------------------------
' --------------------------------------------------
'   CONSTANTS
' --------------------------------------------------
'
Public Const SOUND_DO_NOT_WAIT          As String = "&H1"
Private Const SOUND_FILES_PATH          As String = "C:\Windows\Media\"

' --------------------------------------------------
' --------------------------------------------------
'   PUBLIC ENUMERATIONS
' --------------------------------------------------
'
Public Enum SoundType
    sound_None = 0
    sound_Up = 1
    sound_Down = 2
    sound_Attention = 3
    sound_Blocked = 4
    sound_Boop = 5
    sound_Complete = 6
    sound_Critical = 7
    sound_Ding = 8
    sound_Error = 9
    sound_Exclamation = 10
    sound_FastDown = 11
    sound_Information = 12
    sound_Notify = 13
    sound_PhoneRing = 14
    sound_RingOut = 15
    sound_Stop = 16
    sound_Tada = 17
    sound_Tone = 18
End Enum

' --------------------------------------------------
' --------------------------------------------------
'   PUBLIC METHODS
' --------------------------------------------------
'
Public Sub PlaySound(ByVal sound As SoundType)
' Plays a sound from a list (see the 'SoundType' Enum).  Code execution continues
'   while sound is playing.
    Dim soundFileName                   As String
    soundFileName = GetSoundFileName(sound)

    If Not soundFileName = vbNullString Then
        sndPlaySound32bit SOUND_FILES_PATH & soundFileName, SOUND_DO_NOT_WAIT
    End If
End Sub

' --------------------------------------------------
' --------------------------------------------------
'   PRIVATE DEPENDENCIES
' --------------------------------------------------
'
Private Function GetSoundFileName(ByVal soundToGet As SoundType) As String
' Returns a windows sound file name (not path) from a member of the custom
'   'SoundType' enumeration.

    Dim fName                           As String

    Select Case soundToGet
    Case sound_Up:          fName = "Speech On.wav"
    Case sound_Down:        fName = "Speech Off.wav"
    Case sound_Attention:   fName = "Windows Battery Low.wav"
    Case sound_Blocked:     fName = "Windows Pop-up Blocked.wav"
    Case sound_Boop:        fName = "Speech Misrecognition.wav"
    Case sound_Complete:    fName = "Windows Print complete.wav"
    Case sound_Critical:    fName = "Windows Critical Stop.wav"
    Case sound_Ding:        fName = "Windows Ding.wav"
    Case sound_Error:       fName = "Windows Error.wav"
    Case sound_Exclamation: fName = "Windows Exclamation.wav"
    Case sound_FastDown:    fName = "Speech Sleep.wav"
    Case sound_Information: fName = "Windows Information Bar.wav"
    Case sound_Notify:      fName = "notify.wav"
    Case sound_PhoneRing:   fName = "Windows Ringin.wav"
    Case sound_RingOut:     fName = "Windows Ringout.wav"
    Case sound_Stop:        fName = "chord.wav"
    Case sound_Tada:        fName = "tada.wav"
    Case sound_Tone:        fName = "Windows Balloon.wav"
    Case Else:              fName = vbNullString
    End Select

    GetSoundFileName = fName
End Function

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X