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 :

Macro exécutée au chargement d'un doc


Sujet :

OpenOffice & LibreOffice

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Macro exécutée au chargement d'un doc
    Bonjour,

    Suite à une perte de fichiers, la récupération de données m'a rendu des fichiers nommés de façon abstraite (file000233.xlsx). J'ai donc besoin de renommer tous les fichiers d'après les valeurs de certaines cellules (nom du client, numéro de facture).
    J'ai une macro qui fonctionne si j'ouvre moi-même les fichiers et que je lance la macro pour chacun d'entre eux.
    Ayant plusieurs milliers de fichiers, j'ai besoin d'exécuter le script sur un dossier entier, ou encore automatiquement à l'ouverture des fichiers.
    Si j'assigne cette même fonction au chargement du document (via outils-personnaliser-événements), j'obtiens au lancement de la macro une erreur 'Erreur d'exécution BASIC. Valeur de propriété incorrecte" à la première ligne, celle de la définition de la fonction.

    La méthode n'est-elle pas bonne, ou dois-je modifier le script pour qu'il fonctionne sur l'événement "chargement du document terminé' ?

    Précision : La macro est enregistrée dans "Mes macros et boîtes de dialogue" et non dans chaque document.

    Merci pour toute aide éventuelle, je suis pauvre en Basic libreOffice.. B-)

    Mon code :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    function getFullRep(sPath As String) As String
    Dim cpt As Integer
    Dim buf As String
    Const SLASH = "/"
       buf = ""
       for cpt = Len(sPath) to 1 step -1
          if Mid(sPath, cpt, 1) = SLASH then
              buf = Left(sPath, cpt)
             exit for
           end if
       next
       getFullRep = buf
    end function
     
    Sub Main
     
    Dim oDoc as Object
    Dim sG2 as String
    Dim sO2 as String
    Dim sO as String
    Dim sPathBackupFolder as String
     
    Dim filespec As string
    Dim laDate As String
    Dim myfilename As String
    Dim oFeuille As Object
    Dim sNomFeuille As String
     
    oDoc = ThisComponent
     
    sPathBackupFolder = getFullRep (oDoc.location)
     
    oFeuille = oDoc.getCurrentController().getActiveSheet()
     
    sNomFeuille = oFeuille.getName()
    laDate = Format(Now(),"YYMMDDhhmmss")
     
    If oFeuille.GetCellRangeByName("G14").String <>"" Then
    sG2 = oFeuille.GetCellRangeByName("G14").String
    sO2 = oFeuille.GetCellRangeByName("A15").String
    	else
    sG2 = oFeuille.GetCellRangeByName("G15").String
    sO2 = oFeuille.GetCellRangeByName("A16").String
    	End If
    sO = Replace(sO2, "Facture N°", "")
     
    'Chemin et nom de fichier composé
    myfilename = sPathBackupFolder+sG2+" - "+sO+" - "+laDate+".ods"
     
    'Enregistrer sous
    dim document   as object
    dim dispatcher as object
     
    ' ----------------------------------------------------------------------
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
     
    ' ----------------------------------------------------------------------
    dim args1(1) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "URL"
    args1(0).Value = ConvertToUrl(myfilename) 'On converti le chemin
    args1(1).Name = "FilterName"
    args1(1).Value = "calc8"
     
    dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
    oDoc.store
    oDoc.close(True)
    End Sub

  2. #2
    Membre averti Avatar de Amélie Ladoque
    Inscrit en
    Novembre 2004
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 257
    Points : 317
    Points
    317
    Par défaut
    Citation Envoyé par fletch Voir le message
    j'obtiens au lancement de la macro une erreur 'Erreur d'exécution BASIC. Valeur de propriété incorrecte" à la première ligne, celle de la définition de la fonction.
    Si la fonction est là pour récupérer le chemin d'une URL sans le fichier, il existe DirectoryNameoutofPath issue de la bibliothèque Tools

    Citation Envoyé par fletch
    la récupération de données m'a rendu des fichiers nommés de façon abstraite (file000233.xlsx). J'ai donc besoin de renommer tous les fichiers d'après les valeurs de certaines cellules (nom du client, numéro de facture).
    Il serait sans doute plus simple de faire cela avec un batch plutôt qu'avec un tableur.

Discussions similaires

  1. Réponses: 7
    Dernier message: 14/05/2008, 11h41
  2. Réponses: 2
    Dernier message: 25/06/2007, 15h05
  3. Macro exécutée sur plusieurs onglets
    Par Aizen64 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/06/2007, 09h59
  4. [Macro]Exécution macro, message Erreur 3441
    Par samca dans le forum IHM
    Réponses: 1
    Dernier message: 25/04/2007, 20h17
  5. Réponses: 9
    Dernier message: 30/05/2006, 19h38

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