Macro excel vers Libreoffice

valttt Messages postés 321 Statut Membre -  
valttt Messages postés 321 Statut Membre -
Bonjour,

J'ai un fichier Facture.xlsm avec une macro VBA (créé sous excel 2010).
Je souhaite arrêter de travailler avec Office et me mettre à utiliser LibreOffice et cela de façon définitive.
La macro de mon fichier permet à chaque ouverture du fichier, d'incrémenter la cellule B12 de 1, et à la fermeture du fichier, de créer un nouveau fichier xlsx avec le numéro incrémenté dans le nom de fichier.
Option Explicit
Private Sub Workbook_Open()
Range("E12") = Range("E12") + 1
ActiveWorkbook.Save
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Chemin As String, Numéro_facture As Integer

Chemin = ActiveWorkbook.Path
Numéro_facture = Range("E12")
Application.DisplayAlerts = False

ActiveWorkbook.SaveAs Filename:= _
Chemin & "\Facture " & Numéro_facture & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

End Sub


J'ai enregistré mon fichier d'origine au format ods.

Quelle est la démarche à suivre pas à pas pour pour obtenir le même résultat qu'avec mon fichier Excel ?
PS: Je n'y connais rien en macro, codes, etc... ;-)

Mil merci pour votre aide.

A voir également:

1 réponse

valttt Messages postés 321 Statut Membre 15
 
J'ai trouvé sur Internet, un site (https://www.business-spreadsheets.com/vba2oo.asp qui propose de convertir les codes VBA vers Basic Office.

Pour commencer, le code obtenu est-il correct ?

Option Explicit
Private Sub Workbook_Open()
Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)("E12") = Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)("E12") + 1
ThisComponent.Save
End Sub
$1.Close(False)(Cancel As Boolean)
Dim Chemin As String, Numéro_facture As Integer
Dim URLStr as String[n]Dim $1 as String[n]GlobalScope.BasicLibraries.LoadLibrary("Tools")[n]URLStr = ThisComponent.getURL()[n]$1 = DirectoryNameoutofPath(URLStr, ""/"")
Numéro_facture = Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)("E12")
Application.DisplayAlerts = False
ThisComponent.SaveAs Filename:= _
Chemin & "\Facture " & Numéro_facture & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub


PS: Je souhaite obtenir la création d'un fichier ODS à la fin, car je ne veux plus de format Excel.

Merci pour votre aide...
0