XL 2013 Code pour résumer des données et les coller dans une autre feuille

luke3300

XLDnaute Impliqué
Bonjour à tous,

j'aimerais pouvoir formaté et résumé une base de données de manière simple via un code.

Ma base de donnée ne se présente pas toujours de la même manière et la seule chose qui reste et qui m'intéresse c'est à partir de la ligne où il est indiqué "COMPARAISON POURCENTAGE".
Donc, en 1er, le code devrait supprimer toutes les lignes au-dessus de la ligne contenant "COMPARAISON POURCENTAGE" tout en sachant que leur nombre est variable.
Ensuite, qu'il supprime les colonnes "C" et de "E" à "G".
En 3, j'aimerais qu'il enlève les lettres et caractères "Reg-" de la colonne A pour n'avoir que des nombres et qu'il enlève les "J0" devant les nombres en colonne "C" de manière aussi à n'avoir que des nombres.
En 4, qu'à partir de la cellule "G1", il fasse la synthèse des données avec pour en-tête le nombre de référence en gras et dans chaque cellule en-dessous, les nombres inclus dans ce nombre de référence. Les nombres de référence sont ceux de la colonne C. Un peu comme quand on fait un filtrage des données ... dans le fichier d'exemple, on voit que dans le nombre 802 de la colonne "C", il y a du 803, 806, 807 et 809. Attention que la longueur de la synthèse dépend du nombre de données et que cela peut être des nombres allant de 1 à 999. La longueur tant en colonne qu'en ligne est donc variable.
En 5, j'aimerais qu'il copie la synthèse en commençant à la 2ème ligne (pas besoin des en-têtes) et qu'il la colle dans la feuille "New" à partir de la cellule "F10" en fait même ... uniquement dans la zone en couleur de mon fichier joint.

Voilà ... je pense avoir été clair dans mes explications ... si jamais, n'hésitez pas à demander.

Merci beaucoup pour votre aide et bonne journée à toutes et tous.
 

Pièces jointes

  • TestD12.xlsx
    51.9 KB · Affichages: 64

thebenoit59

XLDnaute Accro
Re : Code pour résumer des données et les coller dans une autre feuille

Bonjour luke330, le forum.
Il n'y a pas de En 2 ? :p
Je veux bien t'aider mais je ne suis pas certain d'avoir tout compris :confused:

Edit: Tu souhaites supprimer la colonne C et ensuite utiliser des valeurs de la colonne C. Ne t'es-tu pas trompé de colonne ?
 
Dernière édition:

CPk

XLDnaute Impliqué
Re : Code pour résumer des données et les coller dans une autre feuille

Bonjour benoit et luke, voici ma contribution également. Le lancement de la macro se fait par ctrl + k
 

Pièces jointes

  • TestD12-1.xlsm
    75 KB · Affichages: 59

luke3300

XLDnaute Impliqué
Re : Code pour résumer des données et les coller dans une autre feuille

Bonjour luke330, le forum.
Il n'y a pas de En 2 ? :p
Je veux bien t'aider mais je ne suis pas certain d'avoir tout compris :confused:

Edit: Tu souhaites supprimer la colonne C et ensuite utiliser des valeurs de la colonne C. Ne t'es-tu pas trompé de colonne ?

Bonjour thebenoit59, CPk,

Merci pour votre aide.

Au départ, il y a des colonnes de A à D et c'est à ce moment-là que je désire supprimer la colonne C. Après sa suppression, la colonne D devient C et a des données exploitable.
 

luke3300

XLDnaute Impliqué
Re : Code pour résumer des données et les coller dans une autre feuille

Re et merci,

Je viens de tester ta solution thebenoit59 et ça ne donne pas le résultat escompté. En fait, la synthèse obtenue au final doit correspondre pile poil à celle mise dans mon fichier de base. Je l'ai fait manuellement.
Je dois dire que le suivi de ton code est super bien détaillé. Merci car ça me permet de comprendre un peu.

Je te mets 2 captures du résultat en pièces jointes.

Par contre, les données de synthèse sont bien collées dans l'autre feuille dans le bon format.

Merci pour ton 1er projet :)
 

Pièces jointes

  • 2.jpg
    2.jpg
    28.5 KB · Affichages: 62
  • 1.jpg
    1.jpg
    149.2 KB · Affichages: 63
  • 2.jpg
    2.jpg
    28.5 KB · Affichages: 66
  • 1.jpg
    1.jpg
    149.2 KB · Affichages: 74
Dernière édition:

luke3300

XLDnaute Impliqué
Re : Code pour résumer des données et les coller dans une autre feuille

Merci à toi CPk,

chez toi, j'obtiens la synthèse escomptée mais avec des "restes" bizarres :)
Si c'est possible, j'aimerais conserver les en-têtes comme sur la 3ème capture.
Comme pour thebenoit59, je te mets 2 captures afin que tu puisses voir ...

Les données sont collées ici comme un tout hors j'aimerais que comme chez thebenoit59, elles le soient en "valeur".

Merci aussi pour ton 1er projet :)
 

Pièces jointes

  • 3.jpg
    3.jpg
    37 KB · Affichages: 62
  • 4.jpg
    4.jpg
    22.8 KB · Affichages: 60
  • 3.jpg
    3.jpg
    37 KB · Affichages: 65
  • 4.jpg
    4.jpg
    22.8 KB · Affichages: 56
  • 5.jpg
    5.jpg
    10.3 KB · Affichages: 59
  • 5.jpg
    5.jpg
    10.3 KB · Affichages: 56
Dernière édition:

CPk

XLDnaute Impliqué
Re : Code pour résumer des données et les coller dans une autre feuille

Pour la suppression des restes, mise à jour de la macro.

Code:
Sub macro1()
    Application.ScreenUpdating = False
    Dim c As Range, f As Worksheet, d As Object
    Set d = CreateObject("scripting.dictionary")
    d.comparemode = 1
    Set f = Feuil3
    f.Activate
    With f
        .Rows("1:" & .Columns(1).Find("Old", lookat:=xlPart).Row - 1).Delete shift:=xlUp
        For Each c In .Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp).Address)
            If c.Value Like "Reg" & "*" Then
                c = Mid(c, 5) * 1
            End If
            c.Offset(, 2) = Mid(c.Offset(, 2), 2) * 1
        Next
        f.UsedRange.Sort key1:=Columns(3), order1:=1, key2:=Columns(1), order2:=1, Header:=xlYes

        For a = 2 To .UsedRange.Rows.Count
            If Not d.exists(.Cells(a, 3).Value) Then
                d.Item(.Cells(a, 3).Value) = ""
            Else
                If Not d.Item(.Cells(a, 3).Value) Like "*" & .Cells(a, 1) & "*" Then
                    d.Item(.Cells(a, 3).Value) = d.Item(.Cells(a, 3).Value) & "/" & .Cells(a, 1)

                End If
            End If
        Next

        With .Cells(1, 5).Resize(, d.Count)
            .Value = d.keys
            .Font.Bold = True
        End With
        .Cells(2, 5).Resize(, d.Count) = d.items
        For a = 5 To .Cells(1, Columns.Count).End(xlToLeft).Column
            b = Split(.Cells(2, a), "/")
            For e = 3 To UBound(b) + 3
                .Cells(e, a) = b(e - 3)
            Next e
            Range(.Cells(2, a), .Cells(3, a)).Delete shift:=xlUp
        Next a
        .Cells(1, 5).CurrentRegion.Copy Sheets("New").Range("f10")
    End With
    Sheets("New").Activate

    Set d = Nothing
    Set f = Nothing
End Sub

Par contre la fin de ton message n'est pas trop tangible selon mes neurones
" Les données sont collées ici comme un tout hors j'aimerais que comme chez thebenoit59, elles le soient en "valeur"."
Ca moi pas comprendre...sorry !
 

thebenoit59

XLDnaute Accro
Re : Code pour résumer des données et les coller dans une autre feuille

Je pense qu'il souhaite juste un collage par valeur et pas un collage pur.

De mon côté, je bloque un peu, je n'arrive pas à obtenir le résultat escompté.
Etant donné que la réponse de CPk est parfaite, je ne vais pas continuer de mon côté.
 

CPk

XLDnaute Impliqué
Re : Code pour résumer des données et les coller dans une autre feuille

Ah oui ok...Histoire de ne pas abîmer la couleur du tableau de synthèse...Benoit n'abandonnez pas ! Restez ! Si vous avez envie de continuez sur se sujet si vous pouvez me dépanner en programmant le copié-collé en valeur car là je vais manquer de temps.

La ligne de la copie c'est celle-là
Code:
.Cells(1, 5).CurrentRegion.Copy Sheets("New").Range("f10")
 
Dernière modification par un modérateur:

luke3300

XLDnaute Impliqué
Re : Code pour résumer des données et les coller dans une autre feuille

CPk, thebenoit59,

Très sincèrement merci pour votre aide.
Comme thebenoit59 à dit CPk, j'aimerais un collage en conservant la mise en forme de la zone qui reçoit les données. :eek:
Comme on dit toujours, il y a plus dans 2 têtes que dans une et c'est bien vrai.
J'ai déjà essayé de regarder pour voir mais je n'y comprend pas grand chose donc j'ai comparé le code de copié/collé de thebenoit59 et le tiens CPk mais je ne sais pas comment je dois l'adapter ...

Vous voyez une possibilité?
 

thebenoit59

XLDnaute Accro
Re : Code pour résumer des données et les coller dans une autre feuille

Tu peux remplacer une partie du code de CPK ainsi :

Code:
        Next a
        .Cells(1, 5).CurrentRegion.Copy 'Sheets("New").Range("f10")
    End With
    Sheets("New").Activate
        Range("f10").PasteSpecial Paste:=xlValues
    Set d = Nothing
    Set f = Nothing
End Sub
 

luke3300

XLDnaute Impliqué
Re : Code pour résumer des données et les coller dans une autre feuille

Ben voilà, splendide! :D Tout fonctionne à merveille.
Je vais pouvoir finaliser mon fichier grâce à vous 2.
Encore un tout grand merci pour votre temps et votre aide et surtout, excellente soirée à vous.
A bientôt sur le forum :p et merci, merci, merci!
 

luke3300

XLDnaute Impliqué
Re : Code pour résumer des données et les coller dans une autre feuille

Petite question encore ... pour remplacer le "Feuil3" du code de CPk, que dois-je indiquer et comment?

Si la Feuille à utiliser s'appelle "Cata", que dois-je modifier dans ce morceau de code?:

Set f = Feuil3
f.Activate

Merci d'avance
 

Discussions similaires

Statistiques des forums

Discussions
312 241
Messages
2 086 524
Membres
103 242
dernier inscrit
Patoshick