classer selon un en-tete

lionelch1

XLDnaute Nouveau
Bonjour ,

Je voudrais copier et classer toute mes données de la feuille 2 sur la feuille 1
selon un en-tete deja creer sur la feuille 1 qui contient 150 colonnes
la feuille 2 peut avoir 50 ou 100 colonnes dans un ordre different
ci joint exemple

Merci
Lionel
 

Pièces jointes

  • classement.xls
    24 KB · Affichages: 34
  • classement.xls
    24 KB · Affichages: 36
  • classement.xls
    24 KB · Affichages: 38

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : classer selon un en-tete

Bonsoir lionelch1,

Un essai par macro. Cliquer sur le bouton de la feuille 'Feuil generale'.

le code dans le module1:
VB:
Sub CopieF2versF1()
Dim Titre1 As Range, Titre2 As Range, xcell As Range
Dim N As Long

With Sheets("Feuil a trier")
  Set Titre2 = .Range(.Cells(1, 1), .Cells(1, .Columns.Count).End(xlToLeft))
End With

With Sheets("Feuil generale")
  Set Titre1 = .Range(.Cells(1, 1), .Cells(1, .Columns.Count).End(xlToLeft))
  .Range(.Cells(2, 1), .Cells(.Rows.Count, .Cells(1, .Columns.Count).End(xlToLeft).Column)).Clear
  For Each xcell In Titre2
    N = -1
    On Error Resume Next
    N = Application.WorksheetFunction.Match(xcell, Titre1, 0)
    If N = -1 Then
      ' titre2 ne figure pas dans titre1 - on rajoute la colonne
      ' à la fin des colonnes de "Feuil generale"
      xcell.EntireColumn.Copy .Cells(1, .Columns.Count).End(xlToLeft).Offset(, 1).EntireColumn
    Else
      ' titre2 figure dans titre1 - on le colle dans la bonne colonne
      xcell.EntireColumn.Copy .Columns(N)
    End If
  Next xcell
End With
End Sub
 

Pièces jointes

  • classer selon un en-tete v1.xls
    50 KB · Affichages: 40

Discussions similaires

Réponses
22
Affichages
874

Statistiques des forums

Discussions
312 492
Messages
2 088 893
Membres
103 982
dernier inscrit
krakencolas