gregorian
Messages postés57Date d'inscriptionlundi 18 avril 2005StatutMembreDernière intervention24 mars 2011
-
10 mai 2007 à 12:39
michelatoutfox
Messages postés828Date d'inscriptionmardi 5 octobre 2004StatutMembreDernière intervention 7 mai 2013
-
14 mai 2007 à 13:18
Bonjour à tous,
J'ai un petit problème de mise en page excel.
Dans un application, je récupère des données dans un curseur qui doit alors ouvrir un fichier excel. Tout ca, ca va
Maintenant, on me demande de quadriller automatiquement ce fichier.
Et la j'ai un problème sur la sélection.
Sur le net, j'ai trouver le code suivant:
loSheet.Range['A1','E15'].select
with Selection.borders(xlEdgeLeft)
.LineStyle=xlContinuous
.Weight=xlThin
.ColorIndex=xlAutomatic
endwith
Mais si je fais ca, il me sort le message d'erreur suivant: définition de classe EXCEL.APPLICATION.SELECTION introuvable
Dans mon code, je rajoute donc loSel = CREATEOBJECT("Excel.Application.Selection")
Mais cela ne semble pas être ca car il me renvoie le même erreur.
Qqun peut il m'aider ?
PS j'ai déjà été voir l'article de Mike Ganon sur atout fox mais il ne donne pas d'exemple sur la selection...
ou plutot, il part d'une feuille et pas d'une sélection range de cell.
if snCont = 1 && si on ne demande pas les infos container, on ne crée pas les colonnes loSheet.cells(1,6).Value iif(snLangue 1,"prix container HC","Cont. prijs HC") loSheet.cells(1,7).Value iif(snLangue 1,"prix container 20P","Cont. prijs 20P") loSheet.cells(1,8).Value iif(snLangue 1,"prix container 40P","Cont. prijs 40P")
loSheet.cells(1,9).Value = "Qty HC"
loSheet.cells(1,10).Value = "Qty 20p"
loSheet.cells(1,11).Value = "Qty 40p"
loSheet.cells(1,12).Value = "usine"
endif
select c_result
go top
do while !EOF()
loSheet.cells(lnLine,1).value = c_result.ref
loSheet.cells(lnLine,2).value = c_result.pcb
loSheet.cells(lnLine,3).value = c_result.nom
*if file(gcDataDir + "PICTURES\ART" + alltrim(c_result.ref)+".JPEG")
* loSheet.range['D3','D3'].select
* loSheet.pictures.insert(gcDataDir + "PICTURES\ART" + alltrim(c_result.ref)+".JPG")
*endif
*loSheet.cells(lnLine,4).value = "photo"
loSheet.cells(lnLine,5).value = c_result.prix
if snCont = 1 && si on ne demande pas les infos container, on ne rempli pas les colonnes loSheet.cells(lnLine,6).value iif(snCont 1,c_result.prix_conthc,"") loSheet.cells(lnLine,7).value iif(snCont 1,c_result.prix_cont20,"") loSheet.cells(lnLine,8).value iif(snCont 1,c_result.prix_cont40,"") loSheet.cells(lnLine,9).value iif(snCont 1,c_result.qty_contHC,"") loSheet.cells(lnLine,10).value iif(snCont 1,c_result.qty_cont20,"") loSheet.cells(lnLine,11).value iif(snCont 1,c_result.qty_cont40,"")
loSheet.cells(lnLine,12).value = c_result.c_usine
endif
lnLine = lnLine + 1
skip
loop
enddo
loExcel.visible = .T.
** Quadrillage du rapport:
** Récupération de la dernière case en bas à droite utilisée
*!* if snCount = 1
*!* lcMonCell = "L"+str(lnLine)
*!* messagebox(lcMonCell)
*!* else
*!* lcMonCell = "E"+str(lnLine)
*!* messagebox(lcMonCell)
*!* endif
loSheet.Range['A1','E15'].select
with loSel.borders(xlEdgeLeft)
.LineStyle=xlContinuous
.Weight=xlThin
.ColorIndex=xlAutomatic
endwith
If snCont = 1 && si on ne demande pas les infos container, on ne crée pas les colonnes loSheet.cells(1,6).Value Iif(snLangue 1,"prix container HC","Cont. prijs HC") loSheet.cells(1,7).Value Iif(snLangue 1,"prix container 20P","Cont. prijs 20P") loSheet.cells(1,8).Value Iif(snLangue 1,"prix container 40P","Cont. prijs 40P")
loSheet.cells(1,9).Value = "Qty HC"
loSheet.cells(1,10).Value = "Qty 20p"
loSheet.cells(1,11).Value = "Qty 40p"
loSheet.cells(1,12).Value = "usine"
Endif
*!* select c_result
*!* go top
*!* do while !EOF()
*!* loSheet.cells(lnLine,1).value = c_result.ref
*!* loSheet.cells(lnLine,2).value = c_result.pcb
*!* loSheet.cells(lnLine,3).value = c_result.nom
*!* *if file(gcDataDir + "PICTURES\ART" + alltrim(c_result.ref)+".JPEG")
*!* * loSheet.range['D3','D3'].select
*!* * loSheet.pictures.insert(gcDataDir + "PICTURES\ART" + alltrim(c_result.ref)+".JPG")
*!* *endif
*!* *loSheet.cells(lnLine,4).value = "photo"
*!* loSheet.cells(lnLine,5).value = c_result.prix
*!*
*!* if snCont = 1 && si on ne demande pas les infos container, on ne rempli pas les colonnes*!* loSheet.cells(lnLine,6).value iif(snCont 1,c_result.prix_conthc,"")*!* loSheet.cells(lnLine,7).value iif(snCont 1,c_result.prix_cont20,"")*!* loSheet.cells(lnLine,8).value iif(snCont 1,c_result.prix_cont40,"")*!* loSheet.cells(lnLine,9).value iif(snCont 1,c_result.qty_contHC,"")*!* loSheet.cells(lnLine,10).value iif(snCont 1,c_result.qty_cont20,"")*!* loSheet.cells(lnLine,11).value iif(snCont 1,c_result.qty_cont40,"")
*!* loSheet.cells(lnLine,12).value = c_result.c_usine
*!* endif
*!* lnLine = lnLine + 1
*!* skip
*!* loop
*!* enddo
loExcel.Visible = .T.
** Quadrillage du rapport:
** Récupération de la dernière case en bas à droite utilisée
*!* if snCount = 1
*!* lcMonCell = "L"+str(lnLine)
*!* messagebox(lcMonCell)
*!* else
*!* lcMonCell = "E"+str(lnLine)
*!* messagebox(lcMonCell)
*!* endif
gregorian
Messages postés57Date d'inscriptionlundi 18 avril 2005StatutMembreDernière intervention24 mars 20111 14 mai 2007 à 10:41
Merci beaucoup.
Ca fonctionne à merveille.
Peux tu me dire ou je pourrais trouver une doc sur les fonctions excell pour savoir au moins dans qu'elle direction aller lorsque je dois faire ce genre de chose.
Mike Gagnon
Messages postés381Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention24 octobre 20132 14 mai 2007 à 12:10
A part les #DEFINE, la meilleur facon de faire est lorsque tu veux faire quelque chose avec Excel, enregistre une Macro, fais ce que tu as a faire, ferme ta Macro, edite la macro, et tout le code ci trouve (En VB, mais tres proche de VFP). Tools-Macro-Record a new Macro.
michelatoutfox
Messages postés828Date d'inscriptionmardi 5 octobre 2004StatutMembreDernière intervention 7 mai 20131 14 mai 2007 à 13:18
Tu peux aussi utiliser l'explorateur d'objet de VFP, pour récupérer toutes les constantes de VB (celles que Mike redéfinit en constantes de précompilation), et les propriétés et méthodes utilisables en automation sur Excel