Transposer des chiffres pour les mettre en colonne

Bonjour à tous,

Je reçois des nombres par blocs de trois, en ligne, mais d'une quantité variable.

J'ai besoin de trouver une formule afin d'empiler ces informations.

L'exemple ci-joint sera sans doute plus clair pour vous.

Avez-vous une idée ou une astuce pour résoudre mon problème ?

D'avance un très grand merci !!

20test2.xlsx (10.36 Ko)

Bonjour

Une solution PowerQuery (intégré à Excel à partir de 2016, en add on sur 2010 et 2013)

Bonjour et un grand merci !!

Cordialement.

Bonjour Chris1800, 78chris , le forum,

[EDIT] message supprimé

En fait, je ne parviens pas à suivre le cheminement de la requête créée, car il m'indique qu'il y a des erreurs dans votre tableau :-(

Re,

Un essai par macro.....

Sub test()
 Dim col%, lig%, i%, j%
 Dim derlig%, derncol%

  Application.ScreenUpdating = False '.....................................désactive le rafraichissement de l'écran pendant la boucle

  Sheets("Feuil2").Range("A1").CurrentRegion.Offset(1, 0).ClearContents '..efface les données existantes sur feuil2

  With Sheets("Feuil1") '..................................................agit sur la Feuil1
   derlig = .Range("a" & Rows.Count).End(xlUp).Row '.......................définit la dernière ligne
       j = 6 '.............................................................ligne de départ Feuil1
     col = 1 '.............................................................colonne de départ Feuil2
     lig = 2 '.............................................................ligne de départ Feuil2

   Do While j <= derlig '..................................................boucle de la ligne 6 à la dernière
     derncol = .Cells(j, Cells.Columns.Count).End(xlToLeft).Column '.......dernière colonne de la ligne Feuil1 en fonction de j
     For i = 1 To derncol '................................................boucle de la colonne 1 à la dernière sur Feuil1
      If .Cells(j, i) <> "" Then '.........................................si cellule  est remplie
       .Cells(j, i).Copy Sheets("Feuil2").Cells(lig, col): col = col + 1 '.copie/colle la valeur + incrémente la colonne de 1
        If col = 4 Then '..................................................si on atteint la colonne 4 de Feuil2
         col = 1: lig = lig + 1 '..........................................on revient à la colonne 1, on change de ligne
        End If
      End If
      Next i '.............................................................passe à la colonne suivante
     j = j + 1 '...........................................................passe à la ligne suivante sur Feuil1
    Loop
  End With
   Sheets("Feuil2").Activate '.............................................on active la Feuil2
  Application.CutCopyMode = False '........................................on désactive la copie
End Sub
10test2.xlsm (22.65 Ko)

Cordialement,

Eh bien cela fonctionne parfaitement !!!

Merci beaucoup !!

bonjour

une contribution de possibilité .......

cordialement

15chris1800.xlsx (11.84 Ko)

Top, merci !!

RE

En fait, je ne parviens pas à suivre le cheminement de la requête créée, car il m'indique qu'il y a des erreurs dans votre tableau :-(

Arf c'est 365 qui a ajouté un argument à l'indexation

Je l'ai enlevé et remis le fichier corrigé dans le post précédent Aujourd'hui à 13:49

Merci beaucoup !

Rechercher des sujets similaires à "transposer chiffres mettre colonne"