Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour à tous,
J'ai trouvé de nombreux exemples de code sur powerbuilder à donf pour manipuler les objets OLE - EXCEL, cependant je n'arrive pas à utiliser des fonctions excel avec des paramètres et des constantes.
Je m'explique:
Je souhaite trier par exemple des lignes, donc utiliser la fonction Sort(). Dans une documentation, j'ai trouvé ceci:
'expression.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3) 'Exemples 'Cet exemple montre comment trier la plage A1:C20 de la feuille Sheet1, en utilisant la cellule A1 comme première clé de tri et la cellule B1 'comme deuxième clé de tri. Le tri est effectué en ordre croissant par ligne et il n'y a pas d'en-tête. Cet exemple suppose que la plage A1:C20 'contient des données. Sub SortRange1() Worksheets("Sheet1").Range("A1:C20").Sort _ Key1:=Worksheets("Sheet1").Range("A1"), _ Key2:=Worksheets("Sheet1").Range("B1") End Sub 'Cet exemple montre comment trier la zone contenant la cellule A1 (zone active) de la feuille Sheet1, en triant les données dans la première 'colonne et en utilisant automatiquement une ligne d'en-tête, s'il en existe une. Cet exemple suppose que la zone active, contenant la cellule A1, 'contient des données. La méthode Sort détermine la zone active automatiquement. Sub SortRange2() Worksheets("Sheet1").Range("A1").Sort _ Key1:=Worksheets("Sheet1").Columns("A"), _ Header:=xlGuess End Sub
Cependant je n'arrive pas à utiliser cette fonction dans PB avec des paramètres et des constantes. J'ai essayé ceci:
lo_ole.Range("A11:F26").Select lo_ole.Selection.Sort (Key1:=Range("A11"), Order1:=xlAscending, Header:=xlGuess, & OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom)
également ceci (sans les ":"):
lo_ole.Range("A11:F26").Select lo_ole.Selection.Sort (Key1=Range("A11"), Order1=xlAscending, Header=xlGuess, & OrderCustom=1, MatchCase=False, Orientation=xlTopToBottom)
ou ceci, juste les valeurs:
lo_ole.Range("A11:F26").Select lo_ole.Selection.Sort (lo_ole.Range("A11"), "xlAscending", "xlGuess", & 1, False, "xlTopToBottom")
mais rien ne semble fonctionner. Pourtant en faisant
lo_ole.Range("A11:F26").Select lo_ole.Selection.Sort (lo_ole.Range("A11"))
j'arrive à trier mais je voudrai pouvoir utiliser les autres paramètres de la fonction. Surtout qu'après le tri je dois utiliser la fonction subtotal et j'ai le même soucis car elle a plusieurs paramètres:
expression.Subtotal(GroupBy, Function, TotalList, Replace, PageBreaks, SummaryBelowData)
Si quelqu'un a déjà utilisé les tris et sous-totaux, je le remercie d'avance pour l'aide qu'il voudra bien m'apporter.
Vincent.
Dernière modification par vincenteraptor (05-09-2007 14:15:09)
Hors ligne
J'imagine que tu as des erreurs à la compilation du script ?
Les constantes "xlChose" ne sont pas connues par PB, il te faut les redéfinir toi-même (dans ton script, en variable locale ou mieux encore dans un UserObject dédié à la communication avec Excel).
Pour connaître leur valeur : active l'explorateur d'objets de ton Visual Basic pour Excel, les énumérations que tu cherches y sont listées.
Pour ce qui est du nommage des paramètres, je ne crois pas que PB supporte cette technique. Tu en es réduit à utiliser tous les paramètres dans l'ordre.
Hors ligne
MERCI !!!!
Cela semble fonctionner.
Voici le code pour ceux qui rencontreraient le même problème:
lo_ole.Range("A10:N13").Select lo_ole.Selection.Sort(lo_ole.Range("B10"),2) // le 2 correspond à xlDescending pour l'ordre, valeur récupérée par l'explorateur d'objets de VB lo_ole.Range("A9:N34").Select lo_ole.Selection.Subtotal(1, -4157, li_colonnes) // li_colonnes est un tableau d'entiers
Encore merci pour cette aide.
A bientôt
Vince.
Hors ligne
Salut
Peux tu modifier le titre du premier message et mettre [RESOLU]
Hors ligne
Pages: 1