PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Tri sur colonne Excel via OLE Automotion et fonction XLS
Tri sur colonne Excel via OLE Automotion et fonction XLS
Iniciado por t.dinh@silvera.fr, 25,jul. 2019 15:27 - 2 respuestas
Miembro registrado
46 mensajes
Publicado el 25,julio 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
Miembro registrado
46 mensajes
Publicado el 28,agosto 2019 - 10:39
je relance le sujet si des personnes sont revenus de vacances :)
Miembro registrado
46 mensajes
Publicado el 30,agosto 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 ...