Bonjour
J'essaie de créer une fonction personnalisée qui utilise Countif sur un tableau structuré, mais je n'arrive pas à trouver la bonne syntaxe
J'ai d'abord écrit
VB:
Function Occupation(Colonne As Range , Nom as String)
Occupation = Application.WorksheetFunction.CountIf(Colonne, Nom)
End Function
je veux l'appliquer à une colonne d'un tableau structuré Tableau1 une cellule A1 contenant le nom "DUPONT"
=Occupation(Tableau1[Nom];A1)
Le résultat est #VALEUR
Dans une macro, le code suivant fonctionne mais je n'arrive pas à le mettre dans une Function !
VB:
[CODE]Sub Macrotest()
Range("G29").Select
Colonne = "Tableau1[Nom]"
ActiveCell.Value = Application.WorksheetFunction.CountIf(Range(Colonne), "DUPONT")
End Sub
Bonsoir.
Je ne perçoit pas l'intérêt de cette fonction par rapport à =NB.SI(Tableau1[Nom];A1)
et je ne vois néanmoins par pourquoi elle ne fonctionne pas.
Joignez un fichier peut être ?
Sans parler de l’intérêt que je ne vois pas trop non plus, une fonction pour le FUN.
NBSI(UneCellTablo, NomOuNumCol, Valeur) où :
UneCellTablo est une référence à une cellule du tableau structuré (n'importe laquelle)
NomOuNumCol est soit le nom de la colonne (en-tête) soit son numéro
Valeur est la valeur dont on compte les occurrences
Le code est dans module1 :
VB:
Function NBSI(UneCellTablo As Range, NomOuNumCol, Valeur)
On Error Resume Next
NBSI = CVErr(xlErrRef)
NBSI = Application.CountIf(UneCellTablo.ListObject.ListColumns(NomOuNumCol).Range, Valeur)
End Function
On peut utiliser la fonction soit dans une feuille excel soit en VBA.