Erreur code VBA
Bonjour à tous je suis bien ennuyé par un fichier .xlsm qui "devrait fonctionner", mais j’obtiens l'erreur suivante :
Open sFileName For Binary Lock Read Write As #nFileNum
Ce fichier excel sert à générer des fichiers pour une application : conversion de paramètres midi pour un instrument nommé Omnisphere.
Je suis censé garder un fichier que j'imagine est lié à ce fichier excel, et il devrais générer plusieurs autres fichiers de la même extension ". oxm"
voici la copie du deboger:
Sub GenerateMidiOxFile()
With ActiveSheet
MappingCol = 6
Do 'Loop over all synths
'Step 1: Count number of parameters to map for this synth
MappingLine = 3
NumberOfMappings = 0
Do
If Not IsEmpty(.Cells(MappingLine, MappingCol)) Then
NumberOfMappings = NumberOfMappings + 1
End If
MappingLine = MappingLine + 1
Loop Until IsEmpty(.Cells(MappingLine, 2))
'Step 2: Calculate number of total bytes in MIDIOX file
NumberOfBytes = 16 + 24 * NumberOfMappings
'Step 3: Write Header
nFileNum = FreeFile
sFileName = ThisWorkbook.Path & "\" & .Cells(1, MappingCol) & ".oxm"
Open sFileName For Binary Lock Read Write As #nFileNum
For HeaderLine = 2 To 9
Put #nFileNum, , CByte(Sheets("MIDIOX Format").Cells(HeaderLine, 6))
Next HeaderLine
Put #nFileNum, , CByte(NumberOfMappings)
Put #nFileNum, , CByte(0)
Put #nFileNum, , CByte(6)
Put #nFileNum, , CByte(0)
Put #nFileNum, , CByte(NumberOfBytes And &HFF&) 'LowByte
Put #nFileNum, , CByte(Fix(NumberOfBytes / 256)) 'HighByte
Put #nFileNum, , CByte(0)
Put #nFileNum, , CByte(0)
'Step 4: Write Mappings
MappingLine = 3
Do
If Not IsEmpty(.Cells(MappingLine, MappingCol)) Then
'Mapping Input
Put #nFileNum, , CByte(&HFF&) 'Any MIDI channel
Put #nFileNum, , CByte(4) 'Source Event Type = CC
Put #nFileNum, , CByte(.Cells(MappingLine, Range("CC_IN").Column)) 'Cntrl# Min LowByte
Put #nFileNum, , CByte(0) 'Cntrl# Min HighByte
Put #nFileNum, , CByte(.Cells(MappingLine, Range("CC_IN").Column)) 'Cntrl# Max LowByte
Put #nFileNum, , CByte(0) 'Cntrl# Max HighByte
'Put #nFileNum, , CByte(0) 'Amount Min LowByte
'Put #nFileNum, , CByte(0) 'Amount Min HighByte
'Put #nFileNum, , CByte(127) 'Amount Max LowByte
'Put #nFileNum, , CByte(0) 'Amount Max HighByte
For i = 1 To 4
Put #nFileNum, , CByte(&HFF&) 'HighByte/LowByte Min/Max = don't care = FF
Next i
'Mapping Output
Put #nFileNum, , CByte(&HFF&) 'Any MIDI channel
'Switch between NRPN and CC
If .Cells(2, MappingCol + 1) = "NRPN #" Then
Put #nFileNum, , CByte(8) 'Target Event Type = NRPN
Else
Put #nFileNum, , CByte(4) 'Target Event Type = CC
End If
Put #nFileNum, , CByte(.Cells(MappingLine, MappingCol + 1) And &HFF&) 'NRPN/Cntrl Min LowByte
Put #nFileNum, , CByte(Fix(.Cells(MappingLine, MappingCol + 1) / 256)) 'NRPN/Cntrl Min HighByte
Put #nFileNum, , CByte(.Cells(MappingLine, MappingCol + 1) And &HFF&) 'NRPN/Cntrl Max LowByte
Put #nFileNum, , CByte(Fix(.Cells(MappingLine, MappingCol + 1) / 256)) 'NRPN/Cntrl Max HighByte
Put #nFileNum, , CByte(0) 'Amount Min LowByte
Put #nFileNum, , CByte(0) 'Amount Min HighByte
Put #nFileNum, , CByte(.Cells(MappingLine, MappingCol + 2) And &HFF&) 'Amount Max LowByte
Put #nFileNum, , CByte(Fix(.Cells(MappingLine, MappingCol + 2) / 256)) 'Amount Max HighByte
For i = 1 To 4
Put #nFileNum, , CByte(0)
Next i
End If
MappingLine = MappingLine + 1
Loop Until IsEmpty(.Cells(MappingLine, 2))
'Step 5: Write Ending
For EndLine = 42 To 45
Put #nFileNum, , CByte(Sheets("MIDIOX Format").Cells(EndLine, 6))
Next EndLine
Close #nFileNum
MappingCol = MappingCol + 3
Loop Until IsEmpty(.Cells(1, MappingCol))
End With
End SubIl y a des onglets explicatif sur ce qu'on peu et ne pas faire.
ces deux fichiers (excel et .oxm) doivent se trouver dans le même répertoire, il devrait donc générer des fichiers comme expliqué dans cette vidéo à 10min 12 sec, mais rien à faire :
Peut-être vous pouvez au moins m'éclairer sur le code d'erreur, où cela cloche ??
Je vous remercie de votre attention
Bonne journée ^^
EdIT DAN : suppression "AIDE pour un Inculte" dans titre du sujet
Bonjour
Merci de mettre un titre de sujet explicitant votre demande et de lire ces quelques lignes qui vous aideront dans vos demandes et réponse sur ce forum --> https://forum.excel-pratique.com/excel/a-lire-avant-de-poster-charte-du-forum-et-informations-utiles...
J'ai amendé le titre de votre "Aide pour un inculte"
Cordialement