Problème script VBA (excel) macro quand je passe sur libre office

Bonjour,

J’ai développé un petit script VBA sur excel. Cependant, je ne travaille plus que sur Libreoffice. Le fichier enregistré sous excel est lu mais ne fonctionne pas sous libreoffice (toutes les fonctions du scripts ne fonctionnent pas).

Je souhaiterai donc écrire mon script mais dans un macro au standard libre office car j’imagine que le langage diffère cependant étant novice je ne sais pas du tout ce qu’il faudrait que je change.

Mon script consiste à créer une liste déroulante dans laquelle je peux venir sélectionner une ou plusieurs valeurs. Si plusieurs valeurs sont sélectionnées, elles se mettent les unes à la suite des autres, séparé par un virgule.

J’ai testé plusieurs choses mais sans résultats avec des erreurs dont celle-ci : Erreur d’exécution BASIC.'91’Variable d’objet non définie. Et cela me surligne cette ligne notamment : Application.EnableEvents = True

J’ai fouilleé un peu le forum mais je n’arrive pas à comprendre quelle alternative je dois utiliser. Et je suis vraiment bloquée. Est-ce que quelqu’un pourrait me donner une piste s’il vous plait ?

Je mets plus bas une copie mon script VBA .

Merci infiniment !

Option VBASupport 1
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Oldvalue As String
    Dim Newvalue As String
    Application.EnableEvents = True
    On Error GoTo Exitsub
    If Not Intersect(Target, Union(Range("J2:J" & Rows.Count), Range("H2:H" & Rows.Count), Range("F2:F" & Rows.Count), Range("L2:X" & Rows.Count))) Is Nothing Then
        If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
            GoTo Exitsub
        Else: If Target.Value = "" Then GoTo Exitsub Else
            Application.EnableEvents = False
            Newvalue = Target.Value
            Application.Undo
            Oldvalue = Target.Value
            If Oldvalue = "" Then
                Target.Value = Newvalue
            Else
                If InStr(1, Oldvalue, Newvalue & ", ") > 0 Then
                   
                    Target.Value = Replace(Oldvalue, Newvalue & ", ", "")
                ElseIf InStr(1, Oldvalue, ", " & Newvalue) > 0 Then
                  
                    Target.Value = Replace(Oldvalue, ", " & Newvalue, "")
                ElseIf InStr(1, Oldvalue, Newvalue) = 0 Then
                    
                    Target.Value = Oldvalue & ", " & Newvalue
                End If
            End If
        End If
    End If
    Application.EnableEvents = True
Exitsub:
    Application.EnableEvents = True
End Sub

Bonjour et bienvenue @Anna_S

ça risque de ne pas suffire pour apprendre le Basic de LibreOffice.

La documentation sur les macros est vaste Information and resources for LibreOffice macros - The Document Foundation Wiki
Ça demandera un peu de temps pour adopter ce langage, sans repères évidents pour passer de l’un à l’autre.

A lire : Forum OpenOffice LibreOffice NeoOffice - [Résolu][Calc] équivalent intersect (VBA sous excel) - (Consulter le sujet)