Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
De notre s/Chef à 3 plumes AV
Private Declare Function PlaySound Lib "winmm.dll" _
Alias "PlaySoundA" (ByVal lpszName As String, _
ByVal hModule As Long, ByVal dwFlags As Long) As Long
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000
Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address <> "$A$1" Then Exit Sub
If [zz] = 1 Then jouer_SON
End Sub
Sub jouer_SON()
leSon = "C:WINDOWSMEDIAtada.wav"
Call PlaySound(leSon, 0&, SND_ASYNC Or SND_FILENAME)
End Sub
PS : vérifie/corrige le chemni d'accès au fichier ".wav"
AV
"Chokes" a écrit dans le message de
news:Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
De notre s/Chef à 3 plumes AV
Private Declare Function PlaySound Lib "winmm.dll" _
Alias "PlaySoundA" (ByVal lpszName As String, _
ByVal hModule As Long, ByVal dwFlags As Long) As Long
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000
Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address <> "$A$1" Then Exit Sub
If [zz] = 1 Then jouer_SON
End Sub
Sub jouer_SON()
leSon = "C:WINDOWSMEDIAtada.wav"
Call PlaySound(leSon, 0&, SND_ASYNC Or SND_FILENAME)
End Sub
PS : vérifie/corrige le chemni d'accès au fichier ".wav"
AV
"Chokes" <Chokes@discussions.microsoft.com> a écrit dans le message de
news:2D87EFB3-7BA7-4F58-9181-B50CA58675C7@microsoft.com...
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
De notre s/Chef à 3 plumes AV
Private Declare Function PlaySound Lib "winmm.dll" _
Alias "PlaySoundA" (ByVal lpszName As String, _
ByVal hModule As Long, ByVal dwFlags As Long) As Long
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000
Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address <> "$A$1" Then Exit Sub
If [zz] = 1 Then jouer_SON
End Sub
Sub jouer_SON()
leSon = "C:WINDOWSMEDIAtada.wav"
Call PlaySound(leSon, 0&, SND_ASYNC Or SND_FILENAME)
End Sub
PS : vérifie/corrige le chemni d'accès au fichier ".wav"
AV
"Chokes" a écrit dans le message de
news:Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
"Chokes" a écrit dans le message de
news:
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
"Chokes" <Chokes@discussions.microsoft.com> a écrit dans le message de
news: 2D87EFB3-7BA7-4F58-9181-B50CA58675C7@microsoft.com...
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
"Chokes" a écrit dans le message de
news:
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
Bonjour Chokes;
Oui, c'est possible; l'idéal serait par exemple, d'encoder le fichier à
l'intérieur d'une propriété privée de la collection
CustomDocumentProperties, mais ce type de propriété n'accepte des longueurs
de chaîne que de 255 caractères. Le plus simple est d'encoder le fichier sur
une feuille éventuellement masquée, à condition que ce dernier soit de
taille modeste car comme il faudra le recopier en local sur le disque de
l'utilisateur avant de pouvoir l'utiliser, le temps de recopie pour un
fichier de taille importante risque d'être rédhibitoire. Je pense que la
taille raisonnable du fichier doît être inférieure au nombre de cellules
disponibles dans une colonne (c'est à dire environ 65 536 octets) pour que
cela reste transparent à l'utilisateur (les fichiers de type wav sont
généralement de taille inférieure) sinon, il faudra gérer les lignes et les
colonnes d'une feuille (1 677 7216 cellules) et au delà, gérer plusieurs
feuilles.
Pour encoder le fichier sur la feuille 2 par exemple, tu peux utiliser la
procédure suivante; cette procédure n'étant utilisée qu'une fois, la taille
du fichier n'est pas un problème pour l'encodage:
' Encodage fichier en colonne 1 de la feuille 2
' (la feuille 2 peut être masquée en VeryHidden)
Sub FileImport()
' Chemin complet du fichier binaire
Const sFile2$ = "c:MonFichier.wav"
Dim f&, bArray() As Byte
With ThisWorkbook.Sheets(2)
.Cells.Clear: f = FreeFile
Open sFile2 For Binary Access Read As #f
ReDim bArray(1 To LOF(f))
Get #f, , bArray: Close #f
For f = 1 To UBound(bArray)
.Cells(f, 1) = bArray(f)
Next f
Erase bArray
End With
End Sub
Pour pouvoir utiliser le fichier, tu utilises la procédure évènementielle
liée à l'ouverture du classeur pour recopier en local sur le disque le
fichier encodé précedemment. Le plus simple est d'écrire le fichier dans le
même répertoire que le classeur qui le contient.
Dans le module ThisWorkbook:
Private Sub Workbook_Open()
If FileExport("Fichier.wav") Then
' Ici le reste de ton code
' ...
End If
End Sub
' Exportation sur disque avant utilisation
Private Function FileExport(ByVal iFile$) As Boolean
On Error GoTo 1
Dim f&, Buffer$
With ThisWorkbook.Sheets(2)
For f = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
Buffer = Buffer & Chr(.Cells(f, 1))
Next f
End With
f = FreeFile
Open ThisWorkbook.Path & "" & iFile For Output As #f
Print #f, Buffer: Close #f: Buffer = ""
FileExport = True
1: Exit Function
End Function
Et tu utilises la procédure évènementielle liée à la fermeture du classeur
pour détruire le fichier crée:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Kill ThisWorkbook.Path & "Click.wav"
End Sub
MP
"Chokes" a écrit dans le message de news:Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
Bonjour Chokes;
Oui, c'est possible; l'idéal serait par exemple, d'encoder le fichier à
l'intérieur d'une propriété privée de la collection
CustomDocumentProperties, mais ce type de propriété n'accepte des longueurs
de chaîne que de 255 caractères. Le plus simple est d'encoder le fichier sur
une feuille éventuellement masquée, à condition que ce dernier soit de
taille modeste car comme il faudra le recopier en local sur le disque de
l'utilisateur avant de pouvoir l'utiliser, le temps de recopie pour un
fichier de taille importante risque d'être rédhibitoire. Je pense que la
taille raisonnable du fichier doît être inférieure au nombre de cellules
disponibles dans une colonne (c'est à dire environ 65 536 octets) pour que
cela reste transparent à l'utilisateur (les fichiers de type wav sont
généralement de taille inférieure) sinon, il faudra gérer les lignes et les
colonnes d'une feuille (1 677 7216 cellules) et au delà, gérer plusieurs
feuilles.
Pour encoder le fichier sur la feuille 2 par exemple, tu peux utiliser la
procédure suivante; cette procédure n'étant utilisée qu'une fois, la taille
du fichier n'est pas un problème pour l'encodage:
' Encodage fichier en colonne 1 de la feuille 2
' (la feuille 2 peut être masquée en VeryHidden)
Sub FileImport()
' Chemin complet du fichier binaire
Const sFile2$ = "c:MonFichier.wav"
Dim f&, bArray() As Byte
With ThisWorkbook.Sheets(2)
.Cells.Clear: f = FreeFile
Open sFile2 For Binary Access Read As #f
ReDim bArray(1 To LOF(f))
Get #f, , bArray: Close #f
For f = 1 To UBound(bArray)
.Cells(f, 1) = bArray(f)
Next f
Erase bArray
End With
End Sub
Pour pouvoir utiliser le fichier, tu utilises la procédure évènementielle
liée à l'ouverture du classeur pour recopier en local sur le disque le
fichier encodé précedemment. Le plus simple est d'écrire le fichier dans le
même répertoire que le classeur qui le contient.
Dans le module ThisWorkbook:
Private Sub Workbook_Open()
If FileExport("Fichier.wav") Then
' Ici le reste de ton code
' ...
End If
End Sub
' Exportation sur disque avant utilisation
Private Function FileExport(ByVal iFile$) As Boolean
On Error GoTo 1
Dim f&, Buffer$
With ThisWorkbook.Sheets(2)
For f = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
Buffer = Buffer & Chr(.Cells(f, 1))
Next f
End With
f = FreeFile
Open ThisWorkbook.Path & "" & iFile For Output As #f
Print #f, Buffer: Close #f: Buffer = ""
FileExport = True
1: Exit Function
End Function
Et tu utilises la procédure évènementielle liée à la fermeture du classeur
pour détruire le fichier crée:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Kill ThisWorkbook.Path & "Click.wav"
End Sub
MP
"Chokes" <Chokes@discussions.microsoft.com> a écrit dans le message de news:
2D87EFB3-7BA7-4F58-9181-B50CA58675C7@microsoft.com...
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
Bonjour Chokes;
Oui, c'est possible; l'idéal serait par exemple, d'encoder le fichier à
l'intérieur d'une propriété privée de la collection
CustomDocumentProperties, mais ce type de propriété n'accepte des longueurs
de chaîne que de 255 caractères. Le plus simple est d'encoder le fichier sur
une feuille éventuellement masquée, à condition que ce dernier soit de
taille modeste car comme il faudra le recopier en local sur le disque de
l'utilisateur avant de pouvoir l'utiliser, le temps de recopie pour un
fichier de taille importante risque d'être rédhibitoire. Je pense que la
taille raisonnable du fichier doît être inférieure au nombre de cellules
disponibles dans une colonne (c'est à dire environ 65 536 octets) pour que
cela reste transparent à l'utilisateur (les fichiers de type wav sont
généralement de taille inférieure) sinon, il faudra gérer les lignes et les
colonnes d'une feuille (1 677 7216 cellules) et au delà, gérer plusieurs
feuilles.
Pour encoder le fichier sur la feuille 2 par exemple, tu peux utiliser la
procédure suivante; cette procédure n'étant utilisée qu'une fois, la taille
du fichier n'est pas un problème pour l'encodage:
' Encodage fichier en colonne 1 de la feuille 2
' (la feuille 2 peut être masquée en VeryHidden)
Sub FileImport()
' Chemin complet du fichier binaire
Const sFile2$ = "c:MonFichier.wav"
Dim f&, bArray() As Byte
With ThisWorkbook.Sheets(2)
.Cells.Clear: f = FreeFile
Open sFile2 For Binary Access Read As #f
ReDim bArray(1 To LOF(f))
Get #f, , bArray: Close #f
For f = 1 To UBound(bArray)
.Cells(f, 1) = bArray(f)
Next f
Erase bArray
End With
End Sub
Pour pouvoir utiliser le fichier, tu utilises la procédure évènementielle
liée à l'ouverture du classeur pour recopier en local sur le disque le
fichier encodé précedemment. Le plus simple est d'écrire le fichier dans le
même répertoire que le classeur qui le contient.
Dans le module ThisWorkbook:
Private Sub Workbook_Open()
If FileExport("Fichier.wav") Then
' Ici le reste de ton code
' ...
End If
End Sub
' Exportation sur disque avant utilisation
Private Function FileExport(ByVal iFile$) As Boolean
On Error GoTo 1
Dim f&, Buffer$
With ThisWorkbook.Sheets(2)
For f = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
Buffer = Buffer & Chr(.Cells(f, 1))
Next f
End With
f = FreeFile
Open ThisWorkbook.Path & "" & iFile For Output As #f
Print #f, Buffer: Close #f: Buffer = ""
FileExport = True
1: Exit Function
End Function
Et tu utilises la procédure évènementielle liée à la fermeture du classeur
pour détruire le fichier crée:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Kill ThisWorkbook.Path & "Click.wav"
End Sub
MP
"Chokes" a écrit dans le message de news:Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
Bonjour Michel Pierron,
Juste une petite chose, si je puis me permettre, il n'est pas
obligatoirement nécessaire d'enregistrer le .wav en local pour le jouer.
On peut transférer le contenu de la feuille dans un tableau de Byte et le
jouer directement à partir de la mémoire :
Private Const SND_SYNC = &H0
Private Const SND_LOOP = &H8
Private Const SND_MEMORY = &H4
Private Const SND_NODEFAULT = &H2
Private Declare Function sndPlaySound Lib _
"winmm.dll" Alias "sndPlaySoundA" _
(lpszSoundName As Any, ByVal uFlags As Long) As Long
Private Sub CommandButton1_Click()
Dim r As Long, l As Long
Dim m() As Byte
r = Range("A65536").End(xlUp).Row
ReDim m(0 To r - 1)
For l = 1 To r
m(l - 1) = Cells(l, 1)
Next l
PlaySoundAsByte m()
End Sub
Private Sub PlaySoundAsByte(m() As Byte)
Dim Flags As Long
Flags = SND_NODEFAULT Or SND_MEMORY Or SND_SYNC
sndPlaySound m(0), Flags
End SubBonjour Chokes;
Oui, c'est possible; l'idéal serait par exemple, d'encoder le fichier à
l'intérieur d'une propriété privée de la collection
CustomDocumentProperties, mais ce type de propriété n'accepte des
longueurs de chaîne que de 255 caractères. Le plus simple est d'encoder
le fichier sur une feuille éventuellement masquée, à condition que ce
dernier soit de taille modeste car comme il faudra le recopier en local
sur le disque de l'utilisateur avant de pouvoir l'utiliser, le temps de
recopie pour un fichier de taille importante risque d'être rédhibitoire.
Je pense que la taille raisonnable du fichier doît être inférieure au
nombre de cellules disponibles dans une colonne (c'est à dire environ 65
536 octets) pour que cela reste transparent à l'utilisateur (les fichiers
de type wav sont généralement de taille inférieure) sinon, il faudra
gérer les lignes et les colonnes d'une feuille (1 677 7216 cellules) et
au delà, gérer plusieurs feuilles.
Pour encoder le fichier sur la feuille 2 par exemple, tu peux utiliser la
procédure suivante; cette procédure n'étant utilisée qu'une fois, la
taille du fichier n'est pas un problème pour l'encodage:
' Encodage fichier en colonne 1 de la feuille 2
' (la feuille 2 peut être masquée en VeryHidden)
Sub FileImport()
' Chemin complet du fichier binaire
Const sFile2$ = "c:MonFichier.wav"
Dim f&, bArray() As Byte
With ThisWorkbook.Sheets(2)
.Cells.Clear: f = FreeFile
Open sFile2 For Binary Access Read As #f
ReDim bArray(1 To LOF(f))
Get #f, , bArray: Close #f
For f = 1 To UBound(bArray)
.Cells(f, 1) = bArray(f)
Next f
Erase bArray
End With
End Sub
Pour pouvoir utiliser le fichier, tu utilises la procédure évènementielle
liée à l'ouverture du classeur pour recopier en local sur le disque le
fichier encodé précedemment. Le plus simple est d'écrire le fichier dans
le même répertoire que le classeur qui le contient.
Dans le module ThisWorkbook:
Private Sub Workbook_Open()
If FileExport("Fichier.wav") Then
' Ici le reste de ton code
' ...
End If
End Sub
' Exportation sur disque avant utilisation
Private Function FileExport(ByVal iFile$) As Boolean
On Error GoTo 1
Dim f&, Buffer$
With ThisWorkbook.Sheets(2)
For f = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
Buffer = Buffer & Chr(.Cells(f, 1))
Next f
End With
f = FreeFile
Open ThisWorkbook.Path & "" & iFile For Output As #f
Print #f, Buffer: Close #f: Buffer = ""
FileExport = True
1: Exit Function
End Function
Et tu utilises la procédure évènementielle liée à la fermeture du
classeur pour détruire le fichier crée:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Kill ThisWorkbook.Path & "Click.wav"
End Sub
MP
"Chokes" a écrit dans le message de
news:Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
--
Cordialement,
Jacques.
Bonjour Michel Pierron,
Juste une petite chose, si je puis me permettre, il n'est pas
obligatoirement nécessaire d'enregistrer le .wav en local pour le jouer.
On peut transférer le contenu de la feuille dans un tableau de Byte et le
jouer directement à partir de la mémoire :
Private Const SND_SYNC = &H0
Private Const SND_LOOP = &H8
Private Const SND_MEMORY = &H4
Private Const SND_NODEFAULT = &H2
Private Declare Function sndPlaySound Lib _
"winmm.dll" Alias "sndPlaySoundA" _
(lpszSoundName As Any, ByVal uFlags As Long) As Long
Private Sub CommandButton1_Click()
Dim r As Long, l As Long
Dim m() As Byte
r = Range("A65536").End(xlUp).Row
ReDim m(0 To r - 1)
For l = 1 To r
m(l - 1) = Cells(l, 1)
Next l
PlaySoundAsByte m()
End Sub
Private Sub PlaySoundAsByte(m() As Byte)
Dim Flags As Long
Flags = SND_NODEFAULT Or SND_MEMORY Or SND_SYNC
sndPlaySound m(0), Flags
End Sub
Bonjour Chokes;
Oui, c'est possible; l'idéal serait par exemple, d'encoder le fichier à
l'intérieur d'une propriété privée de la collection
CustomDocumentProperties, mais ce type de propriété n'accepte des
longueurs de chaîne que de 255 caractères. Le plus simple est d'encoder
le fichier sur une feuille éventuellement masquée, à condition que ce
dernier soit de taille modeste car comme il faudra le recopier en local
sur le disque de l'utilisateur avant de pouvoir l'utiliser, le temps de
recopie pour un fichier de taille importante risque d'être rédhibitoire.
Je pense que la taille raisonnable du fichier doît être inférieure au
nombre de cellules disponibles dans une colonne (c'est à dire environ 65
536 octets) pour que cela reste transparent à l'utilisateur (les fichiers
de type wav sont généralement de taille inférieure) sinon, il faudra
gérer les lignes et les colonnes d'une feuille (1 677 7216 cellules) et
au delà, gérer plusieurs feuilles.
Pour encoder le fichier sur la feuille 2 par exemple, tu peux utiliser la
procédure suivante; cette procédure n'étant utilisée qu'une fois, la
taille du fichier n'est pas un problème pour l'encodage:
' Encodage fichier en colonne 1 de la feuille 2
' (la feuille 2 peut être masquée en VeryHidden)
Sub FileImport()
' Chemin complet du fichier binaire
Const sFile2$ = "c:MonFichier.wav"
Dim f&, bArray() As Byte
With ThisWorkbook.Sheets(2)
.Cells.Clear: f = FreeFile
Open sFile2 For Binary Access Read As #f
ReDim bArray(1 To LOF(f))
Get #f, , bArray: Close #f
For f = 1 To UBound(bArray)
.Cells(f, 1) = bArray(f)
Next f
Erase bArray
End With
End Sub
Pour pouvoir utiliser le fichier, tu utilises la procédure évènementielle
liée à l'ouverture du classeur pour recopier en local sur le disque le
fichier encodé précedemment. Le plus simple est d'écrire le fichier dans
le même répertoire que le classeur qui le contient.
Dans le module ThisWorkbook:
Private Sub Workbook_Open()
If FileExport("Fichier.wav") Then
' Ici le reste de ton code
' ...
End If
End Sub
' Exportation sur disque avant utilisation
Private Function FileExport(ByVal iFile$) As Boolean
On Error GoTo 1
Dim f&, Buffer$
With ThisWorkbook.Sheets(2)
For f = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
Buffer = Buffer & Chr(.Cells(f, 1))
Next f
End With
f = FreeFile
Open ThisWorkbook.Path & "" & iFile For Output As #f
Print #f, Buffer: Close #f: Buffer = ""
FileExport = True
1: Exit Function
End Function
Et tu utilises la procédure évènementielle liée à la fermeture du
classeur pour détruire le fichier crée:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Kill ThisWorkbook.Path & "Click.wav"
End Sub
MP
"Chokes" <Chokes@discussions.microsoft.com> a écrit dans le message de
news: 2D87EFB3-7BA7-4F58-9181-B50CA58675C7@microsoft.com...
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
--
Cordialement,
Jacques.
Bonjour Michel Pierron,
Juste une petite chose, si je puis me permettre, il n'est pas
obligatoirement nécessaire d'enregistrer le .wav en local pour le jouer.
On peut transférer le contenu de la feuille dans un tableau de Byte et le
jouer directement à partir de la mémoire :
Private Const SND_SYNC = &H0
Private Const SND_LOOP = &H8
Private Const SND_MEMORY = &H4
Private Const SND_NODEFAULT = &H2
Private Declare Function sndPlaySound Lib _
"winmm.dll" Alias "sndPlaySoundA" _
(lpszSoundName As Any, ByVal uFlags As Long) As Long
Private Sub CommandButton1_Click()
Dim r As Long, l As Long
Dim m() As Byte
r = Range("A65536").End(xlUp).Row
ReDim m(0 To r - 1)
For l = 1 To r
m(l - 1) = Cells(l, 1)
Next l
PlaySoundAsByte m()
End Sub
Private Sub PlaySoundAsByte(m() As Byte)
Dim Flags As Long
Flags = SND_NODEFAULT Or SND_MEMORY Or SND_SYNC
sndPlaySound m(0), Flags
End SubBonjour Chokes;
Oui, c'est possible; l'idéal serait par exemple, d'encoder le fichier à
l'intérieur d'une propriété privée de la collection
CustomDocumentProperties, mais ce type de propriété n'accepte des
longueurs de chaîne que de 255 caractères. Le plus simple est d'encoder
le fichier sur une feuille éventuellement masquée, à condition que ce
dernier soit de taille modeste car comme il faudra le recopier en local
sur le disque de l'utilisateur avant de pouvoir l'utiliser, le temps de
recopie pour un fichier de taille importante risque d'être rédhibitoire.
Je pense que la taille raisonnable du fichier doît être inférieure au
nombre de cellules disponibles dans une colonne (c'est à dire environ 65
536 octets) pour que cela reste transparent à l'utilisateur (les fichiers
de type wav sont généralement de taille inférieure) sinon, il faudra
gérer les lignes et les colonnes d'une feuille (1 677 7216 cellules) et
au delà, gérer plusieurs feuilles.
Pour encoder le fichier sur la feuille 2 par exemple, tu peux utiliser la
procédure suivante; cette procédure n'étant utilisée qu'une fois, la
taille du fichier n'est pas un problème pour l'encodage:
' Encodage fichier en colonne 1 de la feuille 2
' (la feuille 2 peut être masquée en VeryHidden)
Sub FileImport()
' Chemin complet du fichier binaire
Const sFile2$ = "c:MonFichier.wav"
Dim f&, bArray() As Byte
With ThisWorkbook.Sheets(2)
.Cells.Clear: f = FreeFile
Open sFile2 For Binary Access Read As #f
ReDim bArray(1 To LOF(f))
Get #f, , bArray: Close #f
For f = 1 To UBound(bArray)
.Cells(f, 1) = bArray(f)
Next f
Erase bArray
End With
End Sub
Pour pouvoir utiliser le fichier, tu utilises la procédure évènementielle
liée à l'ouverture du classeur pour recopier en local sur le disque le
fichier encodé précedemment. Le plus simple est d'écrire le fichier dans
le même répertoire que le classeur qui le contient.
Dans le module ThisWorkbook:
Private Sub Workbook_Open()
If FileExport("Fichier.wav") Then
' Ici le reste de ton code
' ...
End If
End Sub
' Exportation sur disque avant utilisation
Private Function FileExport(ByVal iFile$) As Boolean
On Error GoTo 1
Dim f&, Buffer$
With ThisWorkbook.Sheets(2)
For f = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
Buffer = Buffer & Chr(.Cells(f, 1))
Next f
End With
f = FreeFile
Open ThisWorkbook.Path & "" & iFile For Output As #f
Print #f, Buffer: Close #f: Buffer = ""
FileExport = True
1: Exit Function
End Function
Et tu utilises la procédure évènementielle liée à la fermeture du
classeur pour détruire le fichier crée:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Kill ThisWorkbook.Path & "Click.wav"
End Sub
MP
"Chokes" a écrit dans le message de
news:Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
--
Cordialement,
Jacques.
Bonjour Chokes,
On peut également utiliser OleObjects. Pour insérer le .wav dans une
feuille (que l'on peut cacher ensuite) :
Insertion => Objet... => Séléctionner "Son wave"
Basculer sur l'onglet "Créer à partir du fichier" => Parcourir
ou indiquer le chemin, puis valider.
Pour jouer le wav :
Sheets("Feuil1").OLEObjects(1).Verb Verb:=xlPrimary
OK sous Ecxel 2003. Indépendamment de la taille du classeur, il n'y a
pas de limite de taille.
http://cjoint.com/data/einkotNNCu.htmBonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
--
Cordialement,
Jacques.
Bonjour Chokes,
On peut également utiliser OleObjects. Pour insérer le .wav dans une
feuille (que l'on peut cacher ensuite) :
Insertion => Objet... => Séléctionner "Son wave"
Basculer sur l'onglet "Créer à partir du fichier" => Parcourir
ou indiquer le chemin, puis valider.
Pour jouer le wav :
Sheets("Feuil1").OLEObjects(1).Verb Verb:=xlPrimary
OK sous Ecxel 2003. Indépendamment de la taille du classeur, il n'y a
pas de limite de taille.
http://cjoint.com/data/einkotNNCu.htm
Bonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
--
Cordialement,
Jacques.
Bonjour Chokes,
On peut également utiliser OleObjects. Pour insérer le .wav dans une
feuille (que l'on peut cacher ensuite) :
Insertion => Objet... => Séléctionner "Son wave"
Basculer sur l'onglet "Créer à partir du fichier" => Parcourir
ou indiquer le chemin, puis valider.
Pour jouer le wav :
Sheets("Feuil1").OLEObjects(1).Verb Verb:=xlPrimary
OK sous Ecxel 2003. Indépendamment de la taille du classeur, il n'y a
pas de limite de taille.
http://cjoint.com/data/einkotNNCu.htmBonsoir toutes et tous
J'ai téléchargé un son wave que je souhaiterai encoder
pour l'inclure dans une macro xl.
Qq un peut il me renseigner à ce sujet
Merci
--
Cordialement,
Jacques.