XL 2010 créer des macros pour calculer le nombre total des noms qui se repetent

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

adkheir

XLDnaute Occasionnel
Bonjour le forum
icon_biggrin.png

je souhaite créer deux macros vba , une pour pour trouver le nombre du même nom qui s'est répété plus d'une fois et une autre pour trouver la quantité totale de ces noms du tableau excel en pièce jointe .
merci de votre aide
 

Pièces jointes

bonjour pierrejean , JP14 et le forum
l'approche de pierrejean et peut être celle qui me convient a cause du nombre important des lignes environ 2000 lignes , ensuite peut-on ajouter aussi le même prénom sans oublier si c'est possible la somme totale de la quantité pour même chaque nom et même prénom .
merci
 
Oui ça me convient et merci pour l'aide , mais il reste une petite chose a régler a savoir pour qu'une personne soit répétée il faut que les trois conditions s'accomplissement : a savoir le même nom , le même prénom et le même mon du père pour pour nombre de ligne d'environ 3000 lignes.
merci.
 
bonjour JP14, pierrejean ,le forum;
merci beaucoup magnifique sauf peut être qu'il fallait afficher le résultat sur une feuille excel ou a coté du tableau ou dans un autre onglet du classeur au lieu de l'userform et ça pour une éventuelle impression.
peut on ajouter une troisième condition a savoir la date d’enlèvement c'est dire le même mois et la même années .
merci beaucoup
 
bonjour
Cela me convient énormément et je vous remercie pour cela , seulement les critères des filtres sont le nom le prénom le nom du père et seulement le mois et l'année.
la colonne 5 sur userform représente quoi stp.
peut on visualiser le résultat de ce filtre sur une feuille excel a part
merci
 
Bonsoir
Le chiffre correspond à la demande "trouver le nombre du même nom"

Ci dessous des explications concernant les tests

Code:
Sub travdem()
...................................................
With Sheets("Feuil1") '(Nomfeuille1)(ActiveSheet.Name)
Dl1 = .Range(Col1 & .Rows.Count).End(xlUp).Row
'
'on utilise les colonnes B à F
'
Set Plg1 = .Range("B11:F" & Dl1) 'plage de données Nom prenom père

.........................
For Compt1 = LBound(MonTab, 1) To UBound(MonTab, 1)
    On Error GoTo suite:
    If MonTab(Compt1, 1) <> "" Then
    '                  colonne B                                          Colonne C                                  Colonne D
        Data1 = Trim(MonTab(Compt1, 1)) & Trim(MonTab(Compt1, 2)) & Trim(MonTab(Compt1, 3))
                       mois colonne F                                  année Colonne F
        Date1 = Month(MonTab(Compt1, 5)) & Year(MonTab(Compt1, 5))
        Data2 = Data1 & Date1

'Une collection ne comporte pas des données en double. Si on ajoute une valeur dans la collection on a une erreur. On utilise cette erreur pour compter le nombre de valeur identique.
      
  Collec.Add Data2, CStr(Data2)'
        If Flag = False Then 'si flag= faux ce n'est pas un doublon
            On Error GoTo 0
' mémorisation dans un tableau les données pour l'userform
            Tbl(Compt2, 0) = Trim(MonTab(Compt1, 1)) 'colonne B
            Tbl(Compt2, 1) = Trim(MonTab(Compt1, 2))'colonne C
            Tbl(Compt2, 2) = Trim(MonTab(Compt1, 3))'colonne D
            Tbl(Compt2, 3) = CStr(MonTab(Compt1, 5))'colonne F
            Tbl(Compt2, 4) = "1"
            Compt2 = Compt2 + 1
        End If
    End If
    Flag = False
Next Compt1

End With
Exit Sub
suite:
' doublon trouvé
Flag = True
' recherche de la ligne qui contient les données identiques (avec la fonction logique ET), 
For I1 = LBound(Tbl, 1) To UBound(Tbl, 1)
    If Tbl(I1, 0) = Trim(MonTab(Compt1, 1)) And _
    Tbl(I1, 1) = Trim(MonTab(Compt1, 2)) And _
    Tbl(I1, 2) = Trim(MonTab(Compt1, 3)) And _
    Tbl(I1, 3) = CStr(MonTab(Compt1, 5)) Then
        Tbl(I1, 4) = Val(Tbl(I1, 4)) + 1 'Incrémentation 
    If Tbl(I1, 0) = "" Then Exit Sub
        Exit For
End If
Next I1
Resume Next
End Sub

Procédure pour transférer le résultat dans la feuille "recap"

Code:
Private Sub CommandButton2_Click()
Dim Tableau() As Variant
Dim i As Integer
Dim j As Byte
'Application.ScreenUpdating = False
'Workbooks.Add 'création d'un nouveau classeur temporaire
With Sheets("Recap")
Tableau() = ListBox1.List
j = ListBox1.ColumnCount
i = ListBox1.ListCount
.Range("A1:" & Cells(i, j).Address) = Tableau()
End With
'option pour adapter la largeur des colonnes à la taille des données
'ActiveSheet.Range("A1:" & Cells(i, j).Address).EntireColumn.AutoFit
'ActiveWorkbook.PrintOut 'impression
'ActiveWorkbook.Close False 'suppression du classeur temporaire
'Application.ScreenUpdating = True
End Sub
JP14
 
Bonjour

Ci joint le fichier avec des modifications:
Impression dans un nouveau classeur (supprimer les apostrophe) ou dans une feuille crée au fur et à mesure des besoins.
Correction du test sur les dates Mois année au lieu de jour mois année

VB:
Private Sub UserForm_Initialize()
Ajout d'un séparateur entre les mois(1 ou 2 chiffre) et années (4 chiffres)
...........................................................
        If Len(Tbl(I1, 3)) = 5 Then
            Data1 = Left(Tbl(I1, 3), 1) & "/" & Right(Tbl(I1, 3), 4)
        Else
            Data1 = Left(Tbl(I1, 3), 2) & "/" & Right(Tbl(I1, 3), 4)
        End If
        .List(.ListCount - 1, 3) = Data1
..........................................................................
'mettre une apostrophe devant la ligne pour ne pas afficher dans la listbox
        .List(.ListCount - 1, 4) = Tbl(I1, 4)

A tester

JP14
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
623
Retour