Répertorier infos plusieurs signets_Excel

Résolu/Fermé
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012 - 21 févr. 2012 à 12:11
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012 - 27 juin 2012 à 10:46
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!




A voir également:

20 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
21 févr. 2012 à 14:03
Salut,
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
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
21 févr. 2012 à 14:50
Yeeeah!! Ca marche!! Merci !!!

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 !!
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
21 févr. 2012 à 14:52
Autant pour moi, les doublons sont dû à des orthographe différents (majuscules ou points trainant par ci, par là)
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
21 févr. 2012 à 14:55
Tout va bien alors?

Si vous le souhaitez, la macro peux s'occuper des countproduct à votre place...
Vous dites...
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
21 févr. 2012 à 15:05
A priori tout va bien! Grâce à toi ;)

Je ne sais plus lequel du vous ou du tu utiliser... bref...

J'avoue que si la macro pouvait compter mes petites palettes sans que j'ai besoin de m'arracher les cheveux avec toutes ces feuilles ce serait le pied!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
21 févr. 2012 à 15:07
Tu, je ne sais jamais non plus... Mais tu c'est bien!

réponse... dès que prêt!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
21 févr. 2012 à 15:08
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?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
21 févr. 2012 à 15:21
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!
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
21 févr. 2012 à 15:24
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é...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
21 févr. 2012 à 15:52
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
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
21 févr. 2012 à 16:13
Tu es un grand malade!!! J'adore!

Ca marche du tonerre...!!

Il faut juste que je reprenne l'orthographe des clients car certains reviennent plusieurs fois car écris differemment!

Bref!!

Merciiiiiiiiiiiiiiiii
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
21 févr. 2012 à 16:15
De rien.
Au cas ou, tu sais ou demander?
A+
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
21 févr. 2012 à 16:18
Où?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
21 févr. 2012 à 16:19
ha ha ha......










..... ben ici!
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
21 févr. 2012 à 16:44
Ah bah oui!

Merci encore Franck!!
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
8 mars 2012 à 11:23
Franck, R U there?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
8 mars 2012 à 11:28
audrey_ Allways!
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
8 mars 2012 à 11:42
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...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
8 mars 2012 à 12:27
Pour renommer la feuille, deux choses sont à changer dans le code :
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...
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
8 mars 2012 à 13:47
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.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
8 mars 2012 à 13:59
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?
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
8 mars 2012 à 14:16
Dans mon doc, j'ai juste col A = nom client et colB=palettes.
Je n'ai pas une 3ème col ac la quantité totale par palettes.

Col A Col B
a F
a C
a C
a E
a C
b C
b etc

Une ligne = 1palette et pas une quantité
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
8 mars 2012 à 14:17
Suis pas sûre d'être clair...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
8 mars 2012 à 14:23
si si, pas de souci.

Je recommence avec un new file...
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
8 mars 2012 à 14:07
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
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
8 mars 2012 à 14:24
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"

?????
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
8 mars 2012 à 14:34
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?
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
8 mars 2012 à 14:40
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
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
8 mars 2012 à 15:08
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
8 mars 2012 à 15:21
Je n'en pense que du bien.

L'ai copié dans mon doc. mais ça ne marche plus...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
8 mars 2012 à 15:24
mais ça ne marche plus... Ca c'est précis......
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
8 mars 2012 à 15:26
Oui, c'est pcq je cherche en mm temps

J'ai copié la macro et les userform

et ca me met "type mismatch"
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
8 mars 2012 à 15:30
et si, au lieu de copier la macro et les userform, tu collais tes données dans mon classeur... Puisqu'il fonctionne.
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
8 mars 2012 à 15:32
Alors en fait la macro "audrey" fait comme avant.

Les userform n'apparaisse nul part (faut que je les refasse??? ) dc pas de top 10
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
8 mars 2012 à 15:32
Vais essayer... J'avais pas vu ta rp
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
8 mars 2012 à 15:49
Bernard tu peux le virer sans souci.

Par contre tu touches pas à Whyskie... Nanmého!

Content pour toi.

A+ peut être...
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
8 mars 2012 à 16:24
Lool!!

Merci pour tout !!!!

A bientot puisque je sais où te trouver!!
Bisous
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
26 juin 2012 à 15:17
Franck???

Oui, c'est encore moi... 2mois après ... TADAM...!!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
27 juin 2012 à 10:25
Salut Audrey-
Oui???

Quelqu'un m'appelle?

Tadam boum j'arrive.

KessKissPass?
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
27 juin 2012 à 10:30
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?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 753
27 juin 2012 à 10:38
ç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)
0
_Audrey Messages postés 28 Date d'inscription mardi 21 février 2012 Statut Membre Dernière intervention 27 juin 2012
27 juin 2012 à 10:46
Impeccable, merci!

je t'ai envoyé un mail...!!
0