[Calc] Macro non fonctionnelle

Fermé
Maximepierre Messages postés 4 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 8 septembre 2016 - 26 juil. 2016 à 23:51
yclik Messages postés 3593 Date d'inscription vendredi 25 juillet 2014 Statut Membre Dernière intervention 24 avril 2024 - 27 juil. 2016 à 11:06
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.
A voir également:

1 réponse

yclik Messages postés 3593 Date d'inscription vendredi 25 juillet 2014 Statut Membre Dernière intervention 24 avril 2024 1 481
27 juil. 2016 à 11:06
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