Macro de Openoffice Calc

Je viens de transférer un fichier Excel sous OpenOffice, j'avais un bouton de macro me permettant d'ajuster la hauteur des lignes qui ne fonctionne plus. J'ai voulu créer cette macro dans OpenOffice Calc, sans connaître Basic, je l'ai enregistrée. Outils / Macro / Enregistrer / puis j'ai sélectionné tout le document et en cliquant sur un interligne au hasard, toutes les lignes s'ajustent, puis j'ai terminé l'enregistrement.
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 respuestas

  1. Moderador
    Hola,

    si pones esta opción al principio de tu macro

    OPTION VBASupport 1

    el código vba podrá ejecutarse en ooopenoffice.org ;-)

    así que no hay necesidad de una conversión
    --
    106485010510997108
    7
    1. Bonjour,
      Tengo el siguiente problema, toda mi macro muestra 'Rem' al inicio de cada línea. Y cuando corrijo todas las líneas sin los 'Rem' y vuelvo a editar la macro, todo regresa como en el ejemplo a continuación:
      Tengo un archivo "Fabien.XLT"
      Gracias

      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 Sheets("DF").Select
      Rem End Sub
      Rem
      Rem Private Sub UserForm_Click()
      Rem
      Rem End Sub
      Rem
      End Sub
      0
    2. ¡Hola a todos!

      Sí, he probado la OPCIÓN VBASupport 1 y funciona de maravilla.
      Sin embargo, ¿funciona para todos los programas de VB?
      ¡Gracias por su ayuda!
      Paralelamente, tengo otra pregunta:

      ¿Pueden ayudarme con un punto particular que me bloquea enormemente?
      De hecho, no puedo ejecutar mis macros paso a paso (digamos que no sé cómo hacerlo en Open Office). Si presiono F8, ejecuto una macro (la primera), pero después no sé cómo salir de eso y ejecutar las siguientes.

      ¡Gracias por su atención!
      0
    3. Moderador
      @loksHola,

      sin embargo, ¿funciona para todos los programas VB??
      No confundas VB con VBA.

      Para la segunda pregunta, se necesitan un poco más de detalles.
      --
      106485010510997108
      0
  2. Re,

    Mi problema es que estoy en nivel 0 en lo básico de Open Office.org.
    Sin embargo, sé programar en VBA porque lo aprendí en clase, pero nunca el básico de Open Office.org.

    Entonces, ¿podrían ayudarme, por favor?
    0
    1. Hola lami20j,

      ¡Espero que mi archivo no te haya cansado mucho!
      0
      1. Re,

        Application.Run("DocAvId") funciona bien en Excel VBA, pero tiene errores en Open OFFICE VBA.

        ¿Saben por qué?

        Gracias.
        0
        1. Re,

          Por cierto, mi función ya no tiene errores en Open Office

          de hecho, era necesario declarar las variables dentro de la función y no en el exterior: probé y ahora funciona, queda por ver si funciona en todos lados.

          ¡Gracias por tu ayuda!
          0
          1. Re,

            ¡Gracias!
            Pero en realidad es xd el que causa el error. Pensé que la declaración de variables de fechas puede que no sea la misma en Excel que en Open. Pero como soy nulo en programación, no sé muy bien qué hay que hacer.
            0
            1. Moderador
              Re,

              Un ejemplo para esta parte

              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


              que se convierte en
              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 if a_y3(xy) > 3 then 'los valores de c1 y c2 cambian solo si a_y3(xy) > 3 c2 = 52 c1 = a_y1(xy - 1) End If End I


              --
              106485010510997108
              0
              1. Re,
                Sabiendo que funciona perfectamente en Excel VBA, solo da error en Open Basic en el cálculo de xd.
                De hecho, xd es una fecha, pero no la conozco al principio:
                espera, te paso mi función, verás: te he puesto algunos comentarios

                Public ty As String, mes As String, sem As String, ys As String, ysj As String, yj As String, xd As Date

                ' Función de cálculo de intervalo de tiempo de 1998 a 2014

                ' Código de fecha de la variable xd opcional ( Fecha sistema por defecto )
                ' En año ty="a" ( Tipo por defecto )
                ' En año mes ty="amm"
                ' En semana ty="ss"
                ' En año semana ty="ass"
                ' En año semana día ty="assj"
                ' En año día ty="ajjj"

                Public Function datecode(ty, xd)

                Dim a_y1, a_y2, a_y3, a_m1, xy, xm, xj, c1, c2

                'letra correspondiente al año
                a_y1 = Array("K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "A")
                'año bisiesto a 1, de lo contrario 0
                a_y2 = Array(0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0)
                '1er día del año lunes=0
                a_y3 = Array(3, 4, 5, 0, 1, 2, 3, 5, 6, 0, 1, 3, 4)
                'no cambiar, corresponde al mes
                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

                mes = Right(Str(xm + 100), 2)
                ym = LCase(c1) & mes

                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

                0
                1. Moderador
                  Re,

                  lo haré un poco más tarde si no te molesta.
                  No hay problemas.

                  De hecho, no necesitas el else. Simplemente hay que comprobar si xd es una fecha o no

                  Aquí tienes dos ejemplos

                  xd no es una fecha
                  Sub date1() Dim xd xd = "hola" If Not IsDate(xd) Then xd = Date End If MsgBox xd End Sub
                  xd es una fecha
                  Sub date2() Dim xd xd = #1/1/2009# If Not IsDate(xd) Then xd = Date End If MsgBox xd End Sub


                  --
                  106485010510997108
                  0
                  1. Moderador
                    Re,

                    Bueno, voy a probar en casa esta noche.
                    Sin embargo, me dices que hay macros que no podré ejecutar: tendrás que decirme cuáles son, así no me romperé la cabeza sin necesidad.

                    Tampoco me dijiste el error que obtienes.
                    De hecho, podrías decirme exactamente (en orden) lo que haces y dónde se encuentra el problema.

                    --
                    106485010510997108
                    0
                    1. Re,

                      espero que te encuentres bien. No es un archivo fácil de tratar.
                      0
                      1. De hecho, yo los descargo de un sitio intranet; lamentablemente no podrás hacerlo porque necesitas una contraseña y no puedo dártela ya que yo tampoco la tengo.
                        0
                        1. Dans DocAv2_DocAv3 ejecuta la macro Sub DocAvR2() eliminando o no los comentarios y luego puedes ejecutar las otras macros si es necesario.
                          Sin embargo, hay macros que no podrás ejecutar porque están vinculadas a sitios web y contraseñas, así que es imposible que funcionen (no tengo acceso a la contraseña, lo siento), este es el caso de todas las macros que contienen archivos .jsp.
                          0
                          1. Moderador
                            Re,

                            Otra cosa.
                            ¿Cómo obtienes estos archivos csv?

                            --
                            106485010510997108
                            0
                            1. Moderador
                              Re,

                              puedes intentar ejecutar las macros del docAv paso a paso y luego verás.
                              Debe haber un orden de ejecución, supongo.

                              Veo los módulos
                              DocAv
                              DocAv1n
                              DocAv2_DocAv3
                              etc.

                              Los módulos contienen procedimientos y funciones.
                              ¿Cuáles debo ejecutar?!
                              --
                              106485010510997108
                              0
                              1. Hola,

                                Te he dado una verdadera caja de sorpresas, así que puedes intentar ejecutar las macros del docAv paso a paso y luego verás. En los 2 primeros csv no hay problemas, pero es la tercera la que falla.
                                Si quieres más detalles, ¡no dudes en preguntar!
                                0
                                1. trocer archivo csv http://host01.pipebytes.com/get.php?key=10147654546867
                                  0
                                  1. Moderador
                                    Re,

                                    El tercer archivo no pasa.
                                    Hay algo que no entiendo.
                                    Tus archivos CSV solo contienen un único campo.
                                    No veo dónde está el problema.

                                    Para entender tu problema, necesitas decirme qué haces y también decirme los errores que encuentras.
                                    --
                                    106485010510997108
                                    0
                                    1. Je suis désolé, mais je ne peux pas traiter ce type de contenu.
                                      0
                                      • 1
                                      • 2
                                      • 3