[Calc] Macro non fonctionnelle

Maximepierre Messages postés 5 Statut Membre -  
yclik Messages postés 3875 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un problème avec une macro.
Voici le code :
Option VBASupport 1
Option Explicit
Option Base 1

Global oListener As Object  
Global Cellule As Object  
  
  
Sub lancement_origine 
  Cellule = ThisComponent.Sheets(1).GetCellRangeByName("O15") 
  
  oListener = CreateUnoListener( "Classeur_" , "com.sun.star.util.XModifyListener" )  
  Cellule.addmodifylistener(olistener)  
End Sub  
  
  
Sub Classeur_Modified(oEvent) 

  Range("Q15") = "Sans métier, Glandeur"
  Range("u4") = 0
  Range("U13") = 20
  
End Sub 
  
  
Sub Classeur_Disposing(oEvent)  
End Sub


Voici ce que la macro devrait faire : lorsque l'on modifie la cellule O15 de la deuxième feuille, la valeur de la cellule Q15 est changée en "Sans métier, Glandeur", celle de la cellule U4 est changée en 0 et celle de la cellule U13 est changée en 20.

Pour information, j'utilise LibreOffice 5.1.4 sous Windows 10.

1 réponse

  1. yclik Messages postés 3875 Date d'inscription   Statut Membre Dernière intervention   1 611
     
    Bonjour
    Une proposition ci dessous
    en associant la macro à l'évènement feuille
    Positionner le pointeur sur le nom de l'onglet
    clik droit>Evènement de la Feuille
    sélectionner Contenu modifié et associer la macro

    sub ModifO15
    ' but :modif O15 de la deuxième feuille, Q15 ="Sans métier, Glandeur",
    'U4 = en 0 et U13 en 20.
    rem variables
    dim document as object
    dim oSheet as object
    ' adresse cellule active
    CelluleActive = ThisComponent.getCurrentSelection
    Dim r as integer
    Dim c as integer
    dim cellQ15 as string
    dim cellU4 as integer
    dim cellU13 as integer

    r=CelluleActive.CellAddress.Row 'adresse ligne modifiée
    c=CelluleActive.CellAddress.Column 'adresse colonne modifiée
    'si cellule modifiée col O (14) lig 15 ((14)
    if c=14 and r=14 then goto miseajour else goto FIN
    miseajour:

    adresseQ15="Q15"
    oSheet = ThisComponent.sheets.GetByName("Feuille2") ' nom de la feuille
    oSheet.getCellRangeByName (adresseQ15).string = ("Sans métier, Glandeur")

    adresseU4="U4"
    oSheet = ThisComponent.sheets.GetByName("Feuille2")
    oSheet.getCellRangeByName (adresseU4).value = 0
    adresseU13="U13"
    oSheet = ThisComponent.sheets.GetByName("Feuille2")
    oSheet.getCellRangeByName (adresseU13).value = 20

    FIN:
    End sub
    0