Restructurer un tableau avec autofilter

popcorn

XLDnaute Occasionnel
Bonjour au forum,

Je récupère un tableau extrait par une machine dans un format qui ne me convient pas.


Je souhaiterais le remodeler, je vous avoue que je pars un peu dans tous les sens, j'ai pas remis les main dans du vba depuis un petit moment et n'ayant jamais eu un grand niveau, j'ai besoin que l'on m'aiguille svp.

Je suis partis avec l'idée d'un filtre automatique.

J'ai un mon tableau brut (extrait) dans la feuille "Source" et les valeurs sont recopié dans le tableau de la feuille "Destination".

J'arrive à filtré et copié certaine valeur jusqu'au moment ou certaine valeur que je filtre n'existe pas et la forcement il me copie le titre du tableau au lieu de passé à la suite.


Je ne sais pas si je suis très clair, je joins un fichier en exemple pour illustrer l'idée.


Mon code ressemble à ça, c'est pas du jolie jolie mais ça a le mérite de me copier deux, trois valeurs..
Je me suis donné du mal car j'ai essayé avec find, match, transpose.. beaucoup de possibilité mais rien de vraiment abouti.

Code:
Sub filtrecopie()

Dim order As String
Dim Lg As Integer
Dim DernLigne As Long

Sheets("Destination").Range("A2:A50,C2:L50").ClearContents

DernLigne = Sheets("Destination").Range("B" & Rows.Count).End(xlUp).Row
            Lg = Sheets("Source").Range("A25").End(xlUp).Row

For i = 2 To DernLigne
          order = Sheets("Destination").Cells(i, 2).Value
  
          Sheets("Source").Range("A1").CurrentRegion.AutoFilter Field:=2, Criteria1:=order
          Sheets("Source").Range("A1").CurrentRegion.AutoFilter Field:=5, Criteria1:= _
          "Commission "
       
          Sheets("Source").Range("F2:F" & Lg).Copy
          Sheets("Destination").Cells(i, 11).PasteSpecial xlPasteFormulasAndNumberFormats
 
          Sheets("Source").Range("C2:C" & Lg).Copy
          Sheets("Destination").Cells(i, 4).PasteSpecial xlPasteFormulasAndNumberFormats
    
          Sheets("Source").Range("D2:D" & Lg).Copy
          Sheets("Destination").Cells(i, 5).PasteSpecial xlPasteFormulasAndNumberFormats
     
          Sheets("Source").Range("H2:H" & Lg).Copy
          Sheets("Destination").Cells(i, 3).PasteSpecial xlPasteFormulasAndNumberFormats

          Sheets("Source").Range("H2:H" & Lg).Copy
          Sheets("Destination").Cells(i, 3).PasteSpecial xlPasteFormulasAndNumberFormats
   
          Sheets("Source").Range("A2:A" & Lg).Copy
          Sheets("Destination").Cells(i, 1).PasteSpecial xlPasteFormulasAndNumberFormats
          Sheets("Source").Range("A1").CurrentRegion.AutoFilter Field:=5, Criteria1:= _
          "Frais de traitement"
         
          Sheets("Source").Range("F2:F" & Lg).Copy
          Sheets("Destination").Cells(i, 10).PasteSpecial xlPasteFormulasAndNumberFormats
         
          'Sheets("Source").Range("A1").CurrentRegion.AutoFilter Field:=5, Criteria1:= _
          '"Frais de fermeture variables "
         
          'Sheets("Source").Range("F2:F" & Lg).Copy
          'Sheets("Destination").Cells(i, 12).PasteSpecial xlPasteFormulasAndNumberFormats
         
    Next
    
End Sub


La partie du code en commentaire c'est celle qui me pose probleme.


Votre aide me serait bien précieuse, merci à vous.
 

Pièces jointes

  • TranspositionTableauTest.xlsm
    66.5 KB · Affichages: 33

Dugenou

XLDnaute Barbatruc
Bonjour,
peut être que le tableau croisé dynamique pourrait être une solution ?
Voir pj. Il y a un pb pour afficher le prix de ventes de la même façon que dans le modèle. Faisable si on crée 2 TCD et que dans la restitution finale on combine l'ensemble. Le grand intérêt est que ça se fait sans aucun code.

Cordialement
 

Pièces jointes

  • popcorn.xlsx
    27.7 KB · Affichages: 28

Dugenou

XLDnaute Barbatruc
Avec 3 TCD on arrive à remplir facilement le tableau de la feuille destination.

On peut descendre à 2 je pense et même à un seul avec des formules matricielles : ça dépend du nombre de lignes de données réelles
Cordialement
 

Pièces jointes

  • popcorn2.xlsx
    33.6 KB · Affichages: 29

popcorn

XLDnaute Occasionnel
Bonjour Dugenou,

Merci de te pencher sur mon tableau.

C'est une bonne idée les TCD mais justement le nombre de ligne varie (j'ai d'autres éléments que je n'ai pas renseigné) , et je fais cette manipulation très souvent donc si j'opte pour cette solution, je devrais refaire le TCD à chaque fois, n'est ce pas?

A moins que j'enregistre une macro pour le faire automatiquement?

En tout cas, c'est une solution, mais je ne suis pas réfractaire au macro, cela me permet d'apprendre.

Merci pour cette piste, je vais regarder de plus près
 

popcorn

XLDnaute Occasionnel
Merci de ton aide, c'est vrai que je préférerais du code vba pour m'éviter autant de manipulation.
Je voudrais allé plus loin dans mon fichier par la suite, je dois le recouper avec un autre classeur, mais ce n'est pas le sujet de ce post.

N'empêche que je ne me sers pas assez souvent des TCD, c'est quand même top, et j'aurais pas pensé naturellement d'en créer plusieurs.

Je suis sur Mac et mon excel est sensible au TCD, ça le fait planté parfois.

J'essaye d'avancé sur mon code, merci encore.
 

Discussions similaires

Réponses
3
Affichages
591

Statistiques des forums

Discussions
312 304
Messages
2 087 059
Membres
103 445
dernier inscrit
LOLKFR