Gestion dynamique de liste

  • Initiateur de la discussion Initiateur de la discussion h_de_r
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

H

h_de_r

Guest
Bonjour à tous

Un petit problème qui se règlerait bien avec un "pivot table" mais que j'ai besoin de dynamiser.

J'ai une liste de points de ventes et une liste de produits.
Pour un jour donné, j'ai bien sûr le nombre de ventes effectuées dans chaque point de vente, et ce pour chaque produit.

J'aimerai sortir dynamiquement (pourquoi pas sur un nouvel onglet) la liste des produits présents pour une date donnée (quel que soit le point de vente) et la somme des ventes sur la journée pour chaque produit.
Si un produit est présent à une autre date, il ne doit pas apparaître...

Est-ce que c'est possible de le faire sans "pivot table"?

Merci d'avance pour votre aide!
HR
 

Pièces jointes

Re : Gestion dynamique de liste

Bonjour Laetitia

Merci baucoup pour ta réponse : c'est super!!

Grâce à cela je tiens le bon bout.

Pour continuer, il faudrait que dans les macros je puisse aller chercher la date de référence dans une feuille, les données dans une autre feuilles et finalement écrire la liste dans une troisième feuille (comme dans le doc joint).

Il y aurait sans doute moyen de passer par des 'Sheets("My_sheet").Select, mais cela me semble fastidieux.
Il y a sans doute plus simple non?

Par exemple, au lieu de faire
Sheets("My_Sheet"):Select
[a2:b10000].Clear

Est-ce qu'on ne peut pas faire un truc du genre
My_Sheet![a2:b10000].Clear
?

Cela aiderait beaucoup pour les formules qui suivent.

Merci d'avance.

HR
 
Re : Gestion dynamique de liste

bonjour h_de_r

utilisation de 2 objects
essai ce code plus simple & plus rapide
Code:
Sub es()
Dim m, n As Object, c As Range
On Error Resume Next
Application.ScreenUpdating = False
Sheets("Liste").Range("a2:c65536").Clear
Set m = CreateObject("Scripting.Dictionary")
Set n = CreateObject("Scripting.Dictionary")
With Sheets("Donnees")
For Each c In .Range("a2", .Cells(Rows.Count, "a").End(xlUp))
If c.Offset(0, 2) = Sheets("sheet3").Cells(1, 4) Then
m(c.Value) = m(c.Value) + 1
m(c.Value) = m(c.Value) + c.Offset(0, 3) - 1
n(c.Value) = n(c.Value) + 1
End If
Next c
End With
With Sheets("Liste")
.[a2].Resize(m.Count, 1) = Application.Transpose(m.Keys)
.[b2].Resize(m.Count, 1) = Application.Transpose(m.Items)
.[c2].Resize(n.Count, 1) = Application.Transpose(n.Items)
End With
Sheets("Liste").[b1] = Sheets("sheet3").[d1]
Set m = Nothing: Set n = Nothing
End Sub
 
Re : Gestion dynamique de liste

Hello

Pour l'instant, la première version que tu m'as envoyée fonctionne à merveille 🙂 ... après pas mal de modif pour s'adapter au vrai doc.

Donc je vais garder le second code : si jamais le calcul est trop long sur mes 20 000 lignes de données, il serait effectivement sympa d'avoir une verison plus rapide : je t'en remercie!!

Cheers

HR
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
700
Réponses
0
Affichages
430
Réponses
7
Affichages
391
Réponses
4
Affichages
657
Retour