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

XL 2013 NB.SI 3D Plage

Chris401

XLDnaute Accro
Bonjour à tous

Je n'arrive pas à adapter la formule de BOISGONTIER sur ce fichier.
La plage des OUI n'est pas sur une colonne mais sur plusieurs.
Comme dans le fichier, le nom peut se situer sur différentes lignes dans la colonne A.

Macro acceptée bien évidemment.

Bonne journée
Chris

Edit : Nouveau fichier plus représentatif de mon fichier réel
 

Pièces jointes

  • NBSi3D2conditions.xls
    98 KB · Affichages: 49
  • NBSi3D2conditions.xls
    98 KB · Affichages: 49
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : NB.SI 3D Plage

Bonjour Chris,

Un essai avec une fonction personnalisée. Dans un module standard:
VB:
Function compteOccurences(leNom As String, leCode As String)
tabloF = Array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre")
For i = 0 To 11
With Sheets(tabloF(i))
    lig = Application.Match(leNom, .[A:A], 0)
    If Not IsError(lig) Then
        cpt = cpt + Application.CountIf(.Cells(lig, 2).Resize(1, 12), leCode)
    End If
End With
Next i
compteOccurences = cpt
End Function
En B2, tu écris =compteOccurences($A2;B$1) que tu copies à droite.

... à tester ...
 
Dernière édition:

Chris401

XLDnaute Accro
Re : NB.SI 3D Plage

Bonjour Modeste

Merci de ton aide.
J'ai le même retour de valeur dans chaque colonne (11)
Peux-tu voir STP ?

Cordialement
Chris
 

Pièces jointes

  • Capture.JPG
    24.1 KB · Affichages: 36
  • Capture.JPG
    24.1 KB · Affichages: 34

JCGL

XLDnaute Barbatruc
Re : NB.SI 3D Plage

Bonjour à tous,
Salut mon Luc,

Pour un seul Nom....
VB:
Option Explicit

Sub Test()
    Dim CP&, MA&, R&, F&, A&, Sh As Object, Cel As Range, O As Object
    Set O = Feuil2
    CP = 0: MA = 0: R = 0: F = 0: A = 0: O.Range("B2:F10") = vbNullString
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name <> "Recap" Then
            For Each Cel In Sh.Range("A2:M6")
                If Cel = "CP" Then CP = CP + 1
                If Cel = "MA" Then MA = MA + 1
                If Cel = "R" Then R = R + 1
                If Cel = "F" Then F = F + 1
                If Cel = "A" Then A = A + 1
            Next Cel
            O.Range("B2") = CP: O.Range("C2") = MA: O.Range("D2") = R: O.Range("E2") = F: O.Range("F2") = A
        End If
    Next Sh
End Sub

A+ à tous
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : NB.SI 3D Plage

Re,

J'ai collé le code un peu vite (sans utiliser les 2 arguments de la fonction personnalisée) j'ai modifié le code dans mon premier message.

Edit: Salut aussi, mon JC

Attention: j'ai considéré (un peu hâtivement peut-être?) qu'un même nom n'apparaîtrait qu'une seule fois en colonne A de chaque feuille! Me serais-je honteusement fourvoyé?
 
Dernière édition:

Chris401

XLDnaute Accro
Re : NB.SI 3D Plage

Grand merci à tous les 2.
Le code et la fonction retournent les bonnes valeurs dans le fichier exemple.

Je teste sur mon fichier réel et vous fais un retour.

Cordialement
Chris
 

Chris401

XLDnaute Accro
Re : NB.SI 3D Plage

Re

J'ai réussi à adapter sur mon fichier réel.
Question pour Modeste : quand j'ajoute des données dans les feuilles MOIS le calcul ne se fait pas seul. Je dois revalider les formules.
Une solution pour cela ?

Chris
 

JCGL

XLDnaute Barbatruc
Re : NB.SI 3D Plage

Bonjour à tous,

Ajoute : Application.Volatile en ligne 2
VB:
Function CompteOccurences(leNom As String, leCode As String)
    Application.Volatile

A+ à tous
 

Discussions similaires

Réponses
3
Affichages
232
Réponses
3
Affichages
432
Réponses
30
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…