récupérer données sans doublons d'une colonne pour les utiliser comme critères

cstef

XLDnaute Nouveau
Bonjour,

je vais tenter de vous expliquer ce que je eux faire (en vain!) :

toutes les 9 colonnes, la colonne en question comporte un listing de commande (parfois avec des cellules vides).
je voudrais en bas de cette colonne (lignes 8 à 70) un récapitulatif des commandes avec la somme des volumes correspondants.
en effet, dans la partie listing (lignes à 70) de la colonne, une même commande peut revenir plusieurs fois.

exemple dans la colonne 5 lignes 8 à 70 :
C1
c2
c1
c2
avec les volumes correspondants en colonne 1

je voudrais un récap en dessous

C1 => somme des volumes correspondants
C2 => ...

le hic est que je n'arrive pas à récupérer la liste des valeurs de la colonne 5 sans doublons.

en mettant un filtre automatique, je peux choisir dans la liste ce que je veux afficher, mais je n'arrive pas à récupérer cette liste pour ensuite m'en servir de référence pour faire les sommes.

si vous pouvez m'aider, merci à vous.
 

david84

XLDnaute Barbatruc
Re : récupérer données sans doublons d'une colonne pour les utiliser comme critères

Bonjour cstef, salut Hoerwind,
un fichier présentant ton exemple avec quelques explications nous aiderait sans doute à t'aider plus efficacement.
A+
 

hoerwind

XLDnaute Barbatruc
Re : récupérer données sans doublons d'une colonne pour les utiliser comme critères

Re,

Vois la pièce jointe.
 

Pièces jointes

  • ListeSansDoublons.zip
    32.8 KB · Affichages: 399
  • ListeSansDoublons.zip
    32.8 KB · Affichages: 369
  • ListeSansDoublons.zip
    32.8 KB · Affichages: 364

cstef

XLDnaute Nouveau
Re : récupérer données sans doublons d'une colonne pour les utiliser comme critères

merci beaucoup!

un truc avec la formule matricielle ... si on va dans ces cellules là, çà me met impossible de modifier .... et çà me fait planter excel, voir l'ordi.
il faut prévoir d'emblée la place nécessaire à l'établissement de la liste?
 

david84

XLDnaute Barbatruc
Re : récupérer données sans doublons d'une colonne pour les utiliser comme critères

Re,
pour récupérer les valeurs sans doublons de la colonne E :
=INDEX($E$8:$E$70;EQUIV(MIN(SI(NB.SI($F$7:F7;$E$8:$E$70)=0;LIGNE($E$8:$E$70)));SI(NB.SI($F$7:F7;$E$8:$E$70)=0;LIGNE($E$8:$E$70));0))&""
Formule matricielle à valider par ctrl, maj et entrée.
 

cstef

XLDnaute Nouveau
Re : récupérer données sans doublons d'une colonne pour les utiliser comme critères

je ne m'en sors pas car il faudrait que je recopie si j'ai bien compris (ce n'est pas si sûr), la formule sur 70 cellules dans l'hypothèse où j'aurais 70 valeurs différentes.
Si j'ai des cellules vides, çà me décale d'autant dans la liste.
 

job75

XLDnaute Barbatruc
Re : récupérer données sans doublons d'une colonne pour les utiliser comme critères

Bonjour cstef, salut hoerwind, david84,

Une solution VBA, si j'ai bien compris :

Code:
Sub Synthese()
Dim derlig&, tablo, d As Object, i&, x&, t(), n&
derlig = Range("B8").End(xlDown).Row - 1
tablo = Range("B8:E" & derlig)
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(tablo)
  If tablo(i, 4) <> "" Then
    If d.exists(tablo(i, 4)) Then
      x = Application.Match(tablo(i, 4), d.items, 0) - 1
      t(x) = t(x) + tablo(i, 1)
    Else
      d.Add tablo(i, 4), tablo(i, 4)
      ReDim Preserve t(n)
      t(n) = tablo(i, 1)
      n = n + 1
    End If
  End If
Next
'---Restitution sous le tableau---
Range(Cells(derlig + 4, "B"), Cells(65536, "C")).ClearContents
Cells(derlig + 4, "B").Resize(n) = Application.Transpose(d.items)
Cells(derlig + 4, "C").Resize(n) = Application.Transpose(t)
End Sub

Fichier joint.

Edit : la colonne C est mise au format [h]:mm:ss

A+
 

Pièces jointes

  • exemple_(1).zip
    41.3 KB · Affichages: 316
Dernière édition:

cstef

XLDnaute Nouveau
Re : récupérer données sans doublons d'une colonne pour les utiliser comme critères

ok merci çà marche impecc.

par contre, je dois faire cette manipulation toutes les 9 colonnes.
çà va faire beaucoup en terme de macro, çà m'en fait pas loin de 15 par feuille excel.

Comment peut-on faire cela? on fait autant de fois ou peut-on automatiser?
 

job75

XLDnaute Barbatruc
Re : récupérer données sans doublons d'une colonne pour les utiliser comme critères

Re,

On peut (presque) tout automatiser avec VBA.

Mais dans le fichier, je ne vois qu'un seul tableau et qu'une seule feuille :rolleyes:

Faites des boucles...

A+
 

cstef

XLDnaute Nouveau
Re : récupérer données sans doublons d'une colonne pour les utiliser comme critères

bonsoir,

alors j'ai essayé de transposer .... mission non accomplie.
le fichier exemple fonctionne (hormis les doublons), c'est impeccable.
A chaque nouvelle entrée, un clic et cela est mis à jour.
dans mon fichier, çà ne fonctionne pas et çà ne me gère pas les doublons.

POur les boucles, sur quelles critères je peux me baser car (cf. fichier joint), j'ai plein de cellules vides.
en effet, le tri concerne au départ les colonnes 8 et 11 puis cela doit se refaire avec un décalage de 7 colonnes (16 et 19 ...jusqu'à 254).

merci à vous
 

Pièces jointes

  • FICHIER_TEST.zip
    32.4 KB · Affichages: 92
  • FICHIER_TEST.zip
    32.4 KB · Affichages: 100
  • FICHIER_TEST.zip
    32.4 KB · Affichages: 87

job75

XLDnaute Barbatruc
Re : récupérer données sans doublons d'une colonne pour les utiliser comme critères

Bonjour cstef, le fil, le forum,

Voyez ces 2 macros dans le code de la feuille "MOIS" :

Code:
Private Sub CommandButton1_Click()
Dim col As Byte
Application.ScreenUpdating = False
Me.AutoFilterMode = False 'filtre automatique désactivé
For col = 8 To Range("IV7").End(xlToLeft).Column Step 8
  [COLOR="Red"]Synthese col[/COLOR]
Next
End Sub

Sub Synthese([COLOR="red"]col As Byte[/COLOR])
Dim derlig&, tablo, d As Object, i&, x&, t(), n&
derlig = Cells(8, col).End(xlDown).Row - 1
tablo = Range(Cells(8, col), Cells(derlig, col + 3))
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(tablo)
  If tablo(i, 4) <> "" Then
    If d.exists(tablo(i, 4)) Then
      x = Application.Match(tablo(i, 4), d.items, 0) - 1
      t(x) = t(x) + tablo(i, 1)
    Else
      d.Add tablo(i, 4), tablo(i, 4)
      ReDim Preserve t(n)
      t(n) = tablo(i, 1)
      n = n + 1
    End If
  End If
Next
'---Restitution sous le tableau---
Range(Cells(derlig + 4, col), Cells(65536, col + 1)).ClearContents
If n = 0 Then Exit Sub 'si aucune valeur
Cells(derlig + 4, col).Resize(n) = Application.Transpose(d.items)
Cells(derlig + 4, col + 1).Resize(n) = Application.Transpose(t)
End Sub

A+
 

Pièces jointes

  • FICHIER_TEST(1).zip
    35.4 KB · Affichages: 179

cstef

XLDnaute Nouveau
Re : récupérer données sans doublons d'une colonne pour les utiliser comme critères

bonjour,

waouh çà c'est du boulot ...
avant d'avoir le message, j'ai essayé avec valeur uniques et formules matricielles, colonne par colonne.
et comme après je veux faire la synthèse de toutes ces données dans une autre feuille, j'ai repris les formules matricielles.
je fais la liste de toutes les données puis avec valeurs uniques j'extraie sans doublon et ensuite je recopie cette liste ...
Je joins le fichier ...... car c'est d'un lourd ...

sur le fichier je n'arrive pas à faire que le tableu de synthèse se fasse en h107 au lieu de h74. j'ai pourtant modifié dans la macro dans la partie restitution sous forme de tableau (en mettant +20 au lieu de +4).

comment faire pour envoyer un fichier supérieur à 50 ko?
 

Discussions similaires

Réponses
9
Affichages
133

Statistiques des forums

Discussions
312 201
Messages
2 086 170
Membres
103 151
dernier inscrit
nassim