Répertorier infos plusieurs signets_Excel
Résolu
_Audrey
Messages postés
28
Date d'inscription
Statut
Membre
Dernière intervention
-
_Audrey Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
_Audrey Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voilà, j'ai un doc excel avec 11signets (11mois). Chaque colonne A de chaque signet répertorie tous les contacts du mois.
J'aimerai, dans un nouveau signet, avoir tous les contacts de tous les signets... Un résumé de l'année en quelque sorte.
Macro? Formule?
Vos aides sont les bienvenues!!
Merci!
Voilà, j'ai un doc excel avec 11signets (11mois). Chaque colonne A de chaque signet répertorie tous les contacts du mois.
J'aimerai, dans un nouveau signet, avoir tous les contacts de tous les signets... Un résumé de l'année en quelque sorte.
Macro? Formule?
Vos aides sont les bienvenues!!
Merci!
A voir également:
- Répertorier infos plusieurs signets_Excel
- Infos pc - Guide
- Crystal disk infos - Télécharger - Informations & Diagnostic
- Infos message whatsapp - Guide
- Pourquoi je n'ai plus d'infos sur google ✓ - Forum Google Chrome
- Google actualités ✓ - Forum Google Chrome
20 réponses
Salut,
Si par signet tu sous entends Feuille et que tu n'as pas de feuille nommée "Liste des contacts"
Alors essayer :
Si par signet tu sous entends Feuille et que tu n'as pas de feuille nommée "Liste des contacts"
Alors essayer :
Option Explicit Sub Audrey() Dim Feuille As Worksheet, TablContacts(), Dico As Object, i As Long Set Dico = CreateObject("Scripting.Dictionary") If FeuilleExiste(ThisWorkbook, "Liste des contacts") Then Worksheets("Liste des contacts").Delete For Each Feuille In ThisWorkbook.Worksheets With Feuille TablContacts = .Range("A2", .Range("A" & Rows.Count).End(xlUp)) For i = LBound(TablContacts, 1) To UBound(TablContacts, 1) If Not Dico.exists(TablContacts(i, 1)) Then Dico.Add TablContacts(i, 1), TablContacts(i, 1) Next i End With Next Feuille ThisWorkbook.Worksheets.Add after:=Sheets(ThisWorkbook.Worksheets.Count) With ActiveSheet .Name = "Liste des contacts" .Range("A2").Resize(Dico.Count, 1) = Application.Transpose(Dico.keys) End With End Sub Function FeuilleExiste(wk As Workbook, stFeuille) As Boolean On Error Resume Next FeuilleExiste = Not (wk.Sheets(stFeuille) Is Nothing) End Function
Tout va bien alors?
Si vous le souhaitez, la macro peux s'occuper des countproduct à votre place...
Vous dites...
Si vous le souhaitez, la macro peux s'occuper des countproduct à votre place...
Vous dites...
Dans les colonnes B, tu as un nom de palettes. Ok!
Mais tu dois bien avoir quelque part le nombre de palettes commandées par le contact?
Mais tu dois bien avoir quelque part le nombre de palettes commandées par le contact?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai fait une simulation sur le mois de février dans un nouveau doc.
J'ai trier les contacts (à côté de mes col A et B, en col E) puis créé de nouvelles colonnes, une pour chaque type de palette.
J'avais fait une fonction que j'ai ensuite copié.
Ce qui me donne:
=SUMPRODUCT(($B$2:$B$329=E$1)*($A$2:$A$329=$D2))
Col B: type de palette par client (sachant que 1 ligne = 1palette et non 1ligne =1client)
Cel E: palette "cible"
Col A: client
Cel D: client "cible"
Cela marche à la perfection. Mais maintenant que j'ai étendu sur l'année, ou plutôt 11mois (avec 1 par feuille), ça se complique!
J'ai trier les contacts (à côté de mes col A et B, en col E) puis créé de nouvelles colonnes, une pour chaque type de palette.
J'avais fait une fonction que j'ai ensuite copié.
Ce qui me donne:
=SUMPRODUCT(($B$2:$B$329=E$1)*($A$2:$A$329=$D2))
Col B: type de palette par client (sachant que 1 ligne = 1palette et non 1ligne =1client)
Cel E: palette "cible"
Col A: client
Cel D: client "cible"
Cela marche à la perfection. Mais maintenant que j'ai étendu sur l'année, ou plutôt 11mois (avec 1 par feuille), ça se complique!
Pour répondre à ta question plus clairement. Non, je n'ai pas le nombre de palettes envoyées. C'est justement le but de l'opération, avoir par client combien de palettes "A" ou "B" ou"C"...etc... qu'on a envoyé...
Alors, testes ceci (c'est pas garantie!...):
Option Explicit Sub Audrey() Dim Feuille As Worksheet, i As Long Dim TablContacts(), DicoNoms As Object Dim TablPalettes(), DicoPalettes As Object Dim Sommes(), t t = Timer Set DicoNoms = CreateObject("Scripting.Dictionary") Set DicoPalettes = CreateObject("Scripting.Dictionary") If FeuilleExiste(ThisWorkbook, "Liste des contacts") Then Worksheets("Liste des contacts").Delete For Each Feuille In ThisWorkbook.Worksheets With Feuille TablContacts = .Range("A2", .Range("A" & Rows.Count).End(xlUp)) For i = LBound(TablContacts, 1) To UBound(TablContacts, 1) If Not DicoNoms.exists(TablContacts(i, 1)) Then DicoNoms.Add TablContacts(i, 1), TablContacts(i, 1) Next i TablPalettes = .Range("B2", .Range("B" & Rows.Count).End(xlUp)) For i = LBound(TablPalettes, 1) To UBound(TablPalettes, 1) DicoPalettes(TablPalettes(i, 1)) = DicoPalettes(TablPalettes(i, 1)) + 1 Next i End With Next Feuille ReDim Sommes(1 To DicoNoms.Count, 1 To DicoPalettes.Count) For Each Feuille In ThisWorkbook.Worksheets With Feuille For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row Sommes(Application.Match(.Cells(i, 1), DicoNoms.keys, 0), Application.Match(.Cells(i, 2), DicoPalettes.keys, 0)) = Sommes(Application.Match(.Cells(i, 1), DicoNoms.keys, 0), Application.Match(.Cells(i, 2), DicoPalettes.keys, 0)) + 1 '.Cells(i, 3).Value Next i End With Next Feuille ThisWorkbook.Worksheets.Add after:=Sheets(ThisWorkbook.Worksheets.Count) With ActiveSheet .Name = "Liste des contacts" .Range("A2").Resize(DicoNoms.Count, 1) = Application.Transpose(DicoNoms.keys) .Range("B1").Resize(1, DicoPalettes.Count) = DicoPalettes.keys .Range("B2").Resize(UBound(Sommes, 1), UBound(Sommes, 2)) = Sommes() End With MsgBox "Procédure terminée en : " & Timer - t & " secondes. Tu peux reprendre un café..." End Sub Function FeuilleExiste(wk As Workbook, stFeuille) As Boolean On Error Resume Next FeuilleExiste = Not (wk.Sheets(stFeuille) Is Nothing) End Function
J'ai besoin de tes talents pour plusieurs raisons.
La première est que je n'arrive pas à renommer dans la macro la feuille créé par la macro.
La deuxième est que je souhaiterai aller plus loin dans l'exploitation des infos générées par la macro: nouvelle feuille avec le top 10 et top5.
Et je me demandais s'il est possible qu'excel repère repère les doublons causés par des différences d'écritures (ex: client a/client A/client.a)
Donc, tu imagines bien que j'ai besoin de toi...
La première est que je n'arrive pas à renommer dans la macro la feuille créé par la macro.
La deuxième est que je souhaiterai aller plus loin dans l'exploitation des infos générées par la macro: nouvelle feuille avec le top 10 et top5.
Et je me demandais s'il est possible qu'excel repère repère les doublons causés par des différences d'écritures (ex: client a/client A/client.a)
Donc, tu imagines bien que j'ai besoin de toi...
Pour renommer la feuille, deux choses sont à changer dans le code :
en début de code :
Changer "Liste des contacts" par ce que tu veux. Les 2 fois...
Et, dans ces lignes :
Même chose, changer "Liste des contacts" par ce que tu veux...
Qu'appelles tu Top10 et Top5?
Tu veux dans une feuille, nommée Top10, tes 10 meilleurs vendeurs, et dans une autre, nommée Top5 tes 5 meilleurs, ou dans une seule feuille le top10? Ben oui le top5 c'est les 5 meilleurs du top10 non???
Pour le repérage des doublons, c'est toujours délicat... Le risque le plus important est de supprimer des clients... Par conséquent, il te faut les traiter une fois pour toutes manuellement.
Méthode :
tu lances la macro. Donc tu va récupérer dans ta feuille de résultats, une liste de tes contacts allégées. Tu cherches, dans cette liste les noms qui seraient des doublons mais écris différemment, et, par macro* ou avec CTRL+H tu les remplaces dans chaque feuille... Je sais c'est long... Mais c'est la seule solution réellement correcte.
*si tu veux je te fais un code...
Ensuite, pour l'avenir, je te recommande de passer par un Userform de saisie.
Je te bricole un truc dans le genre...
en début de code :
If FeuilleExiste(ThisWorkbook, "Liste des contacts") Then Worksheets("Liste des contacts").Delete
Changer "Liste des contacts" par ce que tu veux. Les 2 fois...
Et, dans ces lignes :
ThisWorkbook.Worksheets.Add after:=Sheets(ThisWorkbook.Worksheets.Count) With ActiveSheet .Name = "Liste des contacts"
Même chose, changer "Liste des contacts" par ce que tu veux...
Qu'appelles tu Top10 et Top5?
Tu veux dans une feuille, nommée Top10, tes 10 meilleurs vendeurs, et dans une autre, nommée Top5 tes 5 meilleurs, ou dans une seule feuille le top10? Ben oui le top5 c'est les 5 meilleurs du top10 non???
Pour le repérage des doublons, c'est toujours délicat... Le risque le plus important est de supprimer des clients... Par conséquent, il te faut les traiter une fois pour toutes manuellement.
Méthode :
tu lances la macro. Donc tu va récupérer dans ta feuille de résultats, une liste de tes contacts allégées. Tu cherches, dans cette liste les noms qui seraient des doublons mais écris différemment, et, par macro* ou avec CTRL+H tu les remplaces dans chaque feuille... Je sais c'est long... Mais c'est la seule solution réellement correcte.
*si tu veux je te fais un code...
Ensuite, pour l'avenir, je te recommande de passer par un Userform de saisie.
Je te bricole un truc dans le genre...
En fait, je voudrais, dans une nouvelle feuille, le top 5 pour 3types de palettes seulement, mais certains clients ne sont pas concernés donc il faudrait un top 7-8 (car au moins 2clients seront dans le top5 sans être concernés dc ils "pollueraient le top 5).
Les infos sont des extractions de nos systèmes donc il faut surtout que je demande à chacun une rigueur dans les écritures pour éviter ces pb de doublons.
Les infos sont des extractions de nos systèmes donc il faut surtout que je demande à chacun une rigueur dans les écritures pour éviter ces pb de doublons.
Et zut, je suis allé trop vite en besogne...
J'aurais du attendre ta réponse.
C'est rien, je mets quand même un classeur exemple.
https://www.cjoint.com/?BCin4dCNIkS
La sub "audrey" en tiens pas compte des colonnes C (quantité)
la sub "RécapAvecSommeDesColonnesC" fait le total par vendeur et par type de palette (ici ce sont de drôles de palettes;-)).
la sub top10 fait le top 10 toutes palettes confondues.
Idem pour top5
Le formulaire de saisie est inutile...
Ok. Je r'commence.
Mais d'abord, comment choisis tu le critère de sélection "palette" du top10 et du top5???? Hein? Bonne question non?
J'aurais du attendre ta réponse.
C'est rien, je mets quand même un classeur exemple.
https://www.cjoint.com/?BCin4dCNIkS
La sub "audrey" en tiens pas compte des colonnes C (quantité)
la sub "RécapAvecSommeDesColonnesC" fait le total par vendeur et par type de palette (ici ce sont de drôles de palettes;-)).
la sub top10 fait le top 10 toutes palettes confondues.
Idem pour top5
Le formulaire de saisie est inutile...
Ok. Je r'commence.
Mais d'abord, comment choisis tu le critère de sélection "palette" du top10 et du top5???? Hein? Bonne question non?
Lol... Oups... Désolée!!
C'est possible une macro où on dit top 7-8 des palettes "a", "ba" et "c"??
Ce serait mon critère.
Tu le sais, il y a différents types de palettes, certaines ne sont pas récupérables chez le client. Seuls 3types le sont. Le but du top7-8 est de savoir qui sont les plus gros consommateurs de ces 3palettes récupérables
C'est possible une macro où on dit top 7-8 des palettes "a", "ba" et "c"??
Ce serait mon critère.
Tu le sais, il y a différents types de palettes, certaines ne sont pas récupérables chez le client. Seuls 3types le sont. Le but du top7-8 est de savoir qui sont les plus gros consommateurs de ces 3palettes récupérables
Question :
C'est possible une macro où on dit top 7-8 des palettes "a", "ba" et "c"??
Tu veux :
- le top10 de : palettes "a"
- le top10 de palettes "ba"
- le top10 de palettes "c"
ou bien
- le top10 de palettes "a" + "ba" + "c"
?????
C'est possible une macro où on dit top 7-8 des palettes "a", "ba" et "c"??
Tu veux :
- le top10 de : palettes "a"
- le top10 de palettes "ba"
- le top10 de palettes "c"
ou bien
- le top10 de palettes "a" + "ba" + "c"
?????
J'aimerai le top 10 des clients qui consomment le plus de palettes a,b, et c.
Oui, je comprends ce que ta question. Alors on a qu'à faire un top 10 par type de palettes (pour ces 3), sur la mm feuille.
C'est possible ça?
Oui, je comprends ce que ta question. Alors on a qu'à faire un top 10 par type de palettes (pour ces 3), sur la mm feuille.
C'est possible ça?
Ateeeeeends
Il faut une étape intermédiaire pour que ça fasse ce que je veux
Donc il faut d'abord faire le total par clients pours ces 3palettes (client a : 300 (ce qui sera le total des 3palettes))
et ensuite faire le top10
Il faut une étape intermédiaire pour que ça fasse ce que je veux
Donc il faut d'abord faire le total par clients pours ces 3palettes (client a : 300 (ce qui sera le total des 3palettes))
et ensuite faire le top10
Bernard tu peux le virer sans souci.
Par contre tu touches pas à Whyskie... Nanmého!
Content pour toi.
A+ peut être...
Par contre tu touches pas à Whyskie... Nanmého!
Content pour toi.
A+ peut être...
Salut Audrey-
Oui???
Quelqu'un m'appelle?
Tadam boum j'arrive.
KessKissPass?
Oui???
Quelqu'un m'appelle?
Tadam boum j'arrive.
KessKissPass?
Roooo super...!! Tu es là...!!
Comment tu vas?
Je t'ai appelé parce que (toujours pour ce même doc), j'ai un nouveau besoin.
Après le top 10, j'ai besoin d'un "worth 10" (tout pareil que le top 10 avec bouton et tout le tralala mais avec les 10pires. Dans le même onglet que le top 10.
Tu crois que c'est possible?
Comment tu vas?
Je t'ai appelé parce que (toujours pour ce même doc), j'ai un nouveau besoin.
Après le top 10, j'ai besoin d'un "worth 10" (tout pareil que le top 10 avec bouton et tout le tralala mais avec les 10pires. Dans le même onglet que le top 10.
Tu crois que c'est possible?
ça va bien. Merci! Et toi?
Peux tu me transférer ton fichier, je ne l'ai pas conservé... S'il contient des infos confidentielles, tu peux me l'envoyer par MP : ICI
ou par mail à l'adresse que tu trouveras dans mon profil (clic sur mon pseudo)
Peux tu me transférer ton fichier, je ne l'ai pas conservé... S'il contient des infos confidentielles, tu peux me l'envoyer par MP : ICI
ou par mail à l'adresse que tu trouveras dans mon profil (clic sur mon pseudo)
Seul hic ce sont certains doublons.
Le problème c'est que pour chaque feuille, dans ma col A j'ai les clients et en col B le type de palette envoyée. Ce qui donne:
Col A Col B
a F
a C
a C
a E
a C
b C
b etc
b
b
c
d
d
d
e
e
Ce qui fait plus de 300 lignes pour chaque feuille. D'où le désire d'avoir sur une autre feuille tous les clients pour pouvoir faire une fonction countproduct pour compter combier de palettes bidule et combien de palettes machin ont été envoyé...
Bref, j'ai du mal à comprendre votre macro (n'en ayant cotoyé que des simples) donc je croise les doigts pour qu'aucune info ne soit passé à l'oubliette.
Mais je vous fait confiance !!
Merci beaucoup !!