Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Fonction VBA utilisant Countif sur un tableau structuré

Villard17

XLDnaute Nouveau
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
[/CODE]


Merci pour votre aide
 

Dranreb

XLDnaute Barbatruc
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 ?
 

mapomme

XLDnaute Barbatruc
Bonsoir à tous,

Sans parler de l’intérêt que je ne vois pas trop non plus, une fonction pour le F U N.

NBSI(UneCellTablo, NomOuNumCol, Valeur) où :
  1. UneCellTablo est une référence à une cellule du tableau structuré (n'importe laquelle)
  2. NomOuNumCol est soit le nom de la colonne (en-tête) soit son numéro
  3. 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.
 

Pièces jointes

  • Villard17- fonction NBSI- v1.xlsm
    22.5 KB · Affichages: 11

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…