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

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour ClineM,
Un essai en PJ avec :
VB:
Sub Réorganiser()
Dim Tentrée, Tsortie, T, DL%, N%, i%, ColS%, Colonne%
Tsortie = Split(Sheets("Feuil2").[A2], ",")     ' Extraction titres désirés par colonne
Tentrée = Sheets("Feuil1").[A1:EN1]             ' Extraction titres BDD exsitante
DL = Sheets("Feuil1").[A1000].End(xlUp).Row     ' Dernière ligne à extraire
Sheets("Feuil3").Cells.Clear                    ' Effacement feuille résultats
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 = Sheets("Feuil1").Range(Cells(1, Colonne), Cells(DL, Colonne))
        Sheets("Feuil3").Cells(1, ColS).Resize(UBound(T, 1), UBound(T, 2)) = T
        ColS = ColS + 1                                         ' Colonne suivante
    End If
Next N
Sheets("Feuil3").[1:1].Font.Bold = True                         ' Titre feuille résultats en gras.
End Sub
La feuille résultat est en Feuil3.
( le nom des feuilles est à modifier suivant fichier final )
 

Pièces jointes

  • exemple-ordonnerDonnées.xlsm
    33.4 KB · Affichages: 2

clineM

XLDnaute Junior
Bonjour Sylvanu, nickel ça fonctionne, je l'ai testé sur plusieurs feuilles et je rencontre un problème, les titres ne sont pas toujours écrit de la même manière, y a t'il moyen de faire la même chose mais en lui spécifiant que le titre doit contenir "Ti","Cu" (le nom des élément sans l'unité de mesure ligne 5 dans feuille 2 )
 

Pièces jointes

  • exemple-ordonnerDonnées(1).xlsm
    31.5 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Une solution dans cette PJ.
J'élimine les doublons de la liste des titres donnés en feuille 2, puis je copie toutes les colonnes qui contiennet les chanies restantes.
Par ex Ti copiera Ti µg/g et TiO2 %m/m.
 

Pièces jointes

  • exemple-ordonnerDonnées(V2).xlsm
    66.6 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Pas besoin de discriminer ce sont des doublons même les données !
Non, les colonnes Ti µg/g et TiO2 %m/m ne sont pas les mêmes :
1705941419406.png
 

clineM

XLDnaute Junior
Bonjour,
j'ai résolu mon problème en faisant un nettoyage de mes titres avec données/convertir/delimité espace..
je souhaiterais maintenant aller chercher la liste des titres dans un fichier à part plutôt que dans une feuille dans le dossier en cours (pour être utilisable quelque soit le dossier). je n'arrive pas à faire en sorte qu'il trouve le fichier dans le même dossier, j'ai un problème quand je lui demande le chemin du fichier actif il me sort :
Chemin complet du fichier actif : /Users/celine.martin/Library/Group Containers/UBF8T346G9.Office/User Content.localized/Startup.localized/Excel/PERSONAL.XLSB

Chemin complet du fichier liste-elements.xlsx : /Users/celine.martin/Library/Group Containers/UBF8T346G9.Office/User Content.localized/Startup.localized/Excel/liste-elements.xlsm

Le fichier 'liste-elements.xlsx' n'a pas été trouvé dans le répertoire du classeur actif.

je ne comprends pas ce personal.xlsb
indépendamment quand je fais cette macro j'obtiens bien Chemin du fichier actif : /Users/celine.martin/Documents/manips 3ième/Standards/Janv-24_basedonneesStds/fichiers-stds-macros/Std-Basalts_01-24.xlsm

Sub ObtenirCheminFichierActif()
Dim Cheminfichier As String

' Vérifie s'il y a un classeur actif
If Not ActiveWorkbook Is Nothing Then
' Obtient le chemin complet du fichier actif
Cheminfichier = ActiveWorkbook.FullName

' Affiche le chemin dans une boîte de message
MsgBox "Chemin du fichier actif : " & Cheminfichier, vbInformation
Else
' Aucun classeur actif
MsgBox "Aucun classeur actif.", vbExclamation
End If
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Pas bien compris votre problème.
Votre macro fonctionne bien, elle renvoie bien le chemin complet de votre fichier.
Si maintenant vous voulez accéder à votre fichier qui donne les titres ( appelons le ListeTitres.xlsm ) et que celui ci se trouve au même niveau que votre fichier de travail, alors vous pouvez tentez :
Code:
Cheminfichier = ActiveWorkbook.Path & Application.PathSeparator & "ListeTitres.xlsm"
NB: Il m'étonne que votre séparateur sur MAC soit "/", il me semblait que c'était "\".
J'ai donc utilisé "Application.PathSeparator" pour être compatible des deux.
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin