XL 2016 Macro VBA un peu comme "transposé..."

xicorH

XLDnaute Nouveau
Bonjour à tous,
Je suis à la recherche d'une macro à adapter pour effectuer ce genre de tri.
Mon classeur comporte plusieurs centaines de lignes.

Format original
A1
A2
A3
B4
B5
C6
C7
C8
C9


Format après tri
A123
B45
C6789


Merci pour votre aide
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir,

Une 3ème méthode par VBA.
Le code est dans le module de la feuille "Feuil1" :
VB:
Sub EnLigne()
Dim a, t, i&, n&, s$, ref
   Application.ScreenUpdating = False
   [d1].CurrentRegion.Clear
   a = [a1].CurrentRegion
   [a1].CurrentRegion.Sort key1:=[a1], order1:=xlAscending, key2:=[b1], order2:=xlAscending, Header:=xlYes
   t = [a1].CurrentRegion.Resize([a1].CurrentRegion.Rows.Count + 1)
   [a1].CurrentRegion = a: Erase a
   ref = t(1, 1): s = t(1, 1) & ";" & t(1, 2): n = 0
   For i = 2 To UBound(t)
      If t(i, 1) = ref Then
         s = s & ";" & t(i, 2)
      Else
         n = n + 1
         Cells(n, "d") = s
         ref = t(i, 1): s = ref & ";" & t(i, 2)
      End If
   Next i
   [d1].CurrentRegion.TextToColumns Semicolon:=True
   [d1].CurrentRegion.Borders.LineStyle = xlContinuous
End Sub
 

Pièces jointes

  • xicorH- En ligne- v1.xlsm
    26.6 KB · Affichages: 10

Staple1600

XLDnaute Barbatruc
Bonjour le fil, xicorH, chris, mapomme

Une 4ième méthode VBA
VB:
Sub Transposer_Dico()
Dim f As Worksheet, vArr, i&
Set f = Sheets("Feuil2") 'nom feuille à adapter selon besoin
vArr = ActiveSheet.Range("A1").CurrentRegion.Value2
With CreateObject("scripting.dictionary")
   For i = 2 To UBound(vArr)
      .Item(vArr(i, 1)) = .Item(vArr(i, 1)) & vArr(i, 2) & "£"
   Next i
   f.Cells(1).Resize(.Count, 2) = Application.Transpose(Array(.Keys, .Items))
   f.Columns(2).TextToColumns Range("B1"), xlDelimited, , , 0, 0, 0, 0, 1, "£"
End With
End Sub
Pré-réquis: Test OK sur les données en exemple dans le message#1
Le classeur doit avoir une feuille nommée Feuil2
(ou alors adapter le nom de la feuille dans la macro)
La feuille à transposer doit être la feuille active avant qu'on exécute la macro.
 

Staple1600

XLDnaute Barbatruc
Bonjour mapomme

Au départ, j'ai parti sur le 0149
Puis, je me suis ravisé (je ne saurai dire pourquoi)

Par contre, ce que je sais dire, c'est que j'ai du mal à me mettre directement en mode PQ pour répondre.
Parce que le PQ, c'est l'avenir dans les Cellules, non ?

Je devrais lâcher mon VBE pour aller taquiner le PQ, mais j'ai du mal ;)
 

Discussions similaires

Réponses
10
Affichages
412
Réponses
5
Affichages
292

Statistiques des forums

Discussions
312 685
Messages
2 090 946
Membres
104 705
dernier inscrit
Mike72