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 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]