Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Conversion table vers autre table

  • Initiateur de la discussion Initiateur de la discussion Ldm.nico
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Ldm.nico

XLDnaute Nouveau
Bonjour, en ces temps de vacances désolé de vous importuner avec mon problème. Je débute en VBA et j'ai besoin de vos précieuses connaissances.
Je souhaite convertir simplement la feuille Data en feuille Sortie, voir fichier ci-joint.
Données complémentaires:
le nombre de lignes de la table Data peut varier d'un mois sur l'autre.

Merci d'avance pour votre aide.
 

Pièces jointes

Désolé Sylvanu. Comme indiqué dans ma demande initiale, le nombre de ligne peut varier d'un mois à l'autre. Le fichier exemple aujourd'hui comporte 15 lignes mais il peut y avoir le mois prochain 20 lignes et dans ce cas le filtre ne fonctionnera que sur les 15 premières lignes..
 
Surtout pour saluer tout le monde 🙂,

Une autre méthode en VBA.
VB:
Sub test()
Dim der&, t, i&, j&, n&

Application.ScreenUpdating = False
   With Sheets("Data")
      der = Application.Match(String(255, "z"), Sheets("Data").Columns(1))
      t = Sheets("Data").Range("a1:g" & der)
      ReDim r(1 To der * 3, 1 To 5)
      n = n + 1: r(1, 1) = "Month": r(1, 2) = t(1, 1): r(1, 3) = t(1, 2): r(1, 4) = t(1, 3): r(1, 5) = "QTY"
      For i = 2 To UBound(t)
         For j = 5 To 7
            If t(i, j) <> "" Then n = n + 1: r(n, 1) = t(1, j): r(n, 2) = t(i, 1): r(n, 3) = t(i, 2): r(n, 4) = t(i, 3): r(n, 5) = t(i, j)
         Next j
      Next i
   End With
   With Sheets("Sortie")
      If .FilterMode Then .ShowAllData
      .Columns("a:e").Clear: .Columns(3).Resize(n).NumberFormat = "@"
      .Columns("a:e").Resize(n) = r
      .Columns("a:e").Resize(n).Sort key1:=.Range("a1"), order1:=xlAscending, Header:=xlYes
      .Columns("a:e").Resize(n).AutoFilter
      .Activate
   End With
End Sub
 

Pièces jointes

Bonjour Mapomme, cette dernière proposition fonctionne aussi mais mes connaissances Vba ne me permette pas, actuellement, de la faire évoluer en fonction de mon fichier source évolutif...
Merci encore à toi.
Merci à tous de votre support.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…