Faire le produit d'un groupe

Sophie11

XLDnaute Occasionnel
Bonjour,
j'aimerais faire le produit de mes groupes de cellules X, Y, etc... , je pensais regrouper par classe puis les multiplier mais je n'arrive pas. si vous avez une idée... je vous poste un exemple. Merciii
 

Pièces jointes

  • poduit_sophie.xls
    13.5 KB · Affichages: 68
  • poduit_sophie.xls
    13.5 KB · Affichages: 66
  • poduit_sophie.xls
    13.5 KB · Affichages: 66

Sophie11

XLDnaute Occasionnel
Re : Faire le produit d'un groupe

Merci pour ta reponse mais je ne comprends pas ta formule et je n'arrive pas à la faire fonctionner (je sais faire des matrices), il faut bien comprendre que je dispose que du tableau C6:E10

si vous avez une idée??? je pensais le faire en VBA et ne pas avoir à utiliser des matrices
 

Minick

XLDnaute Impliqué
Re : Faire le produit d'un groupe

Ok, mais c'etait pas precise le vba...

Salut a tous,

Et pierrejean avait compris comme moi que le 2eme tableau existait deja alors que ce n'est pas le cas...

Un exemple avec juste le tableau de depart:
Code:
    Dim Tablo As Object
    Dim cle As String
    Dim Cpt As Integer
    Dim Cles As Variant, Valeurs As Variant

    Range("J6").CurrentRegion.ClearContents
    
    Set Tablo = CreateObject("Scripting.Dictionary")

    For Cpt = 6 To 10
        cle = Range("C" & Cpt).Value & "µ" & Range("E" & Cpt).Value
        If Tablo.exists(cle) Then
            Tablo.Item(cle) = Tablo.Item(cle) * Range("D" & Cpt).Value
        Else
            Tablo.Add cle, Range("D" & Cpt).Value
        End If
    Next

    Cles = Tablo.keys
    Valeurs = Tablo.items
    For Cpt = 0 To Tablo.Count - 1
        Range("J" & Cpt + 6).Value = Split(Cles(Cpt), "µ")(0)
        Range("L" & Cpt + 6).Value = Split(Cles(Cpt), "µ")(1)
        Range("K" & Cpt + 6).Value = Valeurs(Cpt)
    Next
    
    Range("J6:L" & Tablo.Count + 5).Sort key1:=Range("J6"), order1:=xlAscending, key2:=Range("L6"), order2:=xlAscending, header:=xlNo
    
    Set Tablo = Nothing
 

Sophie11

XLDnaute Occasionnel
Re : Faire le produit d'un groupe

oui Minik tu as parfaitement compris; je dispose que du tableau C6:E10.
Par contre si j'ajoute d'autre variable CCC, DDD en plus des cellules existantes (je cree des lignes supplementaire) ca ne les prends pas en compte???? et que signie le signe µ ?
Dans le code de Pierre Jean, j'arrive à comprendre parfaitement son code mais bon ce n'était pas ce que je voullais. (je m'excuse si je m'exprime mal) merci encore :)

ps: mon pb de zip est regler :p :p
 
Dernière édition:

Minick

XLDnaute Impliqué
Re : Faire le produit d'un groupe

Salut,

Pour plus de ligne, il suffit de changer cette ligne:
Code:
For Cpt = 6 To 10
comme ceci
Code:
For Cpt = 6 To Range("C6").End(xlDown).Row

Le µ sert a creer la cle unique (couple colonne C/ colonne E)
pour savoir si l'on a deja le coupe dans le dictionnaire et si c'est le cas
prendre la valeur du dictionnaire pour la multiplier a la nouvelle valeur.
Et ensuite (avec le split) il sert a retrouver la partie colonne C et la partie colonne D
pour l'affichage du tableau final.

Si tu as un grand nombre de ligne, pense a bloquer l'affichage pendant le traitement(Application.Screenupdating = False) et avant de quitter le debloquer
 

pierrejean

XLDnaute Barbatruc
Re : Faire le produit d'un groupe

Re

Avec mes excuses pour avoir mal compris ton problème

Edit: Salut Minick
decidement il faut que je me mettes au dictionnaire !!!
 

Pièces jointes

  • poduit_sophie.xls
    42 KB · Affichages: 68
  • poduit_sophie.xls
    42 KB · Affichages: 59
  • poduit_sophie.xls
    42 KB · Affichages: 64
Dernière édition:

Sophie11

XLDnaute Occasionnel
Re : Faire le produit d'un groupe

Merci Minick pour tes explications précieuse, par contre si les valeurs X ou Y representent une date, ça marche mais ça me reconnais comme du texte et pas une date :(
@ Pierre Jean merci pour ton code mais si mes valeurs X ou Y (colonne E) representent une date, la macro ne marche plus, pourquoi???
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Faire le produit d'un groupe

Re

Parceque Excel voit une date sous forme de texte et la traduit selon le mode americain
Pour qu'il la traduise dans le mode français il faut lui appliquer la conversion Cdate

Voila qui est fait dans ce fichier qui fonctionne avec des dates et devrait egalement fonctionner avec autre chose
 

Pièces jointes

  • poduit_sophie.xls
    43.5 KB · Affichages: 58
  • poduit_sophie.xls
    43.5 KB · Affichages: 55
  • poduit_sophie.xls
    43.5 KB · Affichages: 60

Minick

XLDnaute Impliqué
Re : Faire le produit d'un groupe

Re,

Meme chose que pierrejean (pb de format)

change ceci:
Code:
Range("L" & Cpt + 6).Value = Split(Cles(Cpt), "µ")(1)
en ceci
Code:
Range("L" & Cpt + 6).Value = CDate(Split(Cles(Cpt), "µ")(1))
 

Discussions similaires

Statistiques des forums

Discussions
315 108
Messages
2 116 280
Membres
112 712
dernier inscrit
sarah.arnold.edc@hotmail.