XL pour MAC trier des données tableau excel selon ordre donné

clineM

XLDnaute Junior
Bonjour,
je dispose d'une feuille de données, en ligne 1 l'entête du tableau les lignes suivantes étant des données 1 à n non numérotées. je souhaiterais pouvoir à l'aide d'une macro si possible réorganiser les colonnes selon un ordre définit (ordre donné en feuille2), le reste des données non ordonnées peuvent être laissé dans les colonnes suivantes (pour être utilisées ultérieurement sans retourner à la source des données)
j'arrive à définir le tableau et cacher les données dont je n'ai pas besoin mais je n'arrive pas à ordonner les colonnes !
merci de votre aide !
 

Pièces jointes

  • exemple-ordonnerDonnées.xlsm
    19.3 KB · Affichages: 8

clineM

XLDnaute Junior
Bonjour, peut-on apporter une modification à cette dernière version de la macro pour lui dire que si dans la feuille active une des colonnes n'existe pas alors la créer dans la nouvelle feuille avec des données vides ?
Sub OrganisationDonnéesMP()

Dim Tentrée, Tsortie, T, DL%, N%, i%, ColS%, Colonne%
Dim wsEntrée As Worksheet, wsSortie As Worksheet, wsListe As Worksheet
Dim Cheminfichier As String
Dim wbListeElements As Workbook

' Définir le chemin du fichier externe
Cheminfichier = ActiveWorkbook.Path & Application.PathSeparator & "ListeElements.xlsm"

' Ouvrir le fichier externe
Set wbListeElements = Workbooks.Open(Cheminfichier)

' Assurer-vous que la feuille "ListeElements" existe dans le fichier externe
If WorksheetExists(wbListeElements, "ListeElements") Then
' Définir la feuille "ListeElements"
Set wsListe = wbListeElements.Sheets("ListeElements")

' Utiliser la feuille "ListeElements" pour extraire les titres
Tsortie = Split(wsListe.Range("G11").Value, ",")

' Fermer le fichier externe
wbListeElements.Close False
Else
MsgBox "La feuille 'ListeElements' n'a pas été trouvée dans le fichier externe.", vbExclamation
Exit Sub
End If

' Définir les feuilles de travail
Set wsEntrée = ActiveSheet ' Feuille active comme entrée
Set wsSortie = Worksheets.Add ' Créer une nouvelle feuille de résultats
wsSortie.Name = wsEntrée.Name & "NormManteauPrim" ' Nom de la nouvelle feuille

Tentrée = wsEntrée.[A1:pA1] ' Extraction titres BDD existante
DL = wsEntrée.[A1000].End(xlUp).Row ' Dernière ligne à extraire

ColS = 1 ' N° colonne où coller les infos

For N = 0 To UBound(Tsortie)
titre = Replace(Tsortie(N), """", ""): Colonne = 0 ' Extraction Titre
For i = 1 To UBound(Tentrée, 2)
If Tentrée(1, i) = titre Then Colonne = i: Exit For ' Recherche colonne où ce titre est présent
Next i
If Colonne <> 0 Then ' Copie colle de la colonne dans feuille résultats
T = wsEntrée.Range(wsEntrée.Cells(1, Colonne), wsEntrée.Cells(DL, Colonne))
wsSortie.Cells(1, ColS).Resize(UBound(T, 1), UBound(T, 2)) = T
ColS = ColS + 1 ' Colonne suivante
End If
Next N

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 708
Messages
2 112 097
Membres
111 416
dernier inscrit
philipperoy83