Macro Openoffice Calc
Ensuite lorsque j'exécute la macro, rien ne se passe. ESt-ce un problème de fonctionnalité, de langage ou autre...
Merci de votre aide.
Nb: si vous voulez m'envoyer la macro écrite, je serai ravie.
58 réponses
Le problème porte sur une macro enregistrée dans Calc destinée à ajuster la hauteur des lignes, qui ne s’exécute pas après son enregistrement et son lancement. Un intervenant propose d’activer le support VBA (OPTION VBASupport 1) pour permettre l’exécution de code VBA dans OpenOffice, ce qui implique que la macro est potentiellement écrite en VBA. Il est aussi rappelé que les macros ne sont pas aisément transférables entre MS Office et OpenOffice et qu’il faut souvent les reprogrammer en OpenOffice Basic, avec une ressource pédagogique recommandée. En pratique, la solution consiste à développer ou adapter la macro directement en OpenOffice Basic et à la lier à un bouton d’action, plutôt que d’espérer une compatibilité directe avec du VBA sans adaptation.
-
ModérateurSalut,
si tu mets cette option au début de ta macro
OPTION VBASupport 1
le code vba pourra s'exécuter sur ooopenoffice.org ;-)
donc pas besoin d'une conversion-
Bonjour,
J'ai le problème suivant, toute ma macro affiche 'Rem' au début de chaque ligne ? et quand je corrige toutes les lignes sans les 'Rem' et que je réédite la macro tout est revenu comme dans l'exemple si dessous ?
J'ai un fichier "Fabien.XLT"
Merci
Rem Attribute VBA_ModuleType=VBAFormModule
OPTION VBASupport 1
Sub Commande
Rem Private Sub CommandButton6_Click()
Rem
Rem End Sub
Rem
Rem Private Sub CommandButton8_Click()
Rem Sheets("Data").Select
Rem ActiveSheet.Shapes("WordArt 4").Select
Rem Selection.Copy
Rem Sheets("DF").Select
Rem Range("E1").Select
Rem ActiveSheet.Paste
Rem Selection.ShapeRange.IncrementLeft -70.5
Rem Selection.ShapeRange.IncrementTop -8.25
Rem Range("E3").Select
Rem Dim vFichier As String, vChemin As String
Rem vChemin = "d:\FG entreprise\Factures\"
Rem vFichier = vChemin & ("F") & ("_") & ActiveSheet.Range("H1") & ("_") & ActiveSheet.Range("F8")
Rem ActiveWorkbook.SaveAs Filename:=(vFichier)
Rem End Sub
Rem
Rem Private Sub arretroyal_Click()
Rem
Rem End Sub
Rem
Rem Private Sub DEVIS_Click()
Rem Sheets("Data").Select
Rem ActiveSheet.Shapes("WordArt 3").Select
Rem Selection.Copy
Rem Sheets("DF").Select
Rem Range("F1").Select
Rem ActiveSheet.Paste
Rem Selection.ShapeRange.IncrementLeft -76.5
Rem Selection.ShapeRange.IncrementTop -9.75
Rem Selection.ShapeRange.IncrementLeft -3#
Rem Selection.ShapeRange.IncrementTop -0.75
Rem Range("H1:I1").Select
Rem End Sub
Rem
Rem Private Sub devisrenvoyer_Click()
Rem With ActiveSheet.PageSetup
Rem .BlackAndWhite = False
Rem End With
Rem ActiveSheet.PrintOut
Rem With ActiveSheet.PageSetup
Rem .BlackAndWhite = True
Rem End With
Rem ActiveSheet.PrintOut
Rem End Sub
Rem
Rem Private Sub Facture_Click()
Rem Sheets("Data").Select
Rem ActiveSheet.Shapes("WordArt 4").Select
Rem Selection.Copy
Rem Sheets("DF").Select
Rem Range("E1").Select
Rem ActiveSheet.Paste
Rem Selection.ShapeRange.IncrementLeft -35.25
Rem Selection.ShapeRange.IncrementTop -11.25
Rem Range("H1:I1").Select
Rem End Sub
Rem
Rem Private Sub Image1_Click()
Rem
Rem End Sub
Rem
Rem Private Sub print_couleur_bw_Click()
Rem With ActiveSheet.PageSetup
Rem .BlackAndWhite = False
Rem End With
Rem ActiveSheet.PrintOut
Rem With ActiveSheet.PageSetup
Rem .BlackAndWhite = True
Rem End With
Rem ActiveSheet.PrintOut
Rem With ActiveSheet.PageSetup
Rem .BlackAndWhite = False
Rem End With
Rem End Sub
Rem
Rem Private Sub Sfacture_Click()
Rem Dim vFichier As String, vChemin As String
Rem vChemin = "c:\MN entreprise\Factures\"
Rem vFichier = vChemin & ("F") & ("_") & ActiveSheet.Range("H1") & ("_") & ActiveSheet.Range("F8")
Rem ActiveWorkbook.SaveAs Filename:=(vFichier)
Rem End Sub
Rem
Rem Private Sub Svdevis_Click()
Rem Dim vFichier As String, vChemin As String
Rem vChemin = "d:\FG entreprise\Devis\"
Rem vFichier = vChemin & ("D") & ("_") & ActiveSheet.Range("H1") & ("_") & ActiveSheet.Range("F8")
Rem ActiveWorkbook.SaveAs Filename:=(vFichier)
Rem End Sub
Rem
Rem Private Sub TVA21_Click()
Rem ActiveWindow.ScrollRow = 20
Rem Range("G47").Select
Rem Sheets("Data").Select
Rem Range("A4").Select
Rem Selection.Copy
Rem Sheets("DF").Select
Rem ActiveSheet.Paste
Rem Application.CutCopyMode = False
Rem Range("H47:I47").Select
Rem Sheets("Data").Select
Rem Range("B4").Select
Rem Selection.Copy
Rem Sheets("DF").Select
Rem ActiveSheet.Paste
Rem Application.CutCopyMode = False
Rem Sheets("DF").Select
Rem End Sub
Rem
Rem Private Sub TVA6_Click()
Rem Range("G47").Select
Rem Sheets("Data").Select
Rem Range("A3").Select
Rem Selection.Copy
Rem Sheets("DF").Select
Rem ActiveSheet.Paste
Rem Application.CutCopyMode = False
Rem Range("H47:I47").Select
Rem Sheets("Data").Select
Rem Range("B3").Select
Rem Selection.Copy
Rem Sheets("DF").Select
Rem ActiveSheet.Paste
Rem Application.CutCopyMode = False
Rem Range("A48").Select
Rem End Sub
Rem
Rem Private Sub TVACC_Click()
Rem Range("G47").Select
Rem Sheets("Data").Select
Rem Range("A6").Select
Rem Selection.Copy
Rem Sheets("DF").Select
Rem ActiveSheet.Paste
Rem Application.CutCopyMode = False
Rem Range("H47:I47").Select
Rem Sheets("Data").Select
Rem Range("B6").Select
Rem Selection.Copy
Rem Sheets("DF").Select
Rem ActiveSheet.Paste
Rem Application.CutCopyMode = False
Rem Range("B46").Select
Rem Sheets("Data").Select
Rem ActiveSheet.Shapes("AutoShape 1").Select
Rem Selection.Copy
Rem Sheets("DF").Select
Rem ActiveSheet.Paste
Rem Selection.ShapeRange.IncrementLeft 47.25
Rem Selection.ShapeRange.IncrementTop -1.5
Rem Range("A48").Select
Rem End Sub
Rem
Rem Private Sub UserForm_Click()
Rem
Rem End Sub
Rem
End Sub -
bonjour tt le monde!
oui j'ai essayé OPTION VBASupport 1 marche à merveille.
cependant est ce que ça marche pour tt les programmes VB??
merci de votre aide!!
parallelement j'ai une autre question:
est ce que vous pouvez m'aider sur un point particulier qui me bloque énormément.
en fait j'arrive pas à executer pas à pas mes macros (disons que je connai pas du tt comment faire sur open office). si j'appuis sur f8 j'execute une macro(la premiere) mais aprés j'arrive plus à en sortir et à executer les suivantes.
merci de votre attention -
Modérateur@loksSalut,
cependant est ce que ça marche pour tt les programmes VB??
Ne confonds pas VB avec VBA.
Pour la deuxième question il faut un peu plus de détails.
-
-
Re,
Mon probème est que je suis niveau 0 sur le basic de Open Office.org.
Par contre je sais programmer en VBA car je l'ai appris en classe mais jamis le basic de open office.org.
Alors est ce que vous voulez bien aidez s'il vous plait? -
Bonjour lami20j,
J'espere que mon fichier ne t'a pas beaucoup fatigué! -
Re,
Application.Run ("DocAvId") fonctionne bien sur Excel VBA mais elle bug sur OPEn OFFICE VBA
Savez vous pourqoi?
merci -
Re,
Au fait ma fonction ne bug plus sur open office
en effet il fallait déclarer les variables dans la fonction et non à l'exterieur: j'ai tatonné et ça marche maintenant reste à savoir si elle fonctionne partout.
merci de ton aide!! -
Re,
Ok merci!!
Mais en fait c'est xd qui améne le bug. J'ai pensé que la déclaration de variables de dates n'est peut etre la même sous Excel que sous Open? Mais vu que je suis nul en progammation je sais pas trop ce qu'il faut faire? -
ModérateurRe,
Un exemple pour cette partie
c1 = a_y1(xy) c2 = Int((a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj - xw) / 7) c3 = Right(a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj + 999, 3) If c2 = 0 Then If a_y3(xy) = 0 Then c2 = 0 Else c2 = IIf(a_y3(xy) > 3, 52, c2) c1 = IIf(a_y3(xy) > 3, a_y1(xy - 1), c1) End If End If
qui deviensc1 = a_y1(xy) c2 = Int((a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj - xw) / 7) c3 = Right(a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj + 999, 3) If c2 = 0 Then If a_y3(xy) = 0 Then c2 = 0 Else if a_y3(xy) > 3 then 'les valeurs de c1 et c2 change seulement si a_y3(xy) > 3 c2 = 52 c1 = a_y1(xy - 1) End If End I
-
Re,
Sachant que ela fonctionne parfaitement sur Excel VBA ce n'est que sous Open Basic que cela bug au niveau du calcul de xd.
En fait xd est une date mais je la connais pas au début:
attend je te passe ma fonction tu verra: je t'ai mis quelques commentaires
Public ty As String, mois As String, sem As String, ys As String, ysj As String, yj As String, xd As Date
' Fonction de calcul d'interval de temps de 1998 à 2014
' Datecode de la variable xd facultative ( Date system par defaut )
' En année ty="a" ( Type par défaut )
' En année mois ty="amm"
' En semaine ty="ss"
' En année semaine ty="ass"
' En année semaine jour ty="assj"
' En année Jour ty="ajjj"
Public Function datecode(ty, xd)
Dim a_y1, a_y2, a_y3, a_m1, xy, xm, xj, c1, c2
'lettre correspondant à l'année
a_y1 = Array("K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "A")
'année bissextile à 1 sinon 0
a_y2 = Array(0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0)
'1er jour de l'année lundi=0
a_y3 = Array(3, 4, 5, 0, 1, 2, 3, 5, 6, 0, 1, 3, 4)
'ne pas changer correspond au mois
a_m1 = Array(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334)
xd = IIf(IsDate(xd), xd, Date)
xy = Year(xd) - 1998
xm = Month(xd)
xj = Day(xd)
xw = WeekDay(xd, vbMonday)
c1 = a_y1(xy)
c2 = Int((a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj - xw) / 7)
c3 = Right(a_m1(xm - 1) + a_y2(xy) + a_y3(xy) + xj + 999, 3)
If c2 = 0 Then
If a_y3(xy) = 0 Then
c2 = 0
Else
c2 = IIf(a_y3(xy) > 3, 52, c2)
c1 = IIf(a_y3(xy) > 3, a_y1(xy - 1), c1)
End If
End If
mois = Right(Str(xm + 100), 2)
ym = LCase(c1) & mois
c2 = IIf(a_y3(xy) < 4, c2 + 1, c2)
'c1 = IIf(c2 = 53 And a_y3(xy) = 0, a_y1(xy + 1), c1)
'c2 = IIf(c2 = 53 And a_y3(xy) = 0, 1, c2)
sem = Right(Str(c2 + 100), 2)
sem = IIf(sem = "00", "53", sem)
ys = c1 & sem
ysj = ys & xw
yj = LCase(c1) & c3
ty = LCase(ty)
datecode = c1
datecode = IIf(ty = "amm", ym, datecode)
datecode = IIf(ty = "ss", sem, datecode)
datecode = IIf(ty = "ass", ys, datecode)
datecode = IIf(ty = "assj", ysj, datecode)
datecode = IIf(ty = "ajjj", yj, datecode)
End Function
-
ModérateurRe,
je vais le faire un peu plutard si ça ne te pose aucun probléme.
Pas de problèmes.
En fait tu n'as pas besoin de else. Il suffit de tester si xd est date ou pas
Voici deux exemples
xd n'est pas une dateSub date1() Dim xd xd = "salut" If Not IsDate(xd) Then xd = Date End If MsgBox xd End Subxd est une dateSub date2() Dim xd xd = #1/1/2009# If Not IsDate(xd) Then xd = Date End If MsgBox xd End Sub
-
Ok je vais te dire exactement ce qu'il faut faire et vu que tu le regardes ce soir je vais le faire un peu plutard si ça ne te pose aucun probléme.
sinon l'expression IIf tu m'avait di que ça équivaut à
If condition
instruction
else instruction...
mais en fait si je te donne l'expression xd = IIf(IsDate(xd), xd, Date) comment tu le mettrai en if, else... car j'y arrive pas -
ModérateurRe,
Ben, je vais tester à la maison ce soir.
Toutefois tu me dis qu'il y a des macros que je ne pourrai pas exécuter : il faudra me dire lesquelles, comme ça je ne vais pas me casser la tête pour rien.
Tu ne m'as dit non plus l'erreur que tu obtiens.
En fait, tu pourra par exemple me dire exactement (dans l'ordre) ce que tu fais, et où ça coince.
-
Re,
j'espere que tu t'en sors bien. Ce n'est pas un fichier simple à traiter -
en fait moi je les télécharge sur un site intranet malheureusement tu pourra pas le faire car il te faut un mot de passe et je peux pas t'en filer car moi même je n'en dispose pas.
-
Dans DocAv2_DocAv3 execute la macro Sub DocAvR2() en enlevant ou pas les commentaires et ensuite tu peux executer les autres macros si tu a en besoin.
Cependant, il existe des macros que tu ne pourra pas executer car elles sont en lien avc des sites web et des mots de passe donc impossible que ça marche(je n'ai pas acces au mot de passe ,désolais) c'est le cas de toutes les macros contenant des fichiers .jsp -
ModérateurRe,
Encore une chose.
Ces fichiers csv tu les obtiens comment?
-
ModérateurRe,
tu peux essayer d'executer les macros du docAv pas à pas et ensuite tu verras.
Il doit avoir un ordre d'exécution je suppose.
Je vois les modules
DocAv
DocAv1n
DocAv2_DocAv3
etc.
Les modules contiennent des procécures et fonctions.
Les quelles je dois exécuter?! -
Re,
Je viens de te donner une veritable usine à gaz alors tu peux essayer d'executer les macros du docAv pas à pas et ensuite tu verras. Dans les 2 premiers csv il n'ya pas de problemes mais c'est la 3eme qui bug.
Si tu veux plus de détails n'hésites pas! -
troisieme fichier csv http://host01.pipebytes.com/get.php?key=10147654546867
-
ModérateurRe,
Le 3ème fichier ne passe pas.
Il y a une chose que je ne comprends pas.
Tes fichiers CSV ne contient qu'un seul champ.
Je ne vois pas où est le problème.
Pour comprendre ton souci il faut que tu me dises ce que tu fais et aussi me dire les erreurs que tu rencontres. -
http://host01.pipebytes.com/get.php?key=10147654021867
- 1
- 2
- 3