[Résolu] [Calc] Choix de CSV et import dans la feuille

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Avatar de l’utilisateur
Fredox
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 28 oct. 2006 13:55

[Résolu] [Calc] Choix de CSV et import dans la feuille

Message par Fredox »

Bonjour, je reprend le fil de SCHMITTclaude, ( http://user.services.openoffice.org/fr/ ... f=8&t=9525 ) il est résolu, mais j'aimerai savoir si il est possible de modifié la macro de façon à choisir le fichier CSV à importer (comme pour ouvrir un document via une boîte de sélection de fichiers) ?

Car moi j'ai cette macro qui me permet d'ouvrir un fichier mais dans un nouveau document et non de l'importer dans une feuille.

Code : Tout sélectionner

    Sub CSVOpen

       ' Cette ligne pour sélectionner dans une boîte de dialogue
       sUrl    = BrowseForFile("Sélectionner un bon de commande JETI", "Bon de commande", "d:\Jeti\Bestell", "*.bst")

       ' Cette ligne pour toujours importer le CSV de la même manière
       sFilter = "9,,ANSI,1," ' Tab (Chr(9)) delimiter, no text delimiter, ANSI   coding

       if sFilter <>"" then
          o = loadCSVfromURL(sUrl, sFilter, false)
       endif

    End Sub

    '----- Code classique, plus rien à modifier

    function loadCSVfromURL(sUrl as String, sFilter as String, bHidden as Boolean) as Object
    Dim aProps(2) As New com.sun.star.beans.PropertyValue
    aProps(0).Name  = "FilterName"
    aProps(0).Value = "Text - txt - csv (StarCalc)"
    aProps(1).Name  = "FilterOptions"
    aProps(1).Value = sFilter   
    aProps(2).Name  = "Hidden"
    aProps(2).Value = bHidden
    loadCSVfromURL  = StarDesktop.loadComponentFromURL(sUrl, "_blank", 0, aProps())
    end function

    function BrowseForFile(sTitle as String, sFilterName as String, sStartDirectory as String, sFilter as String) as String
    dim ars
    o=CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
    o.setTitle(sTitle)
    o.appendFilter(  sFilterName & " (" & sFilter & ")", sFilter)
    o.setMultiSelectionMode(false)
    o.setDisplayDirectory(ConvertToUrl(sStartDirectory))

    if o.execute() = com.sun.star.ui.dialogs.ExecutableDialogResults.OK then
      ars = o.getFiles()
      BrowseForFile = ars(UBound(ars))
      else
      BrowseForFile = ""
      endif
    end function


    function GetFilterOptionsFromCSVImportDialog(sUrl) as String
    GetFilterOptionsFromCSVImportDialog = ""

    oSFA = createUNOService ("com.sun.star.ucb.SimpleFileAccess")
    oInputStream = oSFA.openFileRead(sUrl)

    Dim aProps(3) as new com.sun.star.beans.PropertyValue
    aProps(0).Name = "FilterOptions"
    aProps(0).Value = ""
    aProps(1).Name = "URL"
    aProps(1).Value = sUrl
    aProps(2).Name = "FilterName"
    aProps(2).Value = "Text - txt - csv (StarCalc)"
    aProps(3).Name = "InputStream"
    aProps(3).Value = oInputStream

    o = createUnoService("com.sun.star.ui.dialogs.FilterOptionsDialog")
    o.setPropertyValues(aProps())

    if o.execute() = com.sun.star.ui.dialogs.ExecutableDialogResults.OK then
      aPropOut = o.getPropertyValues()
      GetFilterOptionsFromCSVImportDialog = aPropOut(0).Value
      endif
    oInputStream.closeInput()
    end function
Merci
Dernière modification par Fredox le 15 juin 2008 18:26, modifié 2 fois.
Open Office 3.3.0 sous Windows 7
Continu de bricoler sous Calc (mais en net progrès)
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: [Calc] Import CSV dans la feuille active

Message par Pierre-Yves Samyn »

Bonjour

Oui...

Code : Tout sélectionner

        Sub CSVOpen
'************************************
dim PysFeuille as object
dim PysFilter as string, PysOpt as string
dim PysMode as integer
'************************************

           ' Cette ligne pour sélectionner dans une boîte de dialogue
           sUrl    = BrowseForFile("Sélectionner un bon de commande JETI", "Bon de commande", "c:\", "*.csv")

           ' Cette ligne pour toujours importer le CSV de la même manière
           sFilter = "9,,ANSI,1," ' Tab (Chr(9)) delimiter, no text delimiter, ANSI   coding

           if sFilter <>"" then
'              o = loadCSVfromURL(sUrl, sFilter, false)              
'************************************
PysFeuille = thisComponent.sheets().getByName("ARemplacer")

'Paramètres nécessaires à la copie
PysFilter = "Text - txt - csv (StarCalc)"
PysMode = com.sun.star.sheet.SheetLinkMode.NORMAL

'Insertion de la feuille par "lien"
PysFeuille.link(sUrl, "", PysFilter, sFilter, PysMode)

'Déconnection du lien
PysFeuille.setLinkSheetName("") 
PysFeuille.LinkDisplayName
PysFeuille.LinkUrl=""
PysFeuille.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE) 

'************************************              
              
           endif
Avatar de l’utilisateur
Fredox
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 28 oct. 2006 13:55

[Résolu] [Calc] Import CSV dans la feuille active

Message par Fredox »

Super,
Ca marche (vraiment)

Encore une fois merci.
Open Office 3.3.0 sous Windows 7
Continu de bricoler sous Calc (mais en net progrès)
Avatar de l’utilisateur
dybman
NOOuvel adepte
NOOuvel adepte
Messages : 13
Inscription : 05 nov. 2010 13:39

Re: [Résolu] [Calc] Choix de CSV et import dans la feuille

Message par dybman »

Il ne manquerait pas une déclaration de variable ou autre car le code ne fonctionne pas ?

message d'erreur : "Erreur d'execution BASIC. Sous-procédure ou procédure de fonction non définie."
OpenOffice 3.2.1 sous Windows XP
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12219
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Résolu] [Calc] Choix de CSV et import dans la feuille

Message par Bidouille »

Bonjour,

Nous nous devons de verrouiller ce fil de discussion. Nous vous rappelons les règles de ce forum et notamment la n° 7
Un sujet = le problème d'une seule personne

Comme vous avez pu le lire, ce sujet est désormais résolu. Si vous avez également ce problème, c'est que ce dernier est différent. Votre configuration n'est pas la même que celle de l'auteur de ce fil.

Dans ce cas et pour des raisons de lisibilité sur ce forum, nous vous demandons de créer une nouvelle question en rappelant que vous avez le même problème que dans ce fil.

Merci de votre collaboration.