IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

Convertir macro vba en basic pour Calc


Sujet :

OpenOffice & LibreOffice

  1. #1
    Nouveau candidat au Club
    Inscrit en
    F�vrier 2007
    Messages
    6
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2007
    Messages : 6
    Par d�faut Convertir macro vba en basic pour Calc
    Bonjour � tous et toutes,

    J'ai r�cup�r� une macro d�un fichier Excel, et j'ai donc besoin de l'adapter/convertir le code (VBA) en code Basic pour Calc de LibreOffice.

    Le projet initial comportait 2 fichiers*: Beerxcel et Beerxcel_stock_v2
    J�ai renomm� Beerxcel en Beerxcel_LO et j�y ai int�gr� la feuille �*Stock �*de Beerxcel_stock_v2 et l�ai renomm� �*Inventaire - Stock*� car Beerxcel contenait d�j� une feuille nomm�e �*Stock*�

    En cliquant sur le bouton �*Retirer du stock*� sur la feuille Stock cette macro permet:
    1) De mettre � jour l�inventaire sur la feuille �*Inventaire - Stock

    Votre aide serait grandement appr�ci�e.

    Macro en VBA

    [CODE]Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    openWB = IsWorkBookOpen("\Beerxcel_LO_stock_v2.ods")
    If openWB Then
    Set stockWB = Workbooks("\Beerxcel_LO_stock_v2.ods")
    Else
    stockWB_file = ThisWorkbook.Path & "\Beerxcel_LO_stock_v2.ods"
    Set stockWB = Workbooks.Open(Filename:=stockWB_file)
    End If
    Set stockWS = stockWB.Worksheets("Stock")
    For Each cell In stockWS.Range("C6:C32")
    cell.Value = cell.Value - Me.Cells(cell.Row, 6).Value
    Next cell
    If openWB Then
    Else
    stockWB.Save
    stockWB.Close
    End If
    Application.ScreenUpdating = True
    End SUB[CODE]

  2. #2
    Expert confirm�
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    D�cembre 2008
    Messages
    4 251
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 4 251
    Par d�faut
    Hello,
    il manque un / dans la derni�re balise CODE.
    Un ou plusieurs classeurs de test sans donn�es confidentielles en pi�ces jointes seraient les bienvenus pour pouvoir t'aider
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A � 3,25 MHz - RAM 1 Ko - ROM 8 Ko :zen:

  3. #3
    Nouveau candidat au Club
    Inscrit en
    F�vrier 2007
    Messages
    6
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2007
    Messages : 6
    Par d�faut
    Bonjour Jurassic Pork,

    Mer�i de prendre le temps pour mon probl�me.

    Ci-joint le fichier demand�.
    Fichiers attach�s Fichiers attach�s

  4. #4
    Membre exp�riment� Avatar de Am�lie Ladoque
    Inscrit en
    Novembre 2004
    Messages
    295
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 295
    Par d�faut
    Mieux vaut laisser tomber le VBA
    Pour ouvrir un classeur :
    https://openoffice-libreoffice.devel...bleur-existant

  5. #5
    Expert confirm�
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    D�cembre 2008
    Messages
    4 251
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 4 251
    Par d�faut
    Hello,
    delium55, d'apr�s ce que j'ai vu dans ton classeur, c'est un classeur d'origine Excel et dedans il y a des macros en support VBA ce qui fait un gloubi-boulga de macros. Cela me para�t compliqu� de migrer tout le classeur Excel en classeur LibreOffice vu le nombre de macros et de formules. En plus tu veux supprimer le classeur qui est li�e et le remplacer par des feuilles dans ton classeur, mais il y a des formules li�es qu'il faudra aussi adapt�es. Pour avoir quelque chose de propre, il faudrait partir d'un classeur ods sans macro, y ajouter les donn�es et r��crire toutes les macros et cela demande une connaissance assez pouss�e.
    En plus il y a des choses incoh�rentes dans ton classeur :
    1 - La feuille Inventaire - Stock est prot�g�e en �criture -> Comment veux-tu alors la mettre � jour quand tu retires des choses ?
    2 - Dans la feuille stock il n'y a pas les grains qui sont dans dans la feuille Brassage ( ex : Malterie de la rivi�re).
    Si la Feuille Inventaire - Stock n'est pas prot�g�e en �criture voici un code qui met � jour le stock de grains dans l'inventaire en fonction des grains utilis�s pour le brassage :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub Retirer_Grains()
    Dim oDoc As Object,  arrA As Variant, arrInv As Variant, i as Long
    GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        oDoc = CreateScriptService("Calc", ThisComponent)
        ' Récupère les valeurs comme tableaux 
        arrA = oDoc.GetValue("Stock.F6:F32")  'Grains utilisés
        arrInv = oDoc.GetValue("Inventaire - Stock.C6:C32")  'Grains en Stock
     ' Boucle sur chaque élément
        ' Boucle sur chaque ligne
        For i = LBound(arrA) To UBound(arrA)
            If IsNumeric(arrA(i)) And IsNumeric(arrInv(i)) Then
                arrInv(i) = arrInv(i) - arrA(i)
            End If
        Next i
        oDoc.SetArray("Inventaire - Stock.C6",arrInv)  ' C6 est la cellule Cible à partir  de laquelle on va écrire les valeurs (en vertical)
        oDoc.Dispose()
    End Sub
    Ce code utilise la biblioth�que ScriptForge pr�sente dans LibreOffice depuis 7.2. Si la version utilis�e de LibreOffice est plus ancienne ou si c'est OpenOffice qui est utilis�e il faut utiliser un autre code qui sera certainement plus compliqu�.


    Nom : Grains1.png
Affichages : 120
Taille : 59,9 Ko

    Nom : InventaireGrains.png
Affichages : 121
Taille : 44,8 Ko

    sous quel environnement travailles-tu ? Windows ? Linux ? Mac ?

    En tout cas si ton but est de r�aliser des recettes de brassage , il existe un logiciel gratuit avec base de donn�es qui tourne sous windows, linux, mac : c'est brewtarget ( et en plus il existe en traduction fran�aise).

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A � 3,25 MHz - RAM 1 Ko - ROM 8 Ko :zen:

  6. #6
    Nouveau candidat au Club
    Inscrit en
    F�vrier 2007
    Messages
    6
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2007
    Messages : 6
    Par d�faut
    Bonjour Jurassic pork,

    Mer�i beaucoup pour la solution, cela fonctionne parfaitement.

    Question:
    Pour les cellules A15- - C17; est-ce que tu as inscrit les donn�es manuellement ou tu as utiliser des formules?

    Si tu as utilis� des formules, est-ce que ce serait la correspondance de celles-ci (VBA)?
    A15 =SI('file:///K:/Logiciel de brassage/Beerxcel V2_06012024/Beerxcel V2.1 original/Beerxcel_stock.xlsm'#$Stock.A19="";"";'file:///k:/logiciel de brassage/beerxcel v2_06012024/beerxcel v2.1a19))
    B15 =SI('file:///K:/Logiciel de brassage/Beerxcel V2_06012024/Beerxcel V2.1 original/Beerxcel_stock.xlsm'#$Stock.B19="";"";'file:///k:/logiciel de brassage/beerxcel v2_06012024/beerxcel v2.1))
    C15 =SI('file:///K:/Logiciel de brassage/Beerxcel V2_06012024/Beerxcel V2.1 original/Beerxcel_stock.xlsm'#$Stock.C19="";"";'file:///k:/logiciel de brassage/beerxcel v2_06012024/beerxcel v2.1c23c19))

    (BASIC)
    A15 =SI($Inventaire � Stock.A15=$Stock.A15)
    B15 =SI($Inventaire � Stock.B15=$Stock.B15)
    C15 =SI($Inventaire � Stock.C15=$Stock.C15)
    Cela me donne ; Erreur #501

    Mer�i encore pour ton aide.


    salutations,

  7. #7
    Expert confirm�
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    D�cembre 2008
    Messages
    4 251
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 4 251
    Par d�faut
    Citation Envoy� par delium55 Voir le message
    Pour les cellules A15- - C17; est-ce que tu as inscrit les donn�es manuellement ou tu as utiliser des formules?
    Hello,
    Nom : stocks.gif
Affichages : 98
Taille : 551,3 Ko

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A � 3,25 MHz - RAM 1 Ko - ROM 8 Ko :zen:

  8. #8
    Nouveau candidat au Club
    Inscrit en
    F�vrier 2007
    Messages
    6
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2007
    Messages : 6
    Par d�faut
    Bonjour Jurassic Pork,

    C'�tait plus simple que je le pensais.

    Mer�i beaucoup.


    Salutations,

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [Traitement de texte] Convertir macro VBA en basic pour utilisation Writer
    Par kro62940 dans le forum Bureautique
    R�ponses: 1
    Dernier message: 26/03/2021, 16h07
  2. Macro VBA sur Excel pour remplir tableaux Word
    Par cilouu dans le forum Macros et VBA Excel
    R�ponses: 4
    Dernier message: 08/04/2016, 21h00
  3. R�ponses: 7
    Dernier message: 26/02/2015, 16h42
  4. R�ponses: 0
    Dernier message: 03/08/2011, 16h05
  5. R�ponses: 2
    Dernier message: 19/03/2008, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo