Compter valeurs uniques condition nom+prénom

Aperrix

XLDnaute Nouveau
Bonjour,

Je suis nouveau sur le forum et ce topic est mon premier alors j'espère qu'il ne sera pas de trop mauvaise qualité.

Mon problème :
Je travail sous les ordres d'une Inspectrice de l'Éducation Nationale et elle m'a confié la réalisation d'un tableau de bord sous excel regroupant des états chiffrés sur les écoles, les effectifs d'élèves, les effectifs d'enseignants etc. Pour tout ce qui concerne les élèves, pas de soucis car il était nécessaire de manipuler uniquement des chiffres donc je m'en suis sorti. En revanche je n'arrive pas à trier les enseignant par "Statut" en évitant les doublon (car un enseignant peut figurer dans plusieurs écoles) et en évitant également les enseignants de la même famille (mariés, frère et sœurs, etc).

Je dois donc élaborer une formule qui compte le nombre d'enseignants (admettons directeurs), en vérifiant que le nom de famille soit différent et si le nom de famille est identique, en vérifiant le prénom.
 

Pièces jointes

  • exemple-comptage.xlsx
    17.2 KB · Affichages: 81

Aperrix

XLDnaute Nouveau
Voici l'exemple demandé, il faut ce base sur le critère "Maternelle ou "Élémentaire" ainsi que le secteur pour effectuer le comptage des enseignants et afficher le résultat sur la première feuille (cellules colorées vides).
 

Pièces jointes

  • exemple-comptage-enseignant.xlsx
    29.2 KB · Affichages: 93

gosselien

XLDnaute Barbatruc
Pourquoi ne pas mettre tout les onglets dans un seul en distinguant par la première colonne qui serait le secteur (Condorcet-Feucheres) , la seconde le type (élémentaire ou maternelle) ?
On sait après faire un tcd par école, par type avec des totaux d'élèves, et autres infos contenues dans les colonnes.
Je dis peut être une bêtise ...
 

Aperrix

XLDnaute Nouveau
Pourquoi ne pas mettre tout les onglets dans un seul en distinguant par la première colonne qui serait le secteur (Condorcet-Feucheres) , la seconde le type (élémentaire ou maternelle) ?
On sait après faire un tcd par école, par type avec des totaux d'élèves, et autres infos contenues dans les colonnes.
Je dis peut être une bêtise ...

Il faut que ce soit réutilisable d'une année à l'autre par mon manager qui n'a aucune compétence excel, inclure les Feuil1, Feuil2, etc, est la solution la plus simple. La agit sur la 'feuil1' à 'feuil30', il y a une feuil de renseignement par école.
 

Jocelyn

XLDnaute Barbatruc
Bonjour,

Nous étions parti avec toutes les écoles sur une feuille maintenant sur 29 feuilles a moins de faire sur chacune des feuilles et toujours dans la même cellule la somme des enseignant et ensuite sur une autre feuille la somme des cellules précédentes il va faloir passer par du VBA et la je passe la main car je suis une bille a ce jeu la

Cordialement
 

gosselien

XLDnaute Barbatruc
Parce que de base j'ai une feuille par école et j'ai fait une feuille récap avec chaque écoles à la suite classées par secteur mais je ne peux pas m'en servir pour compter les enseignants par secteur :x
Si tu as une feuille de recap; c'est avec celle-là (ou une copie quasi-identique) que c'est peut être possible de compter les enseignants ???
Faire le total des 1/2 (temps) enseignants dans une feuille, tu as vu que c'est relativement facile, par contre aller chercher l'autre 1/2 sur autre feuille, par formule je ne sais pas faire...
Tu peux déjà montrer cette feuille récap :)
P.
 

gosselien

XLDnaute Barbatruc
Bonjour Aperrix, Jocelyn,

Si un enseignant est à la feuille 2 et à la feuille 12 il sera donc compté pour 2 x 1/2 (donc 1 personne) ? c'est ça ?
Si oui, malgré le manager qui ne connait rien, je mettrais tous dans un seul onglet, et s'il le faut en distinguant les établissements par couleur ...

Parce que de base j'ai une feuille par école et j'ai fait une feuille récap avec chaque écoles à la suite classées par secteur mais je ne peux pas m'en servir pour compter les enseignants par secteur :x
On ne peut pas partir de cette feuille là ?
 

klin89

XLDnaute Accro
Bonsoir le fil, :)

Avec le fichier du post #16#
VB:
Option Explicit
Sub test()
Dim a, b(), i As Long, n As Long, t As Long, ecole As String, secteur As String
Dim ws As Worksheet, dico1 As Object, dico2 As Object
    Set dico1 = CreateObject("Scripting.Dictionary")
    dico1.CompareMode = 1
    Set dico2 = CreateObject("Scripting.Dictionary")
    dico2.CompareMode = 1
    t = 3
    For Each ws In Worksheets
        If ws.Name <> "EFFECTIFS ENSEIGNANTS" Then
            If Not dico2.exists(ws.Range("g2").Value) Then
                t = t + 1
                dico2(ws.Range("g2").Value) = t
            End If
        End If
    Next
    dico1("Maternelle") = 4: dico1("Élémentaire") = 5
    ReDim b(1 To dico1.Count + 4, 1 To dico2.Count + 4)
    b(1, 1) = "ÉCOLES PUBLIQUES": b(2, 1) = "Nombre d'enseignants"
    b(2, 3) = "Soit": b(2, 4) = "SECTEUR": b(2, UBound(b, 2)) = "Hors REP+"
    b(4, 1) = "Maternelle :": b(5, 1) = "Élémentaire :": b(6, 1) = "Total"
    For Each ws In Worksheets
        If ws.Name <> "EFFECTIFS ENSEIGNANTS" Then
            With ws.Range("a4").CurrentRegion
                With .Offset(1).Resize(.Rows.Count - 2)
                    a = .Value
                End With
            End With
            ecole = ws.Range("g1").Value
            secteur = ws.Range("g2").Value
            b(3, dico2(secteur)) = secteur
            n = 0
            For i = 1 To UBound(a, 1)
                If a(i, 1) <> "" Then n = n + 1
            Next
            b(dico1(ecole), dico2(secteur)) = b(dico1(ecole), dico2(secteur)) + n
        End If
    Next
    For i = 4 To UBound(b, 1) - 1
        b(i, 2) = Application.Sum(Application.Index(b, i, Evaluate("row(4:" & UBound(b, 2) - 1 & ")")))
        b(i, UBound(b, 2)) = Application.Sum(Application.Index(b, i, Evaluate("row(5:" & UBound(b, 2) - 1 & ")")))
    Next
    b(UBound(b, 1), 2) = Application.Sum(Application.Index(b, Evaluate("row(4:" & UBound(b, 1) - 1 & ")"), 2))
    For i = 4 To UBound(b, 1) - 1
        If b(UBound(b, 1), 2) <> 0 Then
            b(i, 3) = b(i, 2) / b(UBound(b, 1), 2)
        End If
    Next
    For i = 3 To UBound(b, 2)
        b(UBound(b, 1), i) = Application.Sum(Application.Index(b, Evaluate("row(4:" & UBound(b, 1) - 1 & ")"), i))
    Next
    Application.ScreenUpdating = False
    'restitution et mise en forme
    With Sheets("EFFECTIFS ENSEIGNANTS")
        With .Range("i1").Resize(UBound(b, 1), UBound(b, 2))
            .CurrentRegion.Clear
            .Value = b
            .Font.Name = "calibri"
            .Font.Size = 11
            .VerticalAlignment = xlCenter
            .HorizontalAlignment = xlCenter
            .BorderAround Weight:=xlThin
            .Borders(xlInsideVertical).Weight = xlThin
            With .Columns(3)
                .Offset(3).Resize(.Rows.Count - 3).NumberFormat = "0.00%"
            End With
            With .Rows(1)
                .HorizontalAlignment = xlCenterAcrossSelection
                .BorderAround Weight:=xlThin
                .Interior.ColorIndex = 19
            End With
            .Rows(3).BorderAround Weight:=xlThin
            With .Rows(2)
                .BorderAround Weight:=xlThin
                With .Cells(1).Resize(2, 2)
                    .Interior.ColorIndex = 44
                    .MergeCells = True
                End With
                .Cells(3).Resize(2).MergeCells = True
                .Cells(4).Resize(, .Columns.Count - 4).MergeCells = True
                .Cells(.Columns.Count).Resize(2).MergeCells = True
            End With
            With .Rows(.Rows.Count)
                .BorderAround Weight:=xlThin
                .Interior.ColorIndex = 43
            End With
            .Columns.ColumnWidth = 14
        End With
        .Activate
    End With
    Application.ScreenUpdating = True
End Sub
klin89
 
Dernière édition:

Statistiques des forums

Discussions
312 332
Messages
2 087 367
Membres
103 528
dernier inscrit
maro