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

PrinceCorwin

XLDnaute Occasionnel
Re : Liste dynamique sans doublon

Bonjour,
Quand tu saisie une nouvelle ligne ou ?

Dans la feuille Cumul, ca somme juste les chiffres par mois et par N° compte.
Dans les 12 autres feuilles tu notes le compte avec le montant .. Ca se cumul automatiquement dans la feuille cumul ...

Si tu fais la saisie de GGG 120 en novembre (feuille novembre), tu mets le N° compte dans Cumul (GGG) et le compte se fait automatiquement
 

porsche

XLDnaute Nouveau
Re : Liste dynamique sans doublon

Bonjour je t'en demande peut être beaucoup, mais je souhaiterai que lorsque l'on rentre un n° de compte il vérifie si est présent dans cumul, si c'est le cas alors il additionne le montant avec celui déja présent ou s'il n'existe pas encore dans l'onglet cumul, il vienne se recopier automatiquement à la suite des autres et avec le montant associé.
D'avance merci.
 

porsche

XLDnaute Nouveau
Re : Liste dynamique sans doublon

Un SUPER GRAND merci à toi DoubleZero cela faisait plus d'une semaine que j'essayais d'adapter d'autre codes pour mon problème mais en vain. Juste une question, puis-je avoir ce résultat à chaque changement de cellule de compte de tous les onglets et sans action sur un bouton comme je l'ai fait pour déclencher ta macro.
MERCI DoubleZero.
 

DoubleZero

XLDnaute Barbatruc
Re : Liste dynamique sans doublon

Bonjour, le Fil, le Forum,

... sans action sur un bouton...

L'élimination des doublons a lieu avant l'importation des données.

Pour ce travail, je fais appel à un onglet temporaire et ne vois, malheureusement, pas comment procéder autrement pour éviter de cliquer sur un bouton.

Une autre personne saura certainement trouver une meilleure solution.

A bientôt :)
 

Modeste

XLDnaute Barbatruc
Re : Liste dynamique sans doublon

Bonjour le fil,

J'avoue n'avoir pas tout lu en détail, mais l'occasion était trop belle de venir embrasser goulûment mon ânesse préférée ... voilà qui est fait!
Peut-être déclencher la macro sur l'événement Activate de la feuille Cumul? De cette manière , le code s'exécutera chaque fois qu'on activera cette feuille, pour la consulter, par exemple. et si je n'ai pas compris, c'est trop tard: j'ai déjà déposé deux bises :p
 

DoubleZero

XLDnaute Barbatruc
Re : Liste dynamique sans doublon

Re-bonjour, bonjour mon Modeste préféré :D,

@ Modeste :

...et si je n'ai pas compris, c'est trop tard: j'ai déjà déposé deux bises :p

Non, ce n'est pas trop tard mais tant mieux parce que je suis ravie de te rencontrer et t'embrasser itou :D !

J’ai bien pensé également à l’événement « Activate » qui me renvoie l’ "Erreur exécution 9 " - L’indice n’appartient pas à la sélection - « Sheets("Temp").Activate » est surligné en jaune.

A bientôt :):)
 

Modeste

XLDnaute Barbatruc
Re : Liste dynamique sans doublon

Re,

L'occasion était trop belle de venir embrasser ... Ah non, je ne peux pas le refaire une deuxième fois :(

Si j'ai bien compris "l'affaire", il me semble qu'on pourrait se simplifier la vie (et donc se passer de la feuille Temp) si on se contente de générer la liste des noms sans doublons en colonne B de la feuille "Cumul", par macro (avec un "dictionary", par exemple) ... le reste du boulot pouvant se faire, dans cette même feuille avec une formule du genre
Code:
=SOMME.SI(INDIRECT("'"&C$2&"'!B2:B20");$B4;INDIRECT("'"&C$2&"'!C2:C20"))
à recopier en bas et à droite
 

DoubleZero

XLDnaute Barbatruc
Re : Liste dynamique sans doublon

Re-bonjour,

Ci-joint un nouveau fichier à tester... dépourvu de bouton sans, toutefois, utiliser "dictionary"... que je suis trop bête à comprendre :rolleyes: !

A bientôt :):)
 

Pièces jointes

  • 00 - porsche - Données transférer - V2.xls
    80 KB · Affichages: 68
Dernière édition:

porsche

XLDnaute Nouveau
Re : Liste dynamique sans doublon

Bonjour DoubleZero,

Nickel, juste ce que je cherchais. Maintenant il me reste à comprendre comment fonctionne cette macro pour savoir la refaire à mon fichier. J'avais trouvé une autre solution pour créer la liste mais je n'arrive pas à l'adapter à mon fichier. Je te joins la macro pour exemple d'un tableau comme celui-ci, si tu peux me commenter ce que fait chaque ligne de cette macro, ca serait gentil:

Nom Prénom Prestation
A V 7
A X 7
AA F 3
B W 8
BB W 8
C X 19
D Y 22
ZZ ZZ 10


Fusion/Consolidation rapide

Sub FusionConso()
[A2:C1000].ClearContents
Application.ScreenUpdating = False
For s = 2 To Sheets.Count
Range(Sheets(s).[A2], Sheets(s).[A65000].End(xlUp).End(xlToRight)).Copy [A65000].End(xlUp).Offset(1, 0)
Next s
[A1:C1000].Sort Key1:=[A2], Order1:=xlAscending, Key2:=[B2], Order2:=xlAscending, Header:=xlGuess
Set mondico = CreateObject("Scripting.Dictionary")
For i = 2 To [A65000].End(xlUp).Row
temp = Cells(i, "A") & "_" & Cells(i, "B")
mondico(temp) = mondico(temp) + Cells(i, "C")
Next
[A2:C1000].ClearContents
[A2].Resize(mondico.Count) = Application.Transpose(mondico.keys)
[C2].Resize(mondico.Count) = Application.Transpose(mondico.items)
Application.DisplayAlerts = False
[A2:A1000].TextToColumns Destination:=Range("A2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="_"
End Sub


Un grand merci d'avance.
 

DoubleZero

XLDnaute Barbatruc
Re : Liste dynamique sans doublon

Bonjour, le Fil, le Forum,

Comme je j’ai mentionné en #12, le fonctionnement de « dictionary » m’échappe totalement. Il m’est, par conséquent, difficile de commenter le code que tu exposes en #13.

Si le fichier initialement joint en #1 est le reflet exact du fichier de travail, je ne vois pas où se situe la difficulté mais peux, volontiers, commenter le code que j’utilise tout comme la portion de code que j’emprunte.

VB:
Option Explicit
'procédure événementielle évitant d'utiliser le bouton
Private Sub Worksheet_Activate()
'déclaration de la variable onglet
Dim w As Worksheet
'affichage figer
Application.ScreenUpdating = False
'effacemement des cellules b4 à b18
Range("B4:N18").ClearContents
'insertion de quatre colonnes
Columns("A:D").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
'cellule a1 = N° compte
Range("a1").Value = "N° compte"

'==============================================================================================
'Adaptation d'un code de Banzai64, merci !
  'recherche dans chaque onglet, excepté l'onglet "Cumul"
  For Each w In Sheets
    Select Case w.Name
      Case "Cumul"
      Case Else
        'recopie des valeurs mentionnées en colonne b pour un collage en colonne a, les unes en dessous des autres
		If w.Range("b2") <> "" Then w.Range("b2:b" & w.Range("b" & Rows.Count).End(xlUp).Row).Copy _
                Destination:=Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
    End Select
  Next
'==============================================================================================

'lancement d'un filtre élaboré sur les données de la colonne a, pour obtenir, en colonne d, une liste sans doublon
Range("A2").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("D1"), Unique:=True
Range("D1").Delete Shift:=xlUp
'copie de la liste sans doublon en f4
Range(Range("d1"), Range("d1").End(xlDown)).Copy Destination:=Sheets("Cumul").Range("f4")
'suppression de quatre colonnes
Columns("A:D").Delete Shift:=xlToLeft
'insertion des formules pour chaque cellule renseignée en colonne B
Range("c4:c" & Range("B65536").End(xlUp).Row).FormulaR1C1 = "=SUMIF(Janvier!C[-1]:C,Cumul!RC[-1],Janvier!C)"
Range("d4:d" & Range("B65536").End(xlUp).Row).FormulaR1C1 = "=SUMIF(Février!C[-2]:C[-1],Cumul!RC[-2],Février!C[-1])"
Range("e4:e" & Range("B65536").End(xlUp).Row).FormulaR1C1 = "=SUMIF(Mars!C[-3]:C[-2],Cumul!RC[-3],Mars!C[-2])"
Range("f4:f" & Range("B65536").End(xlUp).Row).FormulaR1C1 = "=SUMIF(Avril!C[-4]:C[-3],Cumul!RC[-4],Avril!C[-3])"
Range("g4:g" & Range("B65536").End(xlUp).Row).FormulaR1C1 = "=SUMIF(Mai!C[-5]:C[-4],Cumul!RC[-5],Mai!C[-4])"
Range("h4:h" & Range("B65536").End(xlUp).Row).FormulaR1C1 = "=SUMIF(Juin!C[-6]:C[-5],Cumul!RC[-6],Juin!C[-5])"
Range("i4:i" & Range("B65536").End(xlUp).Row).FormulaR1C1 = "=SUMIF(Juillet!C[-7]:C[-6],Cumul!RC[-7],Juillet!C[-6])"
Range("j4:j" & Range("B65536").End(xlUp).Row).FormulaR1C1 = "=SUMIF(Aout!C[-8]:C[-7],Cumul!RC[-8],Aout!C[-7])"
Range("k4:k" & Range("B65536").End(xlUp).Row).FormulaR1C1 = "=SUMIF(Septembre!C[-9]:C[-8],Cumul!RC[-9],Septembre!C[-8])"
Range("l4:l" & Range("B65536").End(xlUp).Row).FormulaR1C1 = "=SUMIF(Octobre!C[-10]:C[-9],Cumul!RC[-10],Octobre!C[-9])"
Range("m4:m" & Range("B65536").End(xlUp).Row).FormulaR1C1 = "=SUMIF(Novembre!C[-11]:C[-10],Cumul!RC[-11],Novembre!C[-10])"
Range("n4:n" & Range("B65536").End(xlUp).Row).FormulaR1C1 = "=SUMIF(Décembre!C[-12]:C[-11],Cumul!RC[-12],Décembre!C[-11])"
'affichage libérer
Application.ScreenUpdating = True
End Sub


A bientôt de connaître ton réel besoin :).
 

Si...

XLDnaute Barbatruc
Re : Liste dynamique sans doublon

salut

voici 2 autres propositions.
La première correspond à ta demande initiale : répercussion à la saisie. Je ne pense pas pas que cela soit la meilleure idée. La seconde,comme celle de DoubleZero :), complète la feuille du résumé à son activation.
Si... la casse est importante par contre le nombre de lignes de saisie par feuille n'est pas limité.
 

Pièces jointes

  • Cumuls(Saisie).xls
    61.5 KB · Affichages: 55
  • Cumuls(Activation).xls
    63.5 KB · Affichages: 48

Discussions similaires

Statistiques des forums

Discussions
312 613
Messages
2 090 232
Membres
104 455
dernier inscrit
alix