PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Tri sur colonne Excel via OLE Automotion et fonction XLS
Tri sur colonne Excel via OLE Automotion et fonction XLS
Débuté par ., 25 juil. 2019 15:27 - 2 réponses
Membre enregistré
46 messages
Popularité : +1 (1 vote)
Posté le 25 juillet 2019 - 15:27
bonjour à tous,

je galère à trouver la bonne syntaxe pour tri Excel, j espere que quelqu'un pourra m'aider
je n'ai pas trouvé de tri via les fonction XLS donc je tente le coup via OLE automotion

j 'ai créé une macro sur mon modèle de fichier Excel mais lorsque le sauvegarde
xlsSauve(FichierEXCEL,sNewChemin)

cela détruit le module vba d'excel ??? --> quelqu'un a une solution par rapport à ce plantage ?

De ce fait, j 'ai utilisé la classe fournie pour le pilotage Excel avec la méthode triercolonne
sauf qu'il me trie la colonne pas le tableau et ne prends pas en compte les titres

je me suis appuyé de cet article mais sans succès :
https://www.developpez.net/forums/d1530281/environnements-developpement/windev/excel-ole-automation-trier-plusieurs-colonnes/

J ai adapté la méthode triercolonne avec ce code :
SI sColonne<>"" ALORS
:SelectionnerCellules(sColonne)
:m_pautExcel>>Selection>>CurrentRegion>>Select
FIN

QUAND EXCEPTIONEXCEPTION DANS
// tri
:m_pautExcel>>Selection>>Sort (m_pautExcel>>range("F1"), xlAscending) // F1 est la colonne que je souhaite trier


je souhaite mettre au moins le paramètre "Header" de cette macro (qui fonctionne sur Excel)
Selection.Sort Key1:=Range("F1"), Order1:=xlAscending, _
    Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom


si quelqu'un peut m'aider sur ce coup pour trouver la syntaxe exacte

d'autant que je dois regarder cette ligne de macro pour faire des sous-totaux sur excel.
Selection.Subtotal GroupBy:=6, Function:=xlSum, TotalList:=Array(8, 16), _
        Replace:=True, PageBreaks:=True, SummaryBelowData:=True


J'espère avoir été clair et je vous remercie d'avance de votre aide

PS : je ne souhaite pas utiliser le champ tableur
Membre enregistré
46 messages
Popularité : +1 (1 vote)
Posté le 28 août 2019 - 10:39
je relance le sujet si des personnes sont revenus de vacances :)
Membre enregistré
46 messages
Popularité : +1 (1 vote)
Posté le 30 août 2019 - 17:08
En regardant le sujet suivant :

https://www.developpez.net/forums/d1530281/environnements-developpement/windev/excel-ole-automation-trier-plusieurs-colonnes/

j 'ai réussi à adapter le code, car cette syntaxe semble fonctionner, je partage au cas où :

à déclarer
MaFeuille est un objet automation dynamique
MonTri est un objet automation dynamique
MaPlage est un objet automation dynamique


MaFeuille = :m_pautExcel>>Worksheets("Ventes")
MonTri = MaFeuille>>Sort
MonTri>>SortFields>>Clear
MonTri>>SortFields>>Add(MaFeuille>>Range("F1:F1500"), xlSortOnValues, xlAscending, xlSortNormal)
MaPlage = MaFeuille>>Range("F1:F1500")
MonTri>>SetRange(MaPlage)
MonTri>>Header(1)
MonTri>>MatchCase(False)
MonTri>>Orientation(1)
MonTri>>SortMethod(1)
MonTri>>Apply()


bon bah passons aux sous-totaux maintenant ...