Afficher le détail d'une Somme.Si avec macro

ikuchan07

XLDnaute Nouveau
Bonjour à tous !

J'aimerais savoir s'il est possible d'afficher le détail d'une "Somme.Si.Ens" avec une macro, c'est à dire une sorte de fenêtre pop up qui s'ouvre lorsque je clique sur une cellule, me résumant quelles lignes ont été auditionnées.
Je vais tenter d'être la plus précise possible, en vous joignant le fichier avec l'exemple que j'ai fait.

Dans mon fichier, je somme les types de produits vendus selon le numéro du commercial, la catégorie et la période donnée. Certains produits font partie d'une catégorie mais d'autres ne peuvent pas être classifiés et se retrouvent dans "Autres" (feuille3).
Ceci est à titre d'exemple, le fichier que je dois monter est plus conséquent et il m'est impossible de changer de méthode, je ne peux faire mes sommes que de cette façon.

Ce que je souhaiterais c'est que lorsque je clique dans la cellule D12 (feuille3), une fenêtre s'affiche me détaillant les lignes (produits, valeur) qui ont été additionnées à partir de la "feuille2". Je ne veux que le détail de tout ce qui se retrouve dans "Autres" (feuille3).

Est-ce vraiment possible d'avoir un tel résultat ou bien y en a t-il un autre plus simple ? Car je ne m'y connais pas du tout en VBA.

Merci d'avance.
 

Pièces jointes

  • Brouillon1.xlsx
    12.5 KB · Affichages: 45

JHA

XLDnaute Barbatruc
Bonjour à tous,

Un exemple par TCD qui peut peut être te servir.
Lorsque tu doube clic sur le carré noir en bas de la cellule "B7", il t'affiche le détail sur une autre feuille.

JHA
 

Pièces jointes

  • Brouillon1.xlsx
    22.8 KB · Affichages: 50

ikuchan07

XLDnaute Nouveau
Bonjour,

Merci beaucoup pour votre aide. J'ai compris le principe, mais j'aimerais que ça me donne le détail des sommes dans "Autres" (feuille3) uniquement, ça contient des produits qui ne sont pas identiques et dont je ne peux avoir les sommes qu'à travers une Somme.Si.Ens.
On ne peut pas les retrouver à travers un TCD.
 

job75

XLDnaute Barbatruc
Bonjour ikuchan07, JHA,

Le plus simple est d'insérer une image dans un commentaire mais il faut du VBA.

Ce code est à placer dans le module de Feuil3 (clic droit sur l'onglet et Visualiser le code) :
Code:
Private Sub Worksheet_Activate()
Dim execution As Byte, c As Range, f As String
Application.ScreenUpdating = False
For execution = 1 To 2
    For Each c In IIf(execution = 1, [D12:O12], [D21:O21])
        f = c.Formula
        f = IIf(execution = 1, Replace(f, "A7", Me.Name & "!A$7"), Replace(f, "A16", Me.Name & "!A$16"))
        f = Replace(Replace(Replace(Replace(f, "$A:$A", "A2"), "$B:$B", "B2"), "$C:$C", "C2"), "$D:$D", "D2")
        f = Replace(Replace(Replace(Replace(f, "A:A", "A2"), "B:B", "B2"), "C:C", "C2"), "D:D", "D2") 'si références relatives
        With Sheets("BDD").[A1].CurrentRegion 'nom de la feuille à adapter
            .Cells(2, .Columns.Count + 2) = f 'critère de filtrage en F2
            .AdvancedFilter xlFilterInPlace, .Cells(1, .Columns.Count + 2).Resize(2)
            InsereImage .Cells, c
            If .Parent.FilterMode Then .Parent.ShowAllData 'RAZ
        End With
Next c, execution
End Sub

Sub InsereImage(plage As Range, cel As Range)
plage.CopyPicture
With plage.Parent.ChartObjects.Add(0, 0, plage.Width, plage.Height).Chart
    .Paste
    .Export ThisWorkbook.Path & "\MonImage.gif", "GIF"
    .Parent.Delete 'supprime le graphique temporaire
End With
cel.ClearComments
With cel.AddComment("").Shape
    .Width = plage.Width
    .Height = plage.Height
    .Fill.UserPicture ThisWorkbook.Path & "\MonImage.gif"
End With
Kill ThisWorkbook.Path & "\MonImage.gif" 'supprime le fichier gif
End Sub
Le filtre avancé est utilisé.

Fichier joint, la macro se déclenche quand on active la feuille.

A+
 

Pièces jointes

  • Image dans commentaire(1).xlsm
    56.3 KB · Affichages: 55

job75

XLDnaute Barbatruc
Re,

Normalement il y aura une formule dans toutes les cellules étudiées mais j'ai quand même ajouté :
Code:
        If Left(f, 1) <> "=" Then f = False
la variable f étant déclarée As Variant.

Fichier (2).

Je mets un "J'aime" au post #1 car c'est un problème intéressant, surtout pour un 1er message !

A+
 

Pièces jointes

  • Image dans commentaire(2).xlsm
    44.4 KB · Affichages: 65

ikuchan07

XLDnaute Nouveau
Bonjour job75,

Merci pour cet exemple, c'est effectivement plus simple de cette façon. Mais je ne comprend pas le principe de l'image dans un commentaire.
Je vois le carré du commentaire mais il est vide, je dois insérer le détail des sommes manuellement ? Je suis désolé je n'y connais rien en VBA.
 

job75

XLDnaute Barbatruc

job75

XLDnaute Barbatruc
Re,

Je joins quand même ce fichier (3) avec des formules plus générales :

- en D8 à copier-coller sur D8:O11 et D17:O20

- en D12 à copier-coller sur D12:O12 et D21:O21, dans cette formule il faut préciser la feuille de toutes les références.

A+
 

Pièces jointes

  • Image dans commentaire(3).xlsm
    45.4 KB · Affichages: 31

ikuchan07

XLDnaute Nouveau
J'ai essayé la méthode du "copier comme image" du coup mais ça ne marche pas non plus. Par contre lorsque j'ouvre votre fichier (3), je tombe sur la "feuille 2" et la je vois parfaitement le détail des sommes dans les commentaires.
Puis quand je clique sur la feuille "BDD" et je reviens dans la "feuille 2", l'actualisation fait perdre tout, les textes dans les commentaires disparaissent.
Donc le problème viendrait peut être de l'actualisation, sinon ça marche très bien merci beaucoup :)
Je m'en vais donc essayer avec vos formules générales, en évitant l'actualisation ça devrait aller.

Bonne soirée.
 

Noel Bedard

XLDnaute Occasionnel
Bonsoir à Tous,

Pour moi c'est fonctionnelle. Voir l'exemple. Je suis sous Excel 2007, J'ai copié la BDD pour mars et avril et toujours OK.

Les images s'affichent dans les fenêtres commentaires comme Job75 le mentionne.

Par contre si plus d'un montant avec le même nom du produit j'ai un commentaire vide, il faut donc entrer un nom différent pour le produit.
J'ai entré quatre produits et ils s'affichent très bien.

Si ça peut servir.

Bonne soirée
Noel
 

Pièces jointes

  • Image dans commentaire NB.xlsm
    59.6 KB · Affichages: 51

job75

XLDnaute Barbatruc
Re,

Un grand merci Noël pour ton aide.

Avec ton fichier j'ai un bug sur .Paste car la feuille BDD est filtrée, créer un graphique dessus c'est pas génial.

J'ai donc remplacé dans la macro InsereImage :
Code:
With plage.Parent.ChartObjects.Add(0, 0, plage.Width, plage.Height).Chart
par :
Code:
With ActiveSheet.ChartObjects.Add(0, 0, plage.Width, plage.Height).Chart
Quant aux doublons de produits ils ne semblent pas poser de problème, voir les cellules D21 F21 G21.

Fichier (4) joint, peut-être que maintenant il fonctionnera chez ikuchan07.

Bonne nuit.
 

Pièces jointes

  • Image dans commentaire(4).xlsm
    59.2 KB · Affichages: 54

job75

XLDnaute Barbatruc
Bonjour ikuchan07, Noël, le forum,

Si les commentaires restent vides avec le fichier (4) essayez ce fichier (4 bis) avec cette macro :
Code:
Sub InsereImage(plage As Range, cel As Range)
plage.CopyPicture
With ActiveSheet.ChartObjects.Add(0, 0, plage.Width, plage.Height).Chart
    .Parent.Activate 'force le focus sur l'objet
    .Paste
    .Export ThisWorkbook.Path & "\MonImage.gif", "GIF"
    .Parent.Delete 'supprime le graphique temporaire
End With
ActiveCell.Activate
cel.ClearComments
With cel.AddComment("").Shape
    .Width = plage.Width
    .Height = plage.Height
    .Fill.UserPicture ThisWorkbook.Path & "\MonImage.gif"
End With
Kill ThisWorkbook.Path & "\MonImage.gif" 'supprime le fichier gif
End Sub
Je vais d'ailleurs proposer cette solution à l'ami pompaero sur l'autre fil.

Bonne journée.
 

Pièces jointes

  • Image dans commentaire(4 bis).xlsm
    59.7 KB · Affichages: 46

ikuchan07

XLDnaute Nouveau
Bonjour Noel et job75,

Merci infiniment à vous tous !
C'est bon ça marche très bien avec votre nouvelle version (4 bis), l'actualisation se fait correctement et je vois bien les commentaires :) :) :)
Je suis entrain d'étudier votre nouvelle marco pour bien comprendre ce qui a changé.

Une dernière question s'il vous plait. Que faut-il changer dans le code si j'ajoute par exemple de nouveaux numéros dans la BDD (Ex: 3, 4, 5....etc) ?
Car mon fichier final sera beaucoup plus conséquent.

Merci à vous.
 

job75

XLDnaute Barbatruc
Re,
C'est bon ça marche très bien avec votre nouvelle version (4 bis), l'actualisation se fait correctement et je vois bien les commentaires :) :) :)
J'ai donc enfin trouvé la solution du problème, pompaero va être content, mais est-ce que le fichier (4) fonctionne lui ?

Pour ce qui est de créer d'autres numéros voyez ce fichier (5).

J'ai d'abord créé dans Feuil3 les tableaux des numéros de 3 à 10 par simple copier-coller de la plage A16: P24 vers le bas.

Et j'ai modifié la macro Worksheet_Activate ainsi :
Code:
For execution = 1 To 10
    For Each c In [D12:O12].Offset(9 * execution - 9)
        f = c.Formula
        f = Replace(f, "A" & 9 * execution - 2, "A$" & 9 * execution - 2)
A+
 

Pièces jointes

  • Image dans commentaire(5).xlsm
    122.7 KB · Affichages: 23

eriiic

XLDnaute Barbatruc
Bonjour,

pour le TCD il te suffit d'ajouter un champ Catégorie qui la fabrique selon les articles.
Ensuite un simple double-clic sur une valeur du TCD te donne le détails, voire même tout simplement filtrer ta base.
eric
 

Pièces jointes

  • Brouillon1.xlsx
    18.3 KB · Affichages: 51

Discussions similaires

Réponses
10
Affichages
359
Réponses
9
Affichages
369

Statistiques des forums

Discussions
315 096
Messages
2 116 183
Membres
112 677
dernier inscrit
Justine11