Novice a besoin d'aide

roro22

XLDnaute Nouveau
bonjour.

j'ai un historique en feuil1 et un tableau de Pareto dans la feuil2 je voudrais récupérer une fois chaque "Code Déf." du tableau d'historique et les retrouver dans "Code Déf." du tableau de Pareto.
Je voudrai que la somme Des TTR correspondant au "Code Déf." se retrouve dans le tableau de Pareto et que le "Code Déf." et les TTR soit ranger automatiquement dans l'ordre décroissant et que le tableau de Pareto évolue automatiquement en fonction de l'évolution de l'historique.
Je ne suis peut-être pas très claire dans mais explication, donc si vous ne comprenais pas posé moi des question.
Je vous remercie d'avance.
 

Pièces jointes

  • HISTORIQUE.xlsx
    28 KB · Affichages: 68
  • HISTORIQUE.xlsx
    28 KB · Affichages: 77
  • HISTORIQUE.xlsx
    28 KB · Affichages: 78

hbenalia

XLDnaute Occasionnel
Re : Novice a besoin d'aide

Bonjour à tous,

Avec des transformations sur le fichier (ajout de formules, mise en forme conditionnelle), une nouvelle feuille "Pareto_1" donne les codes et les TTRs dans leur ordre de parution dans le tableau d'historique (sans doublons et non triés) et dans la feuille "Pareto" le tableau de la feuille "Pareto_1" y est reproduit avec collage spécial valeurs et trié par ordre décroissant selon le TTR via le bouton "macro".... Je n'ai pu faire mieux (Voir lien au dessous)...

Cordialement

HISTORIQUE.xlsm
 

hbenalia

XLDnaute Occasionnel
Re : Novice a besoin d'aide

Bonjour à tous,

Les ajouts de formules ou transformations ne doivent pas se faire dans la feuille "Pareto" sinon elles vont être supprimées en exécutant la macro. Voir fichier dans le lien ci-desous après correction de quelques formules et mises en formes conditionnelles... Il te reste la formule de la colonne "% Cumulé"...

Cordialement


HISTORIQUE_1.zip
 

Gorfael

XLDnaute Barbatruc
Re : Novice a besoin d'aide

Salut roro22 et le forum
Mis un peu de temps à répondre (on est en WE)... Mais comme je ne veux pas avoir travaillé pour rien, une macro :
Code:
Sub Test()
'Déclaration ==================================
Dim F_D As Worksheet, F_A As Worksheet
Dim X As Long, total As Double
'MEI ==========================================
Set F_D = Sheets("Histo.")
Set F_A = Sheets("Pareto")
'Effacement des anciennes données =============
With F_A
    If .Cells(Rows.Count, "B").End(xlUp).Row >= 9 Then _
                      .Range(.[B9], .Cells(Rows.Count, "B").End(xlUp)).EntireRow.Delete
    'si dernière ligne non vide de B >= 9 supprimer de ligne 9 à dernière non vide en B
End With
'recherche des valeurs ========================
'Copie des titres -----------------------------
With F_D
    If .FilterMode Then .ShowAllData
    'si la feuille est filtrée, afficher toutes les données
    X = [D8].End(xlDown).Row
    'calcul de la dernière ligne de donnée
    .Range(.[D8], .Cells(X, "D")).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    'Filtrer la plage D8 à dernière de D sur place, sans doublon
    .Range(.[D8], .Cells(X, "D")).Copy F_A.[B9]
    If .FilterMode Then .ShowAllData
End With
'Copie 1ère formule ---------------------------
F_A.Activate
If [G6] = "" And [G7] = "" Then
    [C9].FormulaLocal = _
          "=SOMMEPROD((Histo.!$D$8:$D$" & X & "=Pareto!B9)*(Histo.!$G$8:$G$" & X & "))"
End If
If [G6] > 0 And [G7] = "" Then
    [C9].FormulaLocal = _
          "=SOMMEPROD((Histo.!$D$8:$D$" & X & "=Pareto!B9)*(Pareto!$G$6<=Histo.!$B$8:$B$" & X & _
          ")*(Histo.!$G$8:$G$" & X & "))"
End If
If [G7] > 0 And [G6] = "" Then
    [C9].FormulaLocal = _
          "=SOMMEPROD((Histo.!$D$8:$D$" & X & "=Pareto!B9)*(Histo.!$B$8:$B$" & X & _
          "<=Pareto!$G$7)*(Histo.!$G$8:$G$" & X & "))"
End If
If [G6] > 0 And [G7] > 0 Then
    [C9].FormulaLocal = _
          "=SOMMEPROD((Histo.!$D$8:$D$" & X & "=Pareto!B9)*(Pareto!$G$6<=Histo.!$B$8:$B$" & X & _
          ")*(Histo.!$B$8:$B$" & X & "<=Pareto!$G$7)*(Histo.!$G$8:$G$" & X & "))"
End If

X = Cells(Rows.Count, "B").End(xlUp).Row

[C9].AutoFill Destination:=Range([C9], Cells(X, "C")), Type:=xlFillDefault
'Figeage valeurs + tri ===========================
With Range([B9], Cells(X, "C"))
    .Copy
    .PasteSpecial Paste:=xlPasteValues
    .Sort Key1:=Range("C9"), Order1:=xlDescending, Key2:=Range("B9") _
    , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1
End With
'Copie autre formules ============================
[D10].FormulaLocal = "=C10/somme($C$9:$C$" & X & ")"
[D10].NumberFormat = "0.00%"
[D10].Copy [D9]
[E9].FormulaLocal = "=D9"
[E10].FormulaLocal = "=D10+E9"
[D10:E10].Copy Range("D10:E" & X)
'Mise en forme ===================================
'Formatage données -------------------------------
With Range("B9:E" & X)
    With .Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With .Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With .Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With .Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With .Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With .Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
End With
'formatage titre --------------------------------
With [B8:E8]
    With .Borders(xlEdgeLeft)
        .LineStyle = xlDouble
        .Weight = xlThick
    End With
    With .Borders(xlEdgeBottom)
        .LineStyle = xlDouble
        .Weight = xlThick
    End With
    With .Borders(xlEdgeRight)
        .LineStyle = xlDouble
        .Weight = xlThick
    End With
End With
Range("B9").Activate
End Sub
Juste quelques remarques amodines :
- Sur un forum on ne paye pas, donc, surtout un samedi vers 1h00, il ne faut pas espérer avoir une réponse instantanée !
- Les connaissances de chacun sont individuelles : ce qui est évident pour l'un ne l'est pas forcément pour l'autre, et versa dans le vice => il vaut mieux expliquer par un ou deux exemple, que compter que l'autre va découvrir ce qu'on veut.
- Les macros s'apprennent... en les faisant. Excel fournit normalement (je ne connais pas les versions supérieure à 2003), un outils permettant de créer un code en faisant l'opération voulue manuellement (version 2003 : Menu Outils>>Macro>>nouvelle macro).
En regardant ce que fait le code, on peut commencer à apprendre. Aussi frustrante que soit l'aide (F1), elle renseigne pas mal.
Les forums sont là pour dépanner, mais aussi pour aider. Regarder les questions/solutions aide à comprendre.
- Il ne faut jamais hésiter à poser une question : le pire qui peut t'arriver, outre de te faire renvoyer sur l'aide, c'est d'être ridicule : mais sur un forum anonyme... et puis, ça ne tue pas, alors qu'une instruction mal comprise peut avoir des répercutions importantes.
A+
 

roro22

XLDnaute Nouveau
Re : Novice a besoin d'aide

désoler de te dérangé une fois de plus, mais le % cumulé doit être fait a partir du % ranger dans l'ordre décroissant, or si je le fait à partir de la feuille Pareto_1 le % n'est pas ranger dans l'ordre décroissant.
je te joint le lien du fichier avec formule dans Pareto pour te montrer ce que je veut afin que cela soit plus explicite. Et j'aimerai pouvoir filtrer en fonction des date ( par exemple toute les valeur entre le 1-janv-11 et le 15-juin-11 ).

Merci.
 

roro22

XLDnaute Nouveau
Re : Novice a besoin d'aide

Excuse moi mais je n'y connait vraiment rien en macro. c'est quoi le module générale? faut-il enlever l'ancienne macro et remettre cela à la place ? comment je doit procédé ?
Je suis actuellement sur le "site du zero" qui propose des tuto pour apprendre à ce servir d'excel, si cela peut vous intéressé.
 

Discussions similaires

Réponses
17
Affichages
1 K

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972