J'ai ces très longs calculs dans Excel. Je voudrais détourner mon attention de l'écran et faire quelque chose à mon bureau, mais être alerté lorsque le calcul est terminé.
Des idées?
J'ai ces très longs calculs dans Excel. Je voudrais détourner mon attention de l'écran et faire quelque chose à mon bureau, mais être alerté lorsque le calcul est terminé.
Des idées?
Réponses:
OK, quelque chose à essayer (les instructions supposent qu'Excel 2007 ou plus récent):
.XLSM
).yourbook.xlsm
) et choisissez Insérer → Module.Dans le module, collez cet extrait:
Sub Auto_Open()
Application.OnKey "{F9}", "F9Handler"
End Sub
Cela entraînera la réaffectation de la touche F9 à chaque ouverture du SS. Lorsque vous appuyez sur F9, il s'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 désormais exécuté lorsque vous atteindrez F9. La première ligne exécute le Application.Calculate
(qui est ce que F9 effectue habituellement), puis des bips.
Sauvegardez tout.
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:
Tout comme les autres mentionnés, utilisez la beep
commande en Visual Basic (VB):
Function beepNow()
Beep
End Function
Pour obtenir le codage VB, vous devez obtenir les informations Developer tab
disponibles (voir: Obtenir l'onglet Développeur visible )
Ainsi, lorsque vous modifiez une cellule ou une condition, un bip retentit. Exemple de macro pour appeler le code VBS ci-dessus:=IF(C2<>C3,beepNow(),"")
Alternativement, vous pouvez placer le module dans le SS, vous pouvez le mettre dans votre Personal.xlsb. Cela vous permettrait d'avoir le "bip" à la disposition de tous les art. Pour l'exécuter, modifiez la barre d'outils d'accès rapide ou insérez un bouton / une forme pour cliquer dans votre ss et lui affecter la macro.
La réponse publiée par @ Ƭᴇcʜιᴇ007 est excellente, à une exception près que d'autres ont commentée: la Beep
méthode repose sur votre haut-parleur intégré (et parfois désactivé) au sein de l'ordinateur et n'utilise pas vos haut-parleurs, de sorte que vous n'entendez rien.
Je publie une solution de contournement basée sur cette réponse. S'il y avait moins de contenu, j'aurais plutôt publié un commentaire.
Voici ce que j'utilise pour jouer un son avec VBA sous Windows. Il utilise les haut-parleurs de votre ordinateur normal au lieu du haut-parleur intégré et souvent désactivé accessible avec la Beep
méthode.
Commencez par la réponse de @ Ƭᴇcʜιᴇ007. Modifiez simplement Beep
ceci:
PlaySound sound_Up
Vous pouvez modifier le son en passant sound_Up
à un autre élément de l'énumération SoundType (liste) dans le code ci-dessous, comme sound_Complete
ou 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