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

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

  • tri_par_nom et quantité.zip
    11.3 KB · Affichages: 34

adkheir

XLDnaute Occasionnel
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
 

adkheir

XLDnaute Occasionnel
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.
 

jp14

XLDnaute Barbatruc
Bonsoir

Ci joint le fichier qui répond à "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"

A tester

Jp14
 

Pièces jointes

  • tri par nom.xlsm
    70.1 KB · Affichages: 31

adkheir

XLDnaute Occasionnel
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
 

adkheir

XLDnaute Occasionnel
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
 

jp14

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

jp14

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

  • Copie de tri par nom3.xlsm
    99.7 KB · Affichages: 55

adkheir

XLDnaute Occasionnel
bonjour
en lançant la macro l'userform affiche la date et pas la quantité globale de chaque même nom ,mais cliquant sur imprimer la recap ne contient pas la quantité et non plus la date .
merci de dire ou est le problème
merci a vous
 

Discussions similaires