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