Restructurer un tableau avec autofilter

  • Initiateur de la discussion Initiateur de la discussion popcorn
  • Date de début Date de début

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

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

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

  • Question Question
XL 2013 Code VBA
Réponses
12
Affichages
853
Réponses
3
Affichages
837
Réponses
0
Affichages
606
Réponses
55
Affichages
4 K
Réponses
2
Affichages
449

Membres actuellement en ligne

Statistiques des forums

Discussions
315 283
Messages
2 118 015
Membres
113 409
dernier inscrit
ffgsd