|
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 !!! |
| |
| |
| | | |
|
| | | | |
| | |
|