PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Objet OLE Dynamique sur EXCEL
Objet OLE Dynamique sur EXCEL
Débuté par 43, 13 fév. 2006 16:42 - 6 réponses
Posté le 13 février 2006 - 16:42
Je voudrais mettre en place un tableau que j'envoi sur excel à l'aide d'un Objet OLE...

Tout marche trés sauf 2 fonctions dont je n'arrive pas à transcrire en Windev: Alignement Horizontal et Bordures...

Si quelu'un à la réponse cela me serait trés utile

Merci.


*****************
Mes Variables sont :
------------------------
Xl est un objet OLE DYNAMIQUE
Ch_NomCol2 est le nom de la colonne en cours de traitement
i est le numéro de ligne en cours de traitement
***************************************
J'arrive à tout faire sauf 2 choses :

* Aligner le texte horizontalemen (Centrer) : Ma syntaxe ne marche pas :

Xl >> Range(Ch_NomCol2 + i) >> HorizontalAlignment = xlCenter

* Mettre les Bordures au cellules : ma syntaxe ne marche pas :
Xl >> range(Ch_NomCol2 + i) >> Borders(XlEdgeBottom) >> LineStyle >> xlContinuous
Xl >> range(Ch_NomCol2 + i) >> Borders(XlEdgeTop) >> LineStyle >> xlContinuous
Xl >> range(Ch_NomCol2 + i) >> Borders(XlEdgeLeft) >> LineStyle >> xlContinuous
Xl >> range(Ch_NomCol2 + i) >> Borders(XlEdgeRight) >> LineStyle >> xlContinuous
Posté le 13 février 2006 - 18:17
Personnellement, j'utilise la classe cExcel prévue par Windev et que que tu peux facilement importer dans ton projet.
X1 est un objet CExcel(Faux)
Voici comment centrer dans une plage de cellules fusionnées:
Plage="A1:A8" // A toi de définir la plage de cellules
X1:Police(Plage,"Times New Roman",12,1,0,0,"BLEU","JAUNE")
x1:FusionnerCellules(Plage)
X1:Aligner("CENTRE",Plage)

Ici, on utilise exclusivement les méthodes de la classe cExcel programmées par Windev
Pour les bordures, j'ai dû programmer des méthodes spécifiques. Si elles t'intéressent, je prépare les copier-coller et je te fais parvenir ça...
Posté le 14 février 2006 - 09:55
Je vais commencer à regarder tout ça en attendant que tu m'apporte de nouveaux éléments !!!

Merci en tout cas !!!
Posté le 14 février 2006 - 09:58
Bonjour,

oExcel est un objet Automation dynamique
oRange est un objet Automation dynamique
...

Pour une colonne :
oRange = oExcel>>Range("A:A")

Pour une cellule, j'utilise une fontion
oRange = oExcel>>Range( makeRange( "A",1,"A",1))

PROCEDURE makeRange(Col1, Ligne1, Col2, Ligne2)
RENVOYER Col1 + NumériqueVersChaîne(Ligne1) + ":" + Col2 + NumériqueVersChaîne(Ligne2)


Pour aligner le texte :
oRange:HorizontalAlignment = -4152 // xlRight
oRange:HorizontalAlignment = -4131 // xlLeft
oRange:HorizontalAlignment = -4108 // xlCenter

Il faut savoir que tout ce qui commence par Xl sont des constantes...


Pour encadrer une celulle ,
oRange>>BorderAround( -4115, 2, -4105) // Ligne pointillé
oRange>>BorderAround( 1, 2, -4105) // Ligne fine
oRange>>BorderAround( 1, 3, -4105) // Ligne grasse

Tu peux aussi sélectionner une colonne complète à partir d'une celulle
Exemple

oRange = oExcel>>Range( makeRange( "C",10,"C",10))
oRange>>EntireColumn>>SELECT()

Cordialement,

C.AUBRY
Posté le 14 février 2006 - 12:33
Merci à tous les deux car vos infos m'ont permis de trouver la solution et tout marche bien maintenant !!!

J'ai étudié un petit peu la classe Excel et c'est vrai que ça m'a apporté pas mal de solutions et d'infos sur l'utilisation du pilotage par OLE.

Autre petit problème maintenant :

La procédure que je lance est quand même assez longue en exécution...

Existe-t-il un moyen d'accélérer le tout ????
Posté le 14 février 2006 - 13:39
Bonjour,

As-tu essayé Excel>>Visible( Faux)

Cordialement,

C.AUBRY
Posté le 15 février 2006 - 09:23
Oui, lorsque j'ouvre le fichier je mets cette valeur à faux !!!