Page 1 sur 1
fonction NB.DIFF dans calc
Publié : 30 sept. 2006 12:14
par terrios
bonjour,
je suis a la recherche d'une fonction equivalente au NB.DIFF de l'extension morefunc d'excel qui permet de compter des éléments (texte, date...) différents dans une plage définie.
cordialement
Publié : 30 sept. 2006 13:51
par Jeff
Bonjour,
A ma connaissance,il n'y a aucune fonction similaire dans OOo,et le pack morefunc n'existe pas pour OOo.
Cependant,quelques personnes sur ce forum ont un niveau assez impressionnant en macro et peut être celà peut se "bricoler" ainsi.
ça éviterai un assemblage de NB.SI avec valeur d'erreur.
Sinon,ta question à été évoquée sur un autre site :
http://permalink.gmane.org/gmane.comp.o ... ench/47696
Publié : 30 sept. 2006 16:26
par MichelXld
bonjour
J'espère que cette fonction (qui ne prend pas en compte tous les cas de figure) pourra t'aider
Code : Tout sélectionner
'NomFeuille: spécifie la feuille contenant la plage à tester.
'Définition de la plage à tester:
' ColDebut: Numéro de la 1ere colonne dans la plage à contrôler
' ColFin: Numéro de la derniere colonne dans la plage à contrôler
' LigDebut: Numéro de la 1ere ligne dans la plage à contrôler
' LigFin: Numéro de la derniere ligne dans la plage à contrôler
'Blancs: Compte les cellules vides si l'argument = true
Function NbDiff_OOo(NomFeuille As String, ColDebut As Integer, _
ColFin As Integer, LigDebut As Integer, LigFin As Integer, Blancs As Boolean) As Integer
Dim Ws As Object, Cellule As Object
Dim Resultat As Variant
Dim Tableau()
Dim J As Integer, K As Integer
Ws = ThisComponent.Sheets(NomFeuille)
NbDiff_OOo = 0
K = 1
For X = ColDebut - 1 To Colfin - 1
For Y = LigDebut - 1 To LigFin - 1
Verif = False
Cellule = Ws.getCellByposition( X , Y )
Resultat = Cellule.getString
If Blancs <> False Or Cellule.Type <> com.sun.star.table.CellContentType.EMPTY Then
If UBound( Tableau ) = -1 Then
ReDim Preserve Tableau(1)
Tableau(1) = Resultat
Else
For J = LBound( Tableau ) To UBound( Tableau )
If Tableau( J ) = Resultat Then
Verif = True
Exit For
End If
Next J
If Verif = False Then
K = K + 1
ReDim Preserve Tableau(K)
Tableau(K) = Resultat
End If
End If
End If
Next Y
Next X
NbDiff_OOo = UBound( Tableau )
End Function
Code : Tout sélectionner
Sub Test
MsgBox NbDiff_OOo("Feuille1" ,1 ,1 ,1 ,10 ,True )
End Sub
michel