Fonction excel

Résolu
JACKY -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
je suis à la recherche d'une fonction ou d'une formule, me donnant le nombre d'entrees diiferentes dans une liste:
je mexplique
j'ai un tableau qui me permetde gerer des competitions
dans celuici, je rentre les differents clubs, noms, resultats, etc...
je souhaiterais donc que dans une cellule de mon tableau s'affiche le nombres de clubs ayant participé
merci pour vos reponses
Configuration: Windows XP
Internet Explorer 7.0

10 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Avec une formule matricielle toute simple

    Si tes clubs sont saisi ou seront saisi dans la plage A1 à la cellule A50, tu la mets en surbrillance et insertion/nom/définir, dans la zone de saisie Nom dans le classeur donnes un Nom exemple Clubs

    ensuite tu colles cette formule matricielle dans une cellule

    =SOMME(SI(Cbus<>"";1/NB.SI(Clubs;Clubs)))

    pour valider la formule, dans la barre des formules tu la mets en surbrillance et en même temps tu cliques sur les trois touches Ctrl la touche majuscule et entrée (la touche majuscule shift juste au dessus de Ctrl)

    Si tu fais bien, ta formule aura cette forme {=SOMME(SI(Clubs<>"";1/NB.SI(Clubs;Clubs)))}

    si tu souhaites intégrer le texte Clubs c'est cette formule avant de valider ta matricielle

    =SOMME(SI(Clubs<>"";1/NB.SI(Clubs;Clubs)))&" Clubs"

    Je serai de retour demain

    A+
    1
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Tu ne donnes pas trop de renseignement pour que l'on t'aide, on va faire avec.

    En supposant que colonne A tu rentres les CLUBS, en colonne B les Noms et les résultat en colonne C

    tu peux te servir de la colonne C qui est sensé être vide ou contenir une valeur égale ou supérieure à 0

    Dans ce cas la formule pour compter les valeurs est

    =NBVAL(C:C) pour toute la colonne ou =NBVAL(C2:C20) pour compter la plage C2 à C20

    Si tu souhaites compter les cellules ne contenant aucune saisie la formule est

    =NB.VIDE(C:C) ou =NB.VIDE(C2:C20)

    A+
    0
  3. jackymns Messages postés 7 Statut Membre
     
    BONJOUR ET MERCI POUR TA REPONSE,
    mais ça ne repond pas à ma question:
    dans mon tableau, jai x colones et x lignes chaque ligne correspond à un participant.
    chaque club a plusieurs participant (logique)

    nomx clubA
    nomy clubB
    nomz clubA
    nomr clubC

    dans mon exemple je voudrai trouver nombre club 3

    merci encore
    0
    1. JASON
       
      BONJOUR

      ESSAYE DE FAIRE UN PIVOT TABLE OU TU AURA LE RESULTAT PAR CLUB
      0
  4. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Si tu as maximum huit clubs

    =SI(NB.SI(A1:A20;"clubA")>0;1)+SI(NB.SI(A1:A20;"clubB")>0;1)+SI(NB.SI(A1:A20;"clubC")>0;1)+SI(NB.SI(A1:A20;"clubD")>0;1)&" clubs "

    si tu as plus de huit club, et pas de cellule vide dans ta plage à compter exemple A1 à A20

    =SOMMEPROD(1/NB.SI(A1:A20;A1:A20))& " Clubs"

    A+
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir,

    Une fonction personnalisée (à copier dans module) qui peut te dépanner.
    Dans ton cas il faudrait utiliser la syntaxe suivante :
    =SansDoublon($A$2:$A$14;0;0)
    pour avoir le nbre d'éléments différents dans $A$2:$A$14.

    Function SansDoublon(Source As Range, Rang As Long, Trier As Boolean) As Variant
        ' si rang =0 retourne le nombre d'éléments différents de Source
        ' si rang>0 et trier=0 est retourné nième (rang) élément de la liste sans doublon non triée
        ' si rang>0 et trier=1 est retourné nième (rang) élément de la liste sans doublon triée
        Dim datas() As Variant, tmp As Variant
        Dim i As Long, j As Long, k As Long, nbval As Long
        If Source.Areas.Count > 1 Then Exit Function
        If Source.Columns.Count > 1 Then Exit Function
        If Source.Rows.Count < 2 Then Exit Function
        
        datas() = Source.Value
        dernier = UBound(datas, 1)
        nbval = dernier
        ' effacer doublons
        For i = 1 To dernier - 1
            For j = i + 1 To dernier
                If datas(i, 1) = datas(j, 1) And datas(i, 1) <> "" Then
                    datas(j, 1) = ""
                End If
            Next j
        Next i
        ' éliminer vides
       i = 0
        While i < nbval
            i = i + 1
            If datas(i, 1) = "" Then
                nbval = nbval - 1
                For j = i To nbval
                    datas(j, 1) = datas(j + 1, 1)
                Next j
            End If
        Wend
        If Trier Then
            While Not fini
                fini = True
                For i = 1 To nbval - 1
                    If datas(i, 1) > datas(i + 1, 1) Then
                        tmp = datas(i, 1)
                        datas(i, 1) = datas(i + 1, 1)
                        datas(i + 1, 1) = tmp
                        fini = False
                    End If
                Next i
            Wend
        End If
        If Rang = 0 Then
            SansDoublon = nbval
        ElseIf Rang <= nbval Then
            SansDoublon = datas(Rang, 1)
        Else
            SansDoublon = ""
        End If
    End Function
    


    Si tu ne sais pas l'installer, demande on t'expliquera.

    eric
    0
  7. jackymns Messages postés 7 Statut Membre
     
    ben jusque là je pataugeais, mais là je me noie blup blup
    0
  8. jackymns Messages postés 7 Statut Membre
     
    bonjour mike-31
    merci pour cette formule,
    je ne connaissait pas et je reconnais n'avoir pas tout compris,
    mais ça marche alors merci encore

    eriiic,
    je suis preneur pour la façon d'installer une fonction
    merci
    0
  9. wilfried_42 Messages postés 912 Statut Contributeur 245
     
    Bonjour à tous

    explication sur la formule de Mike31 : =somme(1/nb.si(club;club)) en matricielle

    Formule matricielle : qui travaille sur des matrices :

    nb.si(club;club) va donner le nombre total de pour chaque club (2eme parametre) que l'on trouve dans le 1er parametre
    si tu as 5 clubs de nom identique : il va touver pour le 1er : 5, le 2eme : 5 .......... soit en tout 25
    mais en divisant 1 par chaque valeur trouvée : 1/5 = 0.20 et cela 5 fois : resultat : 1, on retrouve donc bien pour chaque valeur différente le résultat de 1 et ce quelque soit le nombre de fois qu'elle apparait.
    en sommant donc tous les 1, on trouve donc le nombre total d'occurences différentes.

    j'espère avec été clair, j'ai peur de m'embrouiller au fure et à mesure que l'explication avance lol
    0
  10. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Re,

    pour installer une fonction (ou une macro) :
    - clic-droit sur le nom de l'onglet et 'visualiser le code'
    - dans VBA clic-droit sur le projet et 'insertion / module' (une fonction ne se met jamais dans le code d'une feuille)
    - double-clic sur le module pour activer sa feuille de code.
    - coller le code dans la fenetre de droite

    - pour utiliser une fonction personnalisée la saisir avec tout ses parametres dans une cellule comme une fonction d'origine. Ou bien 'insertion / fonction...' catégorie 'personnalisées'.
    - pour appeler une macro : Alt+F8, la sélectionner et valider.

    Pour te faire la main colle
    Function surfaceCercle(r)
        surfaceCercle = 3.14 * r ^ 2
    End Function

    dans un module

    retourne dans ta feuille et saisi :
    =surfaceCercle(11.3)

    eric
    0
  11. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonjour à tous,

    J’émerge, merci Wilfried_42 d’avoir brillamment complété les explications de la matricielle.

    Eriiic est toujours aussi étonnant en VBA

    Jackymns, si tu estime que nous avons répondu à tes attentes, fais le nous savoir que l’on mette le statut de cette discussion en résolu.

    Bon week-end à tous
    0