

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
8 messages in org.openoffice.fr.progRe: [prog] fonction Min et la recherc...| From | Sent On | Attachments |
|---|---|---|
| jamila hafyd | Jun 24, 2006 3:05 am | |
| christianwtd | Jun 24, 2006 5:32 am | |
| jamila hafyd | Jun 26, 2006 3:35 am | |
| Mathias Michel | Jun 26, 2006 4:20 am | |
| jamila hafyd | Jun 26, 2006 4:59 am | |
| Francois Gatto | Jun 26, 2006 3:21 pm | |
| Francois Gatto | Jun 27, 2006 1:08 pm | |
| Francois Gatto | Jun 27, 2006 2:22 pm |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Re: [prog] fonction Min et la recherche sous calc | Actions... |
|---|---|---|
| From: | Francois Gatto (oo...@volcar.org) | |
| Date: | Jun 26, 2006 3:21:05 pm | |
| List: | org.openoffice.fr.prog | |
Bonsoir Jamila,
Je te propose cette idée :
Sub ChercherMinEtColorer() REM Recherche la valeur minimale d'un range REM et met les occurences trouvées en couleur REM ========== Francois Gatto - 2006 ======== REM ======== sous *OpenOffice.org 2.0.2* ======
Dim oDoc As Object, oSheet As Object Dim maZone As Object Dim aValidCols(), aValidLigs() Dim firstCol, lastCol, firstLig, lastLig, jecherche, trouve, result Dim aSplit() As Variant Dim iColX As String, iColY As String 'The i Prefix is for index Dim iLigX As Integer, iLigY As Integer Dim x As Long
oDoc = ThisComponent oSheet = oDoc.Sheets.getByName("Feuille1") Rem ********** determiner la zone de recherche With oSheet 'recupere intervalle des colonnes aValidCols() = .getColumnDescriptions() aValidLigs() = .getRowDescriptions() End With
Rem ### Point 1 du message ###
'litteral de la première colonne de la zone disponible firstCol = aValidCols( LBound( aValidCols() ) 'on explose le litteral pour n'en prendre que la terminaison aSplit() = Split( firstCol, " " ) iColX = aSplit(1) 'litteral de la dernière colonne de la zone disponible lastCol = aValidCols( UBound( aValidCols() ) aSplit() = Split( lastCol, " " ) iColY = aSplit(1) 'litteral de la première ligne de la zone disponible firstLig = aValidLigs( LBound( aValidLigs() ) aSplit() = Split( firstLig, " " ) iLigX = aSplit(1) 'litteral de la dernière ligne de la zone disponible lastLig = aValidLigs( UBound( aValidLigs() ) aSplit() = Split( lastLig, " " ) iLigY = aSplit(1) 'sMsg = "De la " & firstCol & " à la " & lastCol 'sMsg = sMsg & Chr( 10 ) & "De la " & firstLig & " à la " & lastLig 'MsgBox( sMsg, 64, "Range à traiter" )
Rem *********** définition du Range maZone = oSheet.getCellRangeByName( iColX & iLigX & ":" & iColY & iLigY) 'Set the range backcolor yellow maZone.CellBackColor = RGB( 255, 255, 0 )
Rem ********** définition de la recherche jecherche = maZone.CreateSearchDescriptor()
Rem ### Point 3 du message ### 'Si SearchWords = true , seules les occurences complètes 'seront recherchées 'Voir document API sur 'http://api.openoffice.org/docs/common/ref/com/sun/star/util/SearchDescriptor.html#SearchWords jecherche.SearchWords = True
Rem *********** définition de la function Min result = maZone.computeFunction(com.sun.star.sheet.GeneralFunction.MIN) jecherche.SearchString = result trouve = mazone.findAll( jecherche ) For x = 0 To trouve.count-1 'La couleur de fond de la cellule trouvée est mise en rose ;) trouve( x ).CellBackColor = RGB( 255, 200, 255 ) Next End Sub
jamila hafyd wrote:
Bonjour liste
j'essaie de programmer un macro sous calc qui fait la comparaison entre des prix et il me color la valeur minimale dans chaque ligne Le code que j'ai écrit est le suivant Sub chercherminetcolorer()
oDoc = ThisComponent oSheet=oDoc.Sheets.getByName("Feuille1") Rem ********** determiner la zone de rechreche For y = 1 to 100 mazone = oSheet.getCellRangeByName("A" & y & ":D" & y) xzone = "A" & y & ":D" & y if oSheet.getCellRangeByName("A" & y).String = "" then Exit For mazone.CellBackColor = RGB(255,255,255) jecherche = mazone.CreateSearchDescriptor jecherche.SearchString=(MonMin("Feuille1",xx)) trouve = mazone.findAll(jecherche) for x=0 to trouve.count-1 trouve(x).CellBackColor = RGB(255,200,255) next Next End sub Function MonMin(UneFeuille As Variant, xzone As Variant ) as double Dim LaFonc As Object ,LesFeuilles As Object,LaFeuille As Object , LeRange As Object, Result As String LaFonc=createunoservice("com.sun.star.sheet.FunctionAccess") 'Les donnees sources LesFeuilles=ThisComponent.sheets() LaFeuille=LesFeuilles.getbyname("Feuille1") LeRange=LaFeuille.getcellrangebyName(xzone) 'Arguments de la fonction dim Arguments(0) arguments(0)=LeRange result=lafonc.callfunction("MIN",arguments()) MonMin=result End function
Généralement j'ai arrivé au resultat que je veux mais j'ai teois probèlme : 1 _ Comment faire pour faire la recherche dans une zone indetérminé ( seulement dans les lignes remplis) 2 _ Mon macro ne prend pas on considération les chiffres aprés la virgule ( par exemple mon marco ne fait pas la différence entre les deux nombre 120.31 et 120.56 )
Je n'ai, semble-t'il, pas constaté ce problème.
3 _ Si ma valeur minimale est 10 il va me colorer tout les nombre qui contient le chiffre 10) J'éspere que j'etais claire Merci d'avance HAFYD Jamila
J'espère que cela t'apportera un éclairage sur ton problème. J'ai repris ta macro initiale (en tentant tout de même d'en rester le plus proche) pour être ... un peu plus libre ;)
Amitiés à nos amis du Maroc.
-- Francois Gatto







