OVH Cloud OVH Cloud

TableVErsExcel ne marche... toujours pas

6 réponses
Avatar
titi
Bonjour,

De nouveau le même problème, je dois exporter ma table "TablePointés" qui
fait partie de la fenetre "FenPointés" vers un fichier Excel.

Ca marche lorsque mon bouton EXPORT se trouve dans la fentre FenPointé, mais
si je mets cette procédure ailleurs, ca plante sur la ligne
TableVersExcel...

J'ai essayé ceci :
- TableVersExcel(TablePointés,"c:\export.xls",ta...)
- TableVersExcel(FenPointés.TablePointés,"c:\export.xls",ta...)

Je sais qu'à ce niveau, la fenetre FenPointés est fermée et que la merde
vient suremetn d'ici. Juste avant la ligne "TableVersExcel ..." j'ai marqué
:
- Ouvre(Pointés,HorsEcran)

Voila voila ...

6 réponses

Avatar
Michel
titi a écrit :
Bonjour,

De nouveau le même problème, je dois exporter ma table "TablePointés" qui
fait partie de la fenetre "FenPointés" vers un fichier Excel.

Ca marche lorsque mon bouton EXPORT se trouve dans la fentre FenPointé, mais
si je mets cette procédure ailleurs, ca plante sur la ligne
TableVersExcel...

J'ai essayé ceci :
- TableVersExcel(TablePointés,"c:export.xls",ta...)
- TableVersExcel(FenPointés.TablePointés,"c:export.xls",ta...)

Je sais qu'à ce niveau, la fenetre FenPointés est fermée et que la merde
vient suremetn d'ici. Juste avant la ligne "TableVersExcel ..." j'ai marqué
:
- Ouvre(Pointés,HorsEcran)

Voila voila ...




Comment veux tu faire référence à un contenu en mémoire si celui-ci
n'est justement plus en mémoire ?

c'est "Pointés" le nom de la fenêtre ou "FenPointés" ?

si tu fait un ouvre comme cela, la fenètre va bien s'ouvrir hors ecran
mais elle va prendre le focus donc ton code TableVersExcel ne
s'executera que lorsque cette fenetre sera fermé et donc plantera.

regardes les modes d'ouverture sous Windev (en fait sous Windows)

Le plus logique serait de n'autoriser l'ouverture de fenetres qui
contiennent du code relatif à une autre fenetre qu'a partir de cette
premiere fenetre, non ?

Dans FenPointé un bouton avec ouvre("FenAvecBoutonExport")

ou bien autre idée, dans le code d'ouverture des fenetre utilisant cette
focntionnalité, testé si la fenetre "FenPointé est ouverte, sinon faire
un OuvreFille en mode hors ecran.

Lors de la fermeture, la fenetre fille sera automatiquement refermée.

Michel
Avatar
titi
>
c'est "Pointés" le nom de la fenêtre ou "FenPointés" ?



C'est "FenPointés", c'est le fichier HF qui s'appelle POINTES

si tu fait un ouvre comme cela, la fenètre va bien s'ouvrir hors ecran
mais elle va prendre le focus donc ton code TableVersExcel ne s'executera
que lorsque cette fenetre sera fermé et donc plantera.

regardes les modes d'ouverture sous Windev (en fait sous Windows)

Le plus logique serait de n'autoriser l'ouverture de fenetres qui
contiennent du code relatif à une autre fenetre qu'a partir de cette
premiere fenetre, non ?

Dans FenPointé un bouton avec ouvre("FenAvecBoutonExport")



Tu pourrais mieux m'expliquer cela ? J'ai écrit dans ma fenetre isolée :
ouvre(FenPointés.Exporter) => EXPORTER étant le nom du bouton ou se trouve
ma procédure d'export. Mais j'ai encore un plantage. Est ce qu'il fallait
faire ca ?

ou bien autre idée, dans le code d'ouverture des fenetre utilisant cette
focntionnalité, testé si la fenetre "FenPointé est ouverte, sinon faire un
OuvreFille en mode hors ecran.



Cela impose d'avoir une fenetre mère en MDI, ce que j'ai essayé de faire,
mais ca m'a fait tout un bric a brac. Je suis pas encore assez musclé pour
ca !

La première solution me parait bien ...
Je rappelle que je dois automatiser une procédure d'exportation à l'ouvrture
du programme, je ne peux donc pas demander à l'utilisateur d'aller dans
telle et telle fenetre pour faire cela... cette procédure doit se trouver
impérativement dans le code d'initialisation de ma 1° fenetre...
Avatar
Michel
titi a écrit :
c'est "Pointés" le nom de la fenêtre ou "FenPointés" ?




C'est "FenPointés", c'est le fichier HF qui s'appelle POINTES


si tu fait un ouvre comme cela, la fenètre va bien s'ouvrir hors ecran
mais elle va prendre le focus donc ton code TableVersExcel ne s'executera
que lorsque cette fenetre sera fermé et donc plantera.

regardes les modes d'ouverture sous Windev (en fait sous Windows)

Le plus logique serait de n'autoriser l'ouverture de fenetres qui
contiennent du code relatif à une autre fenetre qu'a partir de cette
premiere fenetre, non ?

Dans FenPointé un bouton avec ouvre("FenAvecBoutonExport")




Tu pourrais mieux m'expliquer cela ? J'ai écrit dans ma fenetre isolée :
ouvre(FenPointés.Exporter) => EXPORTER étant le nom du bouton ou se trouve
ma procédure d'export. Mais j'ai encore un plantage. Est ce qu'il fallait
faire ca ?


ou bien autre idée, dans le code d'ouverture des fenetre utilisant cette
focntionnalité, testé si la fenetre "FenPointé est ouverte, sinon faire un
OuvreFille en mode hors ecran.




Cela impose d'avoir une fenetre mère en MDI, ce que j'ai essayé de faire,
mais ca m'a fait tout un bric a brac. Je suis pas encore assez musclé pour
ca !

La première solution me parait bien ...
Je rappelle que je dois automatiser une procédure d'exportation à l'ouvrture
du programme, je ne peux donc pas demander à l'utilisateur d'aller dans
telle et telle fenetre pour faire cela... cette procédure doit se trouver
impérativement dans le code d'initialisation de ma 1° fenetre...





Je penses que tu dois avoir tes raisons de faire cela mais si tu veux
exporter qqchose automatiquement pourquoi passer par un TableVersExcel
qui est plutôt adapté qd l'utilisateur a la table affichée devant ses
yeux et dont le contenu est le résultat d'une sélection particulière.

Est-ce parce que tu penses que c'est plus simple ?

Il y a des classes toutes faites pour piloter Excel sur le site de l'asso.

Tu fait un parcours de ton fichier et tu construit chaque ligne de ton
fichier Excel.
En plus ce sera plus clean car tu pourras avoir un document avec un
formatage précis, logo etc...


Michel
Avatar
titi
je me suis dépatouillé ... avec

OuvreFille(FenPointés)
ExecuteTraitement(mon bouton ...)
Ferme(FenPointés)

C'est surement pas très propre, mais ca marche ... merci.
Avatar
titi
Je ne connais pas cette methode, mais ca a l'air effectivement + propre
qu'avec TableVersExcel qui marche très bien lorsque la fenetre ou se trouve
la table est ouverte.

Quel est la procédure ?
Avatar
Michel
titi a écrit :
Je ne connais pas cette methode, mais ca a l'air effectivement + propre
qu'avec TableVersExcel qui marche très bien lorsque la fenetre ou se trouve
la table est ouverte.

Quel est la procédure ?




Si tu ne veux pas utiliser une classe, tu peux aussi dire utiliser
directement OLE :
Exemple à vérifier car je tape cela directement dans le mail donc des
erreurs se glissent certainement.

sfic = "Monfichier.xls"
nLigne = 4 //Par exemple, on commence à écrire à partir de la
4eme ligne
nColonne = 3 //Par exemple
// On récupére l'objet Excel éventuellement déjà en mémoire
xl est un objet OLE dynamique = ObjetActif("Excel.Application")
// Allocation d'un objet Excel si non-trouvé
SI xl=Null ALORS xl=allouer un objet OLE "Excel.Application"
xl>>Visibleúux // Excel n'apparait pas à l'écran
// Ouverture du document
xl>>WorkBooks>>Open(sFic)

// Parcours du fichier
sablier(vrai)
HlitPremier(NomFichier,MaCle)
Tantque pas Hendehors(NomFichier)
nLigne++

// Envoi des données dans les cellules d'Excel
xl>>Cells(nLigne,nColonne)>>Value=NomFichier.Champ1
xl>>Cells(nLigne,nColonne+1)>>Value=NomFichier.Champ2
.......
.......
HLitSuivant(NomFichier)
FIN

xl>>ActiveWorkBook>>Save() // Enregistrement du document modifié
xl>>ActiveWorkBook>>Close(Faux) // Fermeture du document
xl>>Quit() // Fermeture d'Excel
libérer xl // Libération de l'objet Excel
// Affichage du document ?

Sablier(Faux)
SI OuiNon("Fichier Excel enregistré."+RC+"Souhaitez vous voir le
résultat ?") ALORS
LanceAppliAssociée(sFic)
FIN
FIN