Autres Changer l'ordre des colonnes

hamid43

XLDnaute Nouveau
Bonjour à tous !

Je souhaite un code VBA qui Modifier l'ordre de mes colonnes ("A:M") selon l'ordre de la colonne R

Merci d'avance de votre aide
 

Pièces jointes

  • changer l'ordre des colonnes.xls
    36 KB · Affichages: 14
Solution
Bonsoir.
Essayez comme ça :
VB:
Option Explicit
Sub OrdreColonnes()
   Dim TTit(), CDst%, COrg%
   TTit = [R1:R13].Value
   For CDst = 1 To UBound(TTit, 1)
      On Error Resume Next
      COrg = WorksheetFunction.Match(TTit(CDst, 1), [A1:M1], 0)
      If Err Then COrg = 0
      On Error GoTo 0
      If COrg > CDst Then
         Columns(COrg).Cut
         Columns(CDst).Insert
         End If
      Next CDst
   End Sub
C'est parfait
Merci ! de votre aide

Dranreb

XLDnaute Barbatruc
Bonsoir.
Essayez comme ça :
VB:
Option Explicit
Sub OrdreColonnes()
   Dim TTit(), CDst%, COrg%
   TTit = [R1:R13].Value
   For CDst = 1 To UBound(TTit, 1)
      On Error Resume Next
      COrg = WorksheetFunction.Match(TTit(CDst, 1), [A1:M1], 0)
      If Err Then COrg = 0
      On Error GoTo 0
      If COrg > CDst Then
         Columns(COrg).Cut
         Columns(CDst).Insert
         End If
      Next CDst
   End Sub
 
Dernière édition:

Jacky67

XLDnaute Barbatruc
Bonjour à tous !

Je souhaite un code VBA qui Modifier l'ordre de mes colonnes ("A:M") selon l'ordre de la colonne R

Merci d'avance de votre aide
Bonsoir,
J'ai modifié le codename de la feuil1 qui était farfelu

Selon un code adapté de job75 récemment donné sur ce forum
VB:
Sub Tri_horizontal()
    Application.ScreenUpdating = False
    [r1:r13].Name = "P"    'nom défini
    Rows(1).Insert    'insère une ligne 1 auxiliaire
    Range("a1:m1") = "=MATCH(a2,P,0)"    'repères pour le tri
    Range("a1:m" & Rows.Count).Sort Rows(1), xlAscending, Orientation:=2    'tri horizontal
    Rows(1).Delete    'supprime la ligne auxiliaire
End Sub
*Modifié en .xls
 

Pièces jointes

  • changer l'ordre des colonnes.xls
    59 KB · Affichages: 9
Dernière édition:

hamid43

XLDnaute Nouveau
Bonsoir.
Essayez comme ça :
VB:
Option Explicit
Sub OrdreColonnes()
   Dim TTit(), CDst%, COrg%
   TTit = [R1:R13].Value
   For CDst = 1 To UBound(TTit, 1)
      On Error Resume Next
      COrg = WorksheetFunction.Match(TTit(CDst, 1), [A1:M1], 0)
      If Err Then COrg = 0
      On Error GoTo 0
      If COrg > CDst Then
         Columns(COrg).Cut
         Columns(CDst).Insert
         End If
      Next CDst
   End Sub
C'est parfait
Merci ! de votre aide
 

Discussions similaires

Statistiques des forums

Discussions
315 134
Messages
2 116 614
Membres
112 811
dernier inscrit
shade1452