Liste dynamique sans doublon

porsche

XLDnaute Nouveau
Bonjour, je reviens vers vous car après plusieurs jours à vouloir adapter les exemples d'autres utilisateurs je ne m'en sors pas. La solution pourra être en VBA ou par formule peu importe. En fait, je voudrais qu'au fur et à mesure de saisir des commandes dans tous les onglets cela génère la liste des numéros comptes sans doublon de toutes les feuilles dans la colonne n° compte de l'onglet cumul et qu'a chaque nouvelle commande si le numéro de compte n'existe pas encore dans la liste cela le recopie à la suite de la dernière entrée. Et qu'a chaque n° de compte dans cumul, cela récupère le montant commandé pour ce compte. J'éspère être assez clair et voici le fichier pour illustrer ce que je recherche car un fichier exemple vaut mieux qu'un grand discours. Merci d'avance.
 

Pièces jointes

  • Classeur1.xls
    30 KB · Affichages: 74
  • Classeur1.xls
    30 KB · Affichages: 74
  • Classeur1.xls
    30 KB · Affichages: 74

porsche

XLDnaute Nouveau
Re : Liste dynamique sans doublon

Toutes ces solutions me convienne parfaitement mais je suis vraiment nul. Je pensais réussir à adapter la programmation dans mon fichier et je n'y arrive pas depuis la première solution. Je vous joins donc mon fichier original.De plus, ces numéros de comptes sont regroupés par famille comme indiqué sur la feuille EQUIVALENCE COMPTE. Une même famille regroupe plusieurs comptes. Dans la feuille CUMUL je souhaiterais afficher dans la colonne A la famille correspondante au compte. Je suppose qu'il faut une rechercheV. Je désirerai regrouper aussi dans la feuille CUMUL PAR FAMILLE les totaux de la feuille CUMUL mais regroupé par FAMILLE de compte suivant la feuille "équivalence". J'espère être assez clair mais en ouvrant le fichier ce le sera encore plus. Celui qui réussira a me programmer ces lignes aura ma reconnaissance la plus sincère tellement vous me rendrez service.
D'avance merci à tous.
 

Pièces jointes

  • SUIVI OL-OE 2012 PROD T.....xls
    121 KB · Affichages: 44

Modeste

XLDnaute Barbatruc
Re : Liste dynamique sans doublon

Bonsoir le fil,

Je reviens avec mon idée de départ, non pas que je la trouve plus ... quoi que ce soit, mais parce que je la comprends (enfin je crois!? :eek:)

Bref un "dictionary" pour faire la liste des comptes sans doublons, à l'activation de la feuille "Cumul" ... et des formules pour le reste. Attention, en ligne 3 de la feuille "Cumul", j'ai ajouté les noms des mois ... écrits comme les noms des feuilles. Si je m'étais laissé faire, j'aurais modifié les noms des onglets, mais je ne suis pas "chez moi" dans ce fichier :rolleyes: ... donc je me suis abstenu! Les formules (INDIRECT, dans le cas présent) ne fonctionneront que si les noms des onglets correspondent aux "titres" des colonnes

... à tester ...

Bises à 00 et Si... il les accepte :p
 

Pièces jointes

  • porsche.xls
    170.5 KB · Affichages: 75

porsche

XLDnaute Nouveau
Re : Liste dynamique sans doublon

Bonjour Modeste,

désolé de ne pas avoir répondu avant mais je me suis aperçu seulement hier soir que ton dernier fichier comprenait mes derniers souhaits. En effet, je passe tellement de temps a essayer de modifier le code pour appliquer à mes fichiers que je pensais qu'il était trop tot pour que tu me réponde avec mes voeux sur mon dernier fichier. Alors bravo pour la rapidité. pour le fichier, il ne reste plus qu'à faire sur l'activation de la feuille cumul par famille, une recopie de la liste en colonne A de CUMUL sans doublons sur la colonne B de cumul par famille en additionnant les chiffres correspondant de l'onglet cumul comme dans l'exemple numérique que je donne dans le fichier.
Dernière question, si dans l'onglet equivalence compte chaque famille a une couleur de cellule différente est-il possible de recopier aussi cette couleur dans l'onglet CUMUL et CUMUL PAR FAMILLE dans chaque colonne où la famille apparait?
Merci beaucoup du temps passé à m'aider.
 

Modeste

XLDnaute Barbatruc
Re : Liste dynamique sans doublon

Bonjour,

La création d'une liste sans doublons, c'était presque un copier-coller du code pour la feuille "CUMUL" ... tu ne voulais pas me gâcher mon plaisir, en commençant le travail? :rolleyes:

Même principe que pour la feuille CUMUL: la liste est créée par la macro, mais ce sont des formules qui complètent les colonnes relatives aux mois (ces formules sont copiées sur 10 lignes ... à toi d'étendre en fonction de tes besoins). Pas touché aux formules en colonne R.

La recherche des couleurs de familles se fait dans le fichier joint ... si je ne me suis pas trompé!?

PS: dans la colonne Total de la feuille CUMUL, tu as des formules différentes (parfois SOMME, parfois SOUS.TOTAL :confused:)
 

Pièces jointes

  • porsche (V2).xls
    193.5 KB · Affichages: 47
  • porsche (V2).xls
    193.5 KB · Affichages: 54
  • porsche (V2).xls
    193.5 KB · Affichages: 46

porsche

XLDnaute Nouveau
Re : Liste dynamique sans doublon

WHAOUUUUUUUUUUUUUU Modeste c'est le fichier de mes rêves! Oui ce sont bien les couleurs des cellules de la feuille EQUIVALENCE COMPTES que je souhaitais récupérer et apparemment c'est le cas avec ta version 2. Je viens de copier coller le code Colorer les cellules famille pour récupérer cette couleur de cellule dans la colonne A de CUMUL comme tu l'as très bien fait dans CUMUL PAR FAMILLE mais j'ai une erreur d'execution 424 objet requis. Je suis vraiment nul... Je suis peu être embêtant mais je n'y arrive vraiment pas tout seul pour toutes les heures passées pour mes essais.
 

Modeste

XLDnaute Barbatruc
Re : Liste dynamique sans doublon

Re-bonjour,

Je confirme que la portion de code peut être réutilisée ... à condition d'y apporter les modifications qui s'imposent:
- la cellule de départ, dans la feuille CUMUL est la cellule A4 (au lieu de B5)
- le nom du "dictionary" est "liste" (au lieu de listeFam)

ça deviendrait donc:
VB:
For Each c In Me.Range("A4").Resize(liste.Count, 1) 'A4 & liste
    trouve = Application.Match(c, Sheets("EQUIVALENCE COMPTES").Range("A1:A1000"), 0)
    If Not IsError(trouve) Then c.Interior.Color = Sheets("EQUIVALENCE COMPTES").Range("A" & trouve).Interior.Color
Next c
 

porsche

XLDnaute Nouveau
Re : Liste dynamique sans doublon

Ca y est! J'ai le fichier parfait enfin presque. Juste une petite demande. La liste créée dans CUMUL PAR FAMILLE apparait en texte normal et non en gras comme je voudrais et comme c'est le cas d'ailleurs dans la feuille CUMUL. Car si je le fais manuellement je perds cette mise en forme à chaque recalcul de la feuille. Maintenant j'ai envi de comprendre comment fonctionne tes lignes de code pour savoir le refaire. Je te dis un énorme merci pour tout ce temps passé à m'aider. MERCI
 

Modeste

XLDnaute Barbatruc
Re : Liste dynamique sans doublon

Bonsoir,

Car si je le fais manuellement je perds cette mise en forme à chaque recalcul de la feuille.
... Reste donc à trouver le code à modifier ou ajouter ;)

Maintenant j'ai envie de comprendre comment fonctionne tes lignes de code pour savoir le refaire.
Alors que diable, profitons-en! Par rapport à ta remarque d'au-dessus, tu constates que tu ne perds pas la graisse (celle des caractères, j'entends) dans la feuille CUMUL, contrairement à la feuille CUMUL PAR FAMILLE. Si tu compares le début du code de chacune de ces feuilles, tu trouveras d'un côté, qu'on applique à une plage (Range) la méthode ClearContents et de l'autre la méthode Clear.
Dans la feuille CUMUL, on peut se contenter d'effacer le contenu (comme si on appuyait sur 'Delete'), alors que de l'autre, la même méthode n'effacerait que les noms des familles en laissant les couleurs de remplissage.
Deux solutions, donc:
  • soit on se contente, dans le CUMUL PAR FAMILLE, d'effacer le contenu et de remettre le remplissage à "aucun remplissage". On conserverait alors le gras et les bordures, par exemple
  • soit on efface tout à fait les formats et on ré-active le gras et les couleurs de remplissage, chaque fois qu'on complète une cellule.

... Reste à trouver la méthode la plus "économique". En ce qui me concerne (mais ce n'est qu'un avis), j'opterais finalement pour la première. Pour la méthode Clear ou ClearContents, tu devrais avoir compris ce qu'il te reste à faire? Pour ce qui est d'appliquer "aucun remplissage", tu peux écrire quelque chose comme
Code:
Range("adresse_de_la_plage").Interior.ColorIndex = xlNone
Petite info importante: attention à l'ordre dans lequel tu écris ces deux instructions, éventuellement.

Tu nous diras ce que ça donne?
 

porsche

XLDnaute Nouveau
Re : Liste dynamique sans doublon

Bonjour Modeste,

au secours, je viens d'appliquer ce que tu me suggères et maintenant le fichier ne fonctionne plus avec une erreur d'execution 1004 sur CUMUL PAR FAMILLE. Je ne comprends plus rien car même quand je mets un apostrophe devant la ligne que j'ai ajouté pour exclure son execution, j'ai toujours cette erreur. Je me dis que j'aurais pas du y toucher!!! D'avance merci de m'aider à résoudre ce problème. Et après c'est promis je n'y touche plus, j'ai peu être la poisse!!!
 

Pièces jointes

  • porsche (V2).xls
    191 KB · Affichages: 25
  • porsche (V2).xls
    191 KB · Affichages: 27
  • porsche (V2).xls
    191 KB · Affichages: 26

Modeste

XLDnaute Barbatruc
Re : Liste dynamique sans doublon

Bonjour porshe,

L'erreur qui s'affiche est dûe au fait qu'aucun nom de famille n'est renseigné dans la colonne B. Dès lors, lorsqu'on écrit
Code:
Range("B5:B" & Range("B5").End(xlDown).Row)
Excel cherche la dernière cellule non-vide dans cette même colonne ... comme elles sont toutes vides, Excel "pointe" sur la ligne 65536 et si dans le code, j'ai indiqué Row + 1 c'est comme si je demandais à Excel de chercher la ligne 65537 (qui n'existe pas!)
Conclusion: rien ne dit que tu aies la poisse :rolleyes: dans le cas présent, c'est moi qui suis parti du principe qu'il y aurait toujours des données en colonne B.
Le code qui suit devrait fonctionner, même si ce cas de figure est rencontré. Remplace donc l'ancien code de la feuille "CUMUL PAR FAMILLE" par celui-ci:
VB:
Private Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    With Range("B5:B" & Application.Max(5, Range("B5000").End(xlUp).Row))
        .Interior.ColorIndex = xlNone
        .ClearContents
    End With
    Set listeFam = CreateObject("scripting.dictionary")
    Set f = Sheets("CUMUL")
    nblig = Application.CountIf(f.Range("A4:A100"), "> ")
    For Each c In f.Range("A4:A" & 4 + nblig)
        If Not c.Value = "" Then listeFam(UCase(c.Value)) = UCase(c.Value)
    Next c
    Me.Range("B5").Resize(listeFam.Count, 1) = Application.Transpose(listeFam.keys)
    ' *** colorer les cellules "Famille"
    For Each c In Me.Range("B5").Resize(listeFam.Count, 1)
        trouve = Application.Match(c, Sheets("EQUIVALENCE COMPTES").Range("A1:A1000"), 0)
        If Not IsError(trouve) Then c.Interior.Color = Sheets("EQUIVALENCE COMPTES").Range("A" & trouve).Interior.Color
    Next c
    Application.ScreenUpdating = True
End Sub

... et n'oublie pas de nous dire ensuite si ça fonctionne

Edit: ne pas oublier, dans la feuille "CUMUL" cette fois, de mettre "aucun remplissage" en colonne A. Donc, juste après
Code:
Me.Range("B4:B36").ClearContents
... Ajoute:
Code:
Me.Range("A4:A36").Interior.ColorIndex = xlNone
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 613
Messages
2 090 233
Membres
104 459
dernier inscrit
Adeline43