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

adkheir

XLDnaute Occasionnel
Bonjour le forum

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
 

Fichiers joints

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
 

Fichiers joints

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
 

jp14

XLDnaute Barbatruc
Bonjour

Ci joint avec la macro qui doit correspondre à la demande.
J'ai rajouté le code trouvé sur le site pour imprimer les données d'un listbox.

A tester

JP14
 

Fichiers joints

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
 

Fichiers joints

adkheir

XLDnaute Occasionnel
Bonjour
je n'arrive pas a afficher la date des opérations a savoir le mois et l’année sur la recapxx et aussi la quantité totale reçue pendant un mois.

merci beaucoup
 
Dernière édition:

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
 

adkheir

XLDnaute Occasionnel
bonsoir
je n'arrive pas a afficher la date et la quantité totale de chaque nom.
s'il vous plait peut on faire faire ce tri avec des formules excel .
j'attends votre réponse
merci
 
Dernière édition:

moutchec

XLDnaute Occasionnel
Bonjour adkheir

Une macro suffit
Bonjour le forum,
bonjour PIERRE JEAN,
je pars de votre premier post dans le fil parce que c'est très proche de ce que je suis en train de chercher.
ex : puisque le nom 11 se répète 3 fois, pouvez-vous, s'il vous plait, ajouter un code qui énumère en colonne M les 3 dates correspondantes? idem évidemment pour tous les noms qui se répètent.
merci d'avance pour votre aide.
cordialement.
Moutchec.
 

adkheir

XLDnaute Occasionnel
Bonjour pierrejean,JP14 , le forum
En cherchant sur le net j'ai vu dans certains forums que mettre le nom et le prénom dans une seule cellule facilite grandement les tests , pouvez s'il vous plait vous modifier le code en prenant le nom et le prénom sur une seule cellule
merci a vous et bonne journée .
cdlt
 
Dernière édition:

jp14

XLDnaute Barbatruc
Bonjour

La macro utilise déjà la concaténation du nom et prénom pour remplir la collection:
Data1 = Trim(MonTab(Compt1, 1)) & Trim(MonTab(Compt1, 2)) & Trim(MonTab(Compt1, 3))

Modifier le programme consiste à supprimer le code " Trim(MonTab(Compt1, 2))" et modifier les indices. 3 devient 2...
Avec un fichier qui contient les donnes et une feuille montrant le résultat désiré, il est plus facile de faire de tester le code.




JP14
 
Dernière édition:

adkheir

XLDnaute Occasionnel
bonsoir
hélas j'ai essayé et je n'ai pas réussi , j'ai envie aussi de supprimer la condition du père et je n'arrive pas a afficher la quantité sur la récap.
pouvez vous le modifié pour moi cette fois ci.
merci beaucoup
cdlt
 

jp14

XLDnaute Barbatruc
Bonsoir
Si j'ai bien compris.
Dans la colonne E on trouve le nombre de donnée identiques. Si on désire le total la fonction "= SOMME(E1:E5)" répond au problème.
upload_2017-12-12_19-59-44.png

JP14
 

Discussions similaires


Haut Bas