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

  • Initiateur de la discussion Initiateur de la discussion clineM
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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

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
 
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
 
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.
 
Re,
A vous lire on pourrait penser que l'ordre des colonnes est une constante quel que soit le fichier analysé.
Si tel est le cas, pourquoi ne pas mettre la liste des colonnes directement dans un array dans le VBA, ce serait plus simple.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
15
Affichages
478
Réponses
7
Affichages
616
Retour