2012-08-30

Bonsoir tout le monde!
Je reviens avec du NEUF... Étant très têtu, j'ai trouvé la solution au titre de mon fil!
Tout ce que vous m'avez apportez comme aide et comme solution me convenez tout à fait mais je voulais absolument trouver le moyen d'obtenir mon résultat avec un listener sur une plage de cellule!
Churay (coucou) m'avait dit :

Le listener répond sur la cellule modifiée à la main, pas la/les suivante(s) modifiée(s) par formule (par contre il peut réagir aux modifications faites par code).

ça m'a perturbé alors j'ai ouvert la Bible API et aussi lu tous les travaux de Thierry et Pierre-Yves et là j'ai eu un idée c'est bien la première fois d'ailleurs
Je suis parti sur le fait d'écrire un code qui rechercherais la valeur du résultat d'une formule et qui tournerais en boucle. En appliquant cette macro en gestion d'évènement feuille ça devrait le faire! Effectivement, j’obtiens le résultat que je souhaité!
Problème sur une version OpenOffice 3.2 pas de gestion d'évènement, donc pourquoi ne pas mettre ce code dans un listener? Effectivement ça fonctionne à merveille
Voici le code (certes peut-être mal écrit!) mais voici un listener sur une plage de cellule qui intervient sur le résultat d'une formule!

Code:   AgrandirRéduire

Sub Alerte

with thisComponent.Sheets.getByName("Feuille1")
maZone=.getCellRangeByName("C1:D5")
End With

oListener = CreateUnoListener( "Lis_", "com.sun.star.util.XModifyListener" )
maZone.AddModifyListener(oListener)

End Sub

Sub oListenersRemove
' Procédure à appeler pour arrêter le listener
maZone.RemoveModifyListener(oListener)

End Sub

Sub Lis_Disposing
' Procédure nécessaire à l'arrêt du listener même si on n'y fait rien
End Sub

Sub Lis_Modified(oEvent)

Dim monDocument As Object, lesFeuilles As Object
Dim maFeuille As Object, maZone As Object
Dim jeCherche As Object, trouv As Variant

monDocument = ThisComponent
lesFeuilles = monDocument.Sheets
maFeuille = lesFeuilles.getByName("Feuille1")
maZone = maFeuille.getCellRangeByName("C1:D5")
jeCherche = maZone.createSearchDescriptor
with jeCherche
.SearchString = "2"
' rechercher les cellules contenant au moins ce texte
.SearchType = 1
end with
trouv = maZone.findFirst(jeCherche)
Do Until isNull(trouv)
trouv.CellBackColor = RGB(255,0,0)
MsgBox "Perdu changer de chiffre !..."
trouv = maZone.findNext(trouv, jeCherche)
Loop

End Sub

Certes une manière peu conventionnelle mais qui répond à la situation Je joints le fichier et vous remercie tous pour votre aide et votre patience et surtout m'avoir encore une fois d'avancer! Sujet Résolu

Statistiques: Publié par redgbreaker — 30 Août 2012 21:10

Show more