Bonjour
Pour résoudre mes problèmes avec Excel sur les conseils de KCC j'ai commencé
à utiliser COMate qui permet certainement de réaliser pas mal de choses.
Si j'ai compris un peu COMate pour Excel, une fois que l'on a créer l'ObjetExcel on utilise
les propriétés et méthode comme en VBA ex:
Ajout d'un classeur avec COMate :WorkBook = ExcelObject\GetObjectProperty("Workbooks\Add")
Ajout d'un classeur en VBA : Workbooks.Add
J'arrive également à :
ouvrir un classeur avec un nb de feuille déterminées
sélectionner la feuille qui m'intérresse
de remplir une cellule et de la formater
Ce que je n'arrive pas à faire :
Ouvrir un fichier existant
En VBA : Workbooks.Open Filename:="C:\Repertoire 1\Prog\Classeur.xls", password:="blabla"
Ecrire dans des cellules avec une boucle
En VBA
c = 1
r = 1
valcel = 0
For i = 1 To 10
Cells(r, c) = valcel
valcel = valcel + 10
r = r + 2
Next
Enregistrer le document actif
En VBA
ActiveWorkbook.SaveAs Filename:="D:\ProgPureBasic\ClasseurXXX.xls"
FileFormat:=xlNormal, Password:="blabla", WriteResPassword:="blabla"
J'espère que vous allez pouvoir m'apporter quelques réponses à mes questions.
Merci par avance.
COMate avec Excel
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: COMate avec Excel
Sur le forum FR pas beaucoup de monde utilisent COMATE, ou alors personne n'en parle.
Peut etre que quelqu'un pourra t'aider, mais sinon il va falloir sortir les livres d'anglais de l'armoire
Tout ce que je peux te dire, car j'ai aussi beaucoup de mal a utiliser cette librarie, c'est que pour les createurs ainsi que KIFFY, TsSoft etc ça leur parait tres simple.
En fait SROD s'est arrangé pour creer les fonctions de base du OLE.
Les connections aux objets, les envois d'ordres par le COM
De ce que j'ai compris, il n'y a pas beaucoups de commandes differentes.....
La seule chose c'est que y'a une commande du style INVOKE, une fonction (moi je l'appelle comme ça), et le ou les parametres a envoyer que necessite la fonction.
En fin de compte une fois que tu as compris le principe, (ce qui ne m'est encore pas arrivé
), il te suffit de "piquer" un code VB....et de le "traduire" avec les quelques fonctions extra puissantes de COMATE.
En principe..tout ce que peut faire VB....COMATE peut le faire....le tout est de comprendre la syntaxe.
Il y a de nombreux exemples de COMATE, il faut les croiser et essayer de comprendre le mecanisme.
Apres tu pourra de toi meme creer tes commandes COM
Si personne ne peut te repondre sur le FR.
Fait des recherches sur le US des fois que quelqu'un ai deja posé le meme style de questions, car tu sais personne n'aime dans les forums que l'on pose plusieurs fois la meme question.
Commence a construire ton code, avec les commandes de COMATE, et apres demande gentillement a SROD, si il pourrait pas t'aider.
Avec de la patience, de la courtoisie tout est possible...
C'est comme ça que j'ai procédé, et j'ai toujours eu satisfaction ce dont je le remercie
Parfois c'est meme KIFFY ou TsSoft des caids en la matiere ou meme d'autres qui pourront t'aider.
En tout cas ce sont des gens qui sont tres souvent sur le forum.
TsSoft m'avait aussi beaucoup aidé et est tres reactif, mais c'est avec sa lib PureDishelper qui n'est pas opensource.
C'est presque la meme chose, mais pas tout a fait la meme syntaxe
Quand a SROD il est sur tous les terrains en meme temps et il chome pas, alors esperont qu'il pourra te consacrer un peu de son precieux temps
En tout cas ils preferent que tu bosse un peu en essayant de creer le code....(sans mettre trop n'importe quoi hein
)
Que quand tu leur pose directement la question sans rien donner
D'ailleurs c'est aussi un peu le cas ici
Voila...désolé de ne pas pouvoir t'aider plus...
Comme je te l'ai dit....ça fait 4 ans que je suis un debutant
Et pourtant c'est pas faute de me defoncer de 12 a 13 h par jour....
Dans ma famille on est tous des ouvriers et ma mere n'a pas jugé bon de prendre l'option "brain inside" ça sert a rien pour monter les moellons
D'ailleurs programmer pour ma famille c'est presque une "tare"...c'est synonyme de "jouer"
Et dans la vie .....comme ils disent.....y'a pas que le jeux .....y'a surtout le "vrai" travail
Peut etre que quelqu'un pourra t'aider, mais sinon il va falloir sortir les livres d'anglais de l'armoire

Tout ce que je peux te dire, car j'ai aussi beaucoup de mal a utiliser cette librarie, c'est que pour les createurs ainsi que KIFFY, TsSoft etc ça leur parait tres simple.
En fait SROD s'est arrangé pour creer les fonctions de base du OLE.
Les connections aux objets, les envois d'ordres par le COM
De ce que j'ai compris, il n'y a pas beaucoups de commandes differentes.....
La seule chose c'est que y'a une commande du style INVOKE, une fonction (moi je l'appelle comme ça), et le ou les parametres a envoyer que necessite la fonction.
En fin de compte une fois que tu as compris le principe, (ce qui ne m'est encore pas arrivé

En principe..tout ce que peut faire VB....COMATE peut le faire....le tout est de comprendre la syntaxe.
Il y a de nombreux exemples de COMATE, il faut les croiser et essayer de comprendre le mecanisme.
Apres tu pourra de toi meme creer tes commandes COM

Si personne ne peut te repondre sur le FR.
Fait des recherches sur le US des fois que quelqu'un ai deja posé le meme style de questions, car tu sais personne n'aime dans les forums que l'on pose plusieurs fois la meme question.
Commence a construire ton code, avec les commandes de COMATE, et apres demande gentillement a SROD, si il pourrait pas t'aider.
Avec de la patience, de la courtoisie tout est possible...

C'est comme ça que j'ai procédé, et j'ai toujours eu satisfaction ce dont je le remercie

Parfois c'est meme KIFFY ou TsSoft des caids en la matiere ou meme d'autres qui pourront t'aider.

En tout cas ce sont des gens qui sont tres souvent sur le forum.
TsSoft m'avait aussi beaucoup aidé et est tres reactif, mais c'est avec sa lib PureDishelper qui n'est pas opensource.
C'est presque la meme chose, mais pas tout a fait la meme syntaxe
Quand a SROD il est sur tous les terrains en meme temps et il chome pas, alors esperont qu'il pourra te consacrer un peu de son precieux temps

En tout cas ils preferent que tu bosse un peu en essayant de creer le code....(sans mettre trop n'importe quoi hein

Que quand tu leur pose directement la question sans rien donner

D'ailleurs c'est aussi un peu le cas ici

Voila...désolé de ne pas pouvoir t'aider plus...
Comme je te l'ai dit....ça fait 4 ans que je suis un debutant

Et pourtant c'est pas faute de me defoncer de 12 a 13 h par jour....

Dans ma famille on est tous des ouvriers et ma mere n'a pas jugé bon de prendre l'option "brain inside" ça sert a rien pour monter les moellons

D'ailleurs programmer pour ma famille c'est presque une "tare"...c'est synonyme de "jouer"

Et dans la vie .....comme ils disent.....y'a pas que le jeux .....y'a surtout le "vrai" travail

Re: COMate avec Excel
Merci pour ta réponse , je vais aller faire un tour du côté de chez SROD.
Avant de poster j'avais quand même essayé plusieurs trucs avec COMate, comme je fais du VBA
surtout avec Excel et un peu Acces, j'avais essayer de transcrire, mais comme tu dis il faut comprendre le mécanisme de COMate.
Bon je vais aller écumer les autres forum, avec Google pour la traduction je vais peut être réussir.
J'espère revenir avec quelques nouvelles sur ce post.
A bientôt.........
Avant de poster j'avais quand même essayé plusieurs trucs avec COMate, comme je fais du VBA
surtout avec Excel et un peu Acces, j'avais essayer de transcrire, mais comme tu dis il faut comprendre le mécanisme de COMate.
Bon je vais aller écumer les autres forum, avec Google pour la traduction je vais peut être réussir.
J'espère revenir avec quelques nouvelles sur ce post.
A bientôt.........
Re: Résolu :COMate avec Excel
Bonjour
J'ai résolu mon problème entre COMate et Excel , je mets ces quelques codes en lignes, cela
pourra peut être servir à quelqu'un.
Je vous invite a aller voir http://www.purebasic.fr/french/viewtopic.php?f=3&t=5812
ou il y a du code très intéressant sur COMate.
Il me reste quand même certains points à régler, mais là je crois que je vais intérroger les gens du forum anglais.
J'ai résolu mon problème entre COMate et Excel , je mets ces quelques codes en lignes, cela
pourra peut être servir à quelqu'un.
Code : Tout sélectionner
IncludePath "..\"; chemin de COMatePlus ici c'est le dossier parent de votre sous repertoire
XIncludeFile "COMatePLUS.pbi"
Define.COMateObject Exl
Define.COMateObject Workbook
Define.COMateObject WorkSheet
Define.COMateObject Sheet
Define.COMateObject Range
mois$="septembre"
an$="2009"
hStatement = COMate_PrepareStatement("Cells(" + Str(@row) + " As long BYREF," + Str(@col) + " As long BYREF) = " + Str(@value) + " As string BYREF")
If hStatement = 0
MessageRequester("COMatePLUS!", "Couldn't create the statement!" + #CRLF$ + #CRLF$ + "COMatePLUS error : " + COMate_GetLastErrorDescription())
EndIf
Exl = COMate_CreateObject("Excel.Application")
If Exl
If Exl\SetProperty("Visible = #True") = #S_OK
;ouvrir un fichier existant
Workbook=Exl\GetObjectProperty("Workbooks\Open('C:\MonRepertoire\ClasseurPB.xls')")
;enregistrer un fichier avec un nom spécifique
leFichierSave$= "ActiveWorkbook\SaveAs ('C:\MonRepertoire\Classeur_2_PB.xls')"
;ou si l'on veut construire le nom du fichier
leFichierSave0$=mois$+an$+".xls"
leFichierSave$= "ActiveWorkbook\SaveAs ('C:\MonRepertoire\" + leFichierSave0$ + "')"
Workbook= Exl\GetObjectProperty(leFichierSave$)
;activer un classeur
Workbook= Exl\GetObjectProperty("ActiveWorkbook")
;Supprimer la feuille 1
WorkSheet = Workbook\GetObjectProperty("worksheets(1)\Delete")
;sélectionner une feuille
Sheet = Workbook\GetObjectProperty("worksheets(2)\select")
;activer une feuille
Sheet = Workbook\GetObjectProperty("ActiveSheet")
;En ce qui concerne l'écriture avec une boucle sur plusieurs cellules contigues
; il fuat utiliser COMatePlus et se service de PrepareStatement, cela fon ctionne très bien.
j=1
For col = 5 To 45
For row = 10 To 110
value = COMate_MakeBSTR( Str(j))
;Execute prepared statement.
Exl\SetProperty("", hStatement)
SysFreeString_(value)
j=j+1
Next
Next
Exl\Invoke("Quit()")
Workbook\Release()
EndIf
Exl\Release()
EndIf
ou il y a du code très intéressant sur COMate.
Il me reste quand même certains points à régler, mais là je crois que je vais intérroger les gens du forum anglais.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: COMate avec Excel
Je te remercie MALO de ton partage.
Etant moi-meme un passionné de la question, ton code me sera surement utile un jour
Encore merci et au plaisir
Etant moi-meme un passionné de la question, ton code me sera surement utile un jour
Encore merci et au plaisir
