Macro enregistrer sous

Ma feuille original étant sous excel, j'avais cru bon de récupérer le code de ma macro qui fessait en sorte que ça enregistrait le fichier comme en utilisant le menu fichier, enregistrer sous, et comme nom, le contenue de 2 cellules précise. Seulement voilà ça ne fonctionne pas, et j'ai parcourru google avec mon problème et rien de bien concret ne m'a aider. À savoir que je ne tient pas apprendre à programmer, dans le sens qu'une fois ce projet terminer, je ne retravaillerai pas vraiment avec, au sens que mes besoins sont limiter à cette fiche.

Ceci est ma macro originale dans Excel:

    Sub Enregistresous()
    info1 = Sheets("Principale").Range("D2")
    info2 = Sheets("Principale").Range("L2")
    enregistre = ActiveWorkbook.Path & "\" & info1 & " - " & info2 & ".xlsm"
    ThisWorkbook.SaveAs (enregistre)
    End Sub

Windows XP pro, OpenOffice version 3.0

Merci infiniement encore une fois!

Seb

PS: Celle-ci est ma dernière question, après mon projet est terminé

-- Dim Aoû 29, 2010 5:28 pm --

En cherchant, j'ai trouvé plus ou moins ce que je cherchais, je l'ai adapté à mes besoin. La seule chose que je n'arrive pas à faire, c'est de sauvegarder le fichier dans le dossier où il se trouve; sachant que se sera sans un dossier sur une clef USB, je ne peut faire de chemin absolu.

Dim oDoc as Object
Dim sD1 as String
Dim sD2 as String
Dim sPathBackupFolder as String

Dim filespec As string
Dim myfilename As String
Dim oFeuille As Object
Dim sNomFeuille As String
oDoc = ThisComponent

sPathBackupFolder = "\\MonServeur\Sauvegarde$\"

oFeuille = oDoc.getCurrentController().getActiveSheet() 'affecte le nom de la feuille active à la variable feuille

sNomFeuille = oFeuille.getName() 'récupère le nom de la feuille

sD1 = oFeuille.GetCellRangeByName("D1").String 'récupère le texte de la cellule D1

sD2 = oFeuille.GetCellRangeByName("D2").String  'récupère le texte de la cellule D2

'copie de sauvegarde avec date
  'Chemin et nom de fichier composé

myfilename = sPathBackupFolder+sD1+"_"+sD2+"_"+Day(Date)+Month(Date)+Year(Date)+"_"+sNomFeuille+".ods"

'Enregistrer sous

dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
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())

Étant donné que la majorité des gens d'ici utilise excel et non Calc, j'ai du chercher ailleur la réponse que je partage avec vous.

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 sPathBackupFolder as String

Dim filespec As string
Dim myfilename As String
Dim oFeuille As Object
Dim sNomFeuille As String
oDoc = ThisComponent

sPathBackupFolder = getFullRep (oDoc.location)

oFeuille = oDoc.getCurrentController().getActiveSheet() 'affecte le nom de la feuille active à la variable feuille

sNomFeuille = oFeuille.getName() 'récupère le nom de la feuille

sG2 = oFeuille.GetCellRangeByName("G2").String 'récupère le texte de la cellule D1

sO2 = oFeuille.GetCellRangeByName("O2").String  'récupère le texte de la cellule D2

'Chemin et nom de fichier composé

myfilename = sPathBackupFolder+sG2+" - "+sO2+".ods"

'Enregistrer sous

dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
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())

End Sub

Sait-on jamais peut-être que se sera utile à d'autre

Rechercher des sujets similaires à "macro enregistrer"