PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Mise en forme Excel par OLE
Mise en forme Excel par OLE
Iniciado por Jean-Michel, 28,may. 2019 06:28 - 7 respuestas
Miembro registrado
856 mensajes
Publicado el 28,mayo 2019 - 06:28
Bonjour,
J'ai parfois le besoin de mettre en forme des fichiers excel qui sont générés à partie de tables.
Exemple :
// Utilisation OLE pour mise en forme.
// Je n'ai pas trouvé le centrage des cellules

sNomFichierXLSSave = "c:\fichier.xlsx"
xl est un objet OLE "Excel.Application"
IDFicXLS est un xlsDocument = xlsOuvre(sNomFichierXLSSave)

xl>>workbooks>>open(sNomFichierXLSSave)

// Sélection du 1er onglet
xl>>Sheets(1)>>Select

// Sélection des colonnes pour centrer
//xl>>Range(xl>>Cells(1, 5), xl>>Cells(1, 50))>>Select
//xl>>ActiveWindow>>select>>xlHAlignCenter ???

// Figer les volet à partir de la ligne 2
xl>>Range("A2")>>Select
xl>>ActiveWindow>>FreezePanes = True

// Adapter en largeur es colonnes automatiquement
xl>>Cells>>Select
xl>>Cells>>EntireColumn>>AutoFit
xl>>Range("A1")>>Select

// Sauvegarde et fin
xl>>ActiveWorkbook>>Save
xl>>Quit()
xlsFerme(IDFicXLS)


Ma question : Quel est le code pour centrer une ou des cellules ?

Merci à vous..................
J.Michel

--
Synchronize Systems International LTD
Développement d'outils de gestion

Environnements AS400 – Windows
Langages GAP III – CL – Visual Basic - Visual Adélia - Adélia - Windev

Bangkok / Pattaya
Miembro registrado
215 mensajes
Publicado el 28,mayo 2019 - 08:59
Bonjour,
XL>>Selection>>HorizontalAlignment = -4108
Miembro registrado
69 mensajes
Publicado el 28,mayo 2019 - 10:37
Bonjour,

Voilà ce que je fais sur mon code


Dans ma déclaration :
// Classe de pilotage de Excel
gpclExcel est un objet dynamique CExcel
// Allocation de l'objet Excel
gpclExcel = allouer un CExcel(Vrai)
gpclExcel:NouveauDoc()
gpclExcel:EstVisible(Faux)

Dans le remplissage des colonnes d'entête :
gpclExcel:EcrireValeur("A1","FABRICANT")

Plages = "A1:L1"
gpclExcel:Police(Plages,"",0,"","","","",39)
gpclExcel:Aligner(CExcel::CST_CENTRE,Plages)
gpclExcel:LargeurAuto(Plages)

Bonne réception,

--
AS400 – Windows - Web
Langages GAP III ILE – CL – PHP- WinDev/WebDev
Miembro registrado
856 mensajes
Publicado el 28,mayo 2019 - 11:49
Pasjac, merci à toi, il faut que j'étudie car je connaos qu'en passant par OLE. Merci bien.
Thierry, Merci, ça fonctionne.
Je n'ai pas réussi à trouver une doc avec toutes les commandes, tu sais où je peux ma la procurer ?

En tous les cas. Bravo et merci.

--
Synchronize Systems International LTD
Développement d'outils de gestion

Environnements AS400 – Windows
Langages GAP III – CL – Visual Basic - Visual Adélia - Adélia - Windev

Bangkok / Pattaya
Miembro registrado
215 mensajes
Publicado el 28,mayo 2019 - 12:13
Non moi je passe par Excel et j'enregistre une macro puis tu vas dans ta macro, tu clic sur modifier et cela t'ouvre visual basic. Après il faut adapter pour windev. Tu peux ouvrir aussi sous visual basic l'explorateur d'objets F2, Faire une recherche sur par exemple xlCenter.
Voir l'image ci-dessous et en bas du tableau tu as Const xlCenter=-4108




Miembro registrado
948 mensajes
Publicado el 28,mayo 2019 - 13:23
Bonjour,
En règle générale, lorsque-vous recherchez la syntaxe d'une commande
Il suffit de lancer Excel, onglet «AFFICHAGE» «Macros» puis «Enregistrer une macro»
Donnez un nom à votre macro (par défaut «Macro1»)
De retour sur la feuille Excel effectuez l'action dont vous désirez avoir le code.
Exemple : onglet «ACCUEIL» bouton «Centrer»
Cliquez sur l'onglet «AFFICHAGE» «Macros» puis «Arrêter l'enregistrement»
Cliquez sur l'onglet «AFFICHAGE» «Macros» puis «Afficher les macros»
Sélectionnez votre macro et cliquez sur le bouton «Modifier»
Vous obtenez :
Sub Macro1()
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
End Sub
Ce qui setraduit en WDlangage par :
xl>>Range(pSelection)>>HorizontalAlignment = xlCenter //pSelection est une chaîne contenant la ou les cellules à centrer "A4" ou "B5:B7"

Pour la liste des constantes (ex : xlCenter) il suffit de chercher sur google «Excel xlCenter»
Perso j'ai un fichier cteEXCEL.wl (c'est du texte) contenant les 2215 constantes et dans le code du projet j'ai
EXTERNE "D:\Mes Projets\Essais\cteEXCEL.wl"
Miembro registrado
856 mensajes
Publicado el 28,mayo 2019 - 14:18
Merci Philippe, très judicieux !

--
Synchronize Systems International LTD
Développement d'outils de gestion

Environnements AS400 – Windows
Langages GAP III – CL – Visual Basic - Visual Adélia - Adélia - Windev

Bangkok / Pattaya
Miembro registrado
948 mensajes
Publicado el 28,mayo 2019 - 14:29
Pour la liste des méthodes/propriétés de l'objet Range()) voir le site µ$oft
https://docs.microsoft.com/fr-fr/office/vba/api/excel.range.select