begin process at 2012 05 30 05:14:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

VC++ - Automation Excel - Save tout court et non pas SaveAS ??


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

VC++ - Automation Excel - Save tout court et non pas SaveAS ??

jeudi 31 mars 2005 à 21:50:13 | VC++ - Automation Excel - Save tout court et non pas SaveAS ??

clothilde

Bonsoir tout le monde,

je ne savais pas dans quelle rubrique poster ce sujet, je l'ai donc mis dans "au secours".

Je travaille avec Visual C++, j'ai créé une appli qui, au terme de diverses manip, vient écrire son compte rendu dans un fichier excel.

Jusque là pas de soucis. J'accès bien à excel, je crée bien le fichier si nécessaire et je sauvegarde via une ligne du style :

worksheet->SaveAs(cheminDeSauvegarde);

Lorsque le fichier n'existe pas, aucun soucis, le fichier est créé et excel est fermé ensuite par un close.
Comme je souhaite que cette manipe soit faite de façon transparente pour l'utilisateur, je n'affiche pas excel.

Mon soucis réside dans le SaveAs. En effet, comme je viens de le dire, lorsque le fichier n'existe pas, c'est ok.
Par contre, lorsque le fichier existe, je complète son contenu avec les nouvelles infos, pas de soucis. Mais étant donné qu'il s'agit d'un SaveAs, comme tout SaveAs qui se respecte, il me demande, par l'intermédiaire d'une boite de dialogue, si je veux remplacer le fichier existant.

La transparence est foutue :-(

Etant donné que si le fichier existe je l'ouvre pour y ajouter des données, je souhaiterais pouvoir le sauver à la méthode du Save, c'est à dire sans poser de question.

Quelqu'un saurait-il comment faire ?

 Clo
vendredi 1 avril 2005 à 13:15:14 | Re : VC++ - Automation Excel - Save tout court et non pas SaveAS ??

meech

Membre Club
Salut,

As-tu correctement défini la propriété "Visible" de l'instance Excel à False, après la création de ton objet ?
Quelle version d'Excel utilises-tu ?

Ici, un lien vers la MSDN pour l'utilisation des objets Excel 2000  :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/off2000/html/xlmthsave.asp (méthode Save). Cette méthode suppose sans doute que le fichier ait été préalablement ouvert.

En espérant t'avoir un peu aidé,
Ciao.
vendredi 1 avril 2005 à 14:06:04 | Re : VC++ - Automation Excel - Save tout court et non pas SaveAS ??

clothilde

Salut Meech,

tout d'abord merci pour le lien, j'ai eu beau chercher je n'avais pas trouvé (mettons ça sur le dos de la fatigue ;-)   )

Pour répondre à ta question, oui j'ai bien mis visible à False. L'environnement Excel n'apparaît pas à l'utilisateur. Seule la boîte de dialogue de confirmation d'enregistrement du fichier apparaît.

Alors effectivement, grâce au lien que tu viens de m'indiquer, je constate que la méthode Save est une méthode du workbook et non pas du sheet. Ce qui est déjà très intéressant.

En utilisant la méthode Save correctement appliquée, il y a une évolution : la dialogue box n'affiche plus "il existe déjà un fichier machin.xls, voulez-vous le remplacer ?" mais "Voulez-vous sauvegarder les modifications apportées au fichier machin.xls", ce qui en soit est déjà un net progrès car le deuxième message est moins inquiétant d'un point de vue utilisateur.

Mais cela ne résoud pas entièrement le problème. L'idéal serait de ne pas avoir du tout cette dialogue box.

Toujours avec le lien que tu m'as indiqué, je vois que la méthode SaveAs peut s'appliquer au wookbook au lieu du sheet, avec un paramètre suplémentaire qui est le paramètre ConflictResolution . Ce paramètre semble être ce que je recherche.
Je suppose qu'en lui passant la valeur  xlLocalSessionChanges    je devrais pouvoir forcer l'enregistrement des modifications sans afficher de dialog box.

Et là je sèche de nouveau, comment faire pour passer ce paramètre ?
A la compilation la constante n'est pas reconnue (avec un x ou un X d'ailleurs)
D'autre part, quelle valeur faut-il passer aux autres paramètres pour que leur valeur par défaut soit conservée ?  est-ce que NULL fait l'affaire ou surtout pas ?

J'ai essayé de chercher, mais j'avoue bloquer sur ce point.

Si tu as la solution, je t'en serais reconnaissante ;-)

Merci,
 Clo

vendredi 1 avril 2005 à 15:09:58 | Re : VC++ - Automation Excel - Save tout court et non pas SaveAS ??

meech

Membre Club

Re-bonjour,

A priori, d'après ce que j'ai pu trouver, en C ou C++ (ou quel que soit le langage, en fait...),
xlLocalSessionChanges est une macro définie du genre :
#define xlLocalSessionChanges 2

... ce qui me porte à dire qu'en spécifiant 2 dans l'argument concerné, tu obtiendras peut-être une solution à ton problème. En effet, MSDN lui-même n'explique-t-il pas que "xlLocalSessionChanges (automatically accept the local users changes)" ?

Bref, en gros, xlLocalSessionChanges est sans doute  une macro non spécifiée dans un des nombreux fichiers d'en-têtes fourni avec Visual C++...

En espérant que tu vois le bout du tunnel,
Ciao.

PS. Dans l(hypothèse où cela fonctionne enfin, n'oublies pas de valider ma réponse !

vendredi 1 avril 2005 à 15:10:07 | Re : VC++ - Automation Excel - Save tout court et non pas SaveAS ??

meech

Membre Club

Re-bonjour,

A priori, d'après ce que j'ai pu trouver, en C ou C++ (ou quel que soit le langage, en fait...),
xlLocalSessionChanges est une macro définie du genre :
#define xlLocalSessionChanges 2

... ce qui me porte à dire qu'en spécifiant 2 dans l'argument concerné, tu obtiendras peut-être une solution à ton problème. En effet, MSDN lui-même n'explique-t-il pas que "xlLocalSessionChanges (automatically accept the local users changes)" ?

Bref, en gros, xlLocalSessionChanges est sans doute  une macro non spécifiée dans un des nombreux fichiers d'en-têtes fourni avec Visual C++...

En espérant que tu vois le bout du tunnel,
Ciao.

PS. Dans l'hypothèse où cela fonctionne enfin, n'oublies pas de valider ma réponse !

vendredi 1 avril 2005 à 15:52:45 | Re : VC++ - Automation Excel - Save tout court et non pas SaveAS ??

clothilde

Re,

merci pour ces infos et pour ton aide.

Par contre, comment faire pour passer cet argument à la méthode ???

 Clo
samedi 2 avril 2005 à 14:29:38 | Re : VC++ - Automation Excel - Save tout court et non pas SaveAS ??

clothilde

:-(

je reste bloquée,  je n'arrive pas à passer l'argument à la méthode parmis les 11 arguments requis, j'ai cherché un peu partout mais aucune solution :-(

 Clo
lundi 4 avril 2005 à 09:27:16 | Re : VC++ - Automation Excel - Save tout court et non pas SaveAS ??

meech

Membre Club
Réponse acceptée !
Bonjour Clothilde,

Désolé de ma réponse tardive. Je me demande si nous sommes bien sur la bonne voie... J'ai en effet découvert une propriété qui définit (sous Excel 97 mais cela doit fonctionner sur les versions suivantes) pour éviter la boîte de dialogue :

[ Lien ]

Il faudrait définir dès lors Application.AlertBeforeOverwriting = FALSE où Application constitue l'objet instancié de Excel.

En espérant enfin t'avoir aidé un peu... A +

(Sans vouloir toujours critiquer, c'est quand même un peu le bord..l, Microsoft et sa MSDN)
lundi 4 avril 2005 à 15:26:47 | Re : VC++ - Automation Excel - Save tout court et non pas SaveAS ??

clothilde

Salut Meech,

en fait l'AlertBeforeOverwriting concerne l'écrasement des cellules et non pas l'écrasement des fichiers semblerait-il.

Toujours est-il qu'en travaillant sur cette dernière option j'ai repris un peu mon code et je l'ai modifié de la sorte :

excel->PutVisible (false);

Excel::_WorkbookPtr workbook;

if (!existant) { workbook = excel->Workbooks->Add(static_cast<long>(Excel::xlWorksheet));}

if (existant) { workbook = excel->Workbooks->Open (cheminDeSauvegarde); }

où existant est un booléen permettant de savoir si le fichier existe déjà ou non

puis je fais mes manipe et je fais un

worksheet->SaveAs(cheminDeSauvegarde);

si le fichier n'existait pas au départ
ou un

workbook->Save();

si le fichier existait.

Et là ça marche. Il me semble que j'avais fait ça dès ton premier indice, mais apparemment j'avais dû écrire workbook->Save;  qui fonctionne mais qui fait apparaître la dialogue d'après les essais que j'ai pû faire.

En tout cas merci pour ton aide, merci à BruNews également.

 Clo
lundi 4 avril 2005 à 16:52:46 | Re : VC++ - Automation Excel - Save tout court et non pas SaveAS ??

meech

Membre Club
Désolé pour la dernière confusion. A +.

1 2

Cette discussion est classée dans : fichier, excel, existe, soucis, saveas


Répondre à ce message

Sujets en rapport avec ce message

Ecrire dans fichier excel par interface C plus plus [ par cvi ] Comment puis-je écrire dans un fichier excel à partir d'une interface concue en c plus plus ?Pouvez-cous me donner un exemple de code ?Merci d'avance. accés à un fichier Excel [ par gagaet22 ] Bonjour à tous!!!En basic, pas de souci pour l accés à Excel. Par contre en c++ je n ai AUCUNES IDEES de comment m y prendre. J ai regardé dans MSDN e aide sur les fichiers [ par dickymoe ] VinceExiste-t-il une fonction permettant de savoir si un fichier existe ?et une autre permettant de savoir si un fichier est vide ?merci L'équivalence de common en C [ par khalidlyon ] Bonjour, Enfaite, j'ai un variable qui prend 1 si le fichier existe et 0 si non, le probleme que l'application commence par un fichier qui n existe pa tester si un fichier existe [ par desquesa ] Bonjour tout le monde,je voudrais juste savoir comment tester en Visual c++6, si un fichier existe ou non, car en fait je cherche a copier un fichier Ouvrir un fichier excel deja enregistrer ss VC++ [ par kalf2000 ] salut a tous,voila je voudrai faire un truc très simple, je veux que lorsque je click sur un bouton, un fichier excel (.xls) qui contien deja des info ouvrir un fichier Excel avec 'C plus plus ' [ par cvi ] Mon problème est d'ouvrir un fichier excel d'après une interface créer à l'aide de visual C"plus plus" 6.0.Le but est d'ouvrir un fichier avec un bout pb de lecture ecriture d'un fichier excel [ par margotfleur ] MargotFleur Bonjour à tous !Après avoir lu tout ce qu'il y a sur ce forum concernant l'accès à un fichier excel, (je suis débutante en VC++), je n'arr EXcel i need you [ par ifren ] bonjourje voudrai creer une application sous vc++ et qui (en clickant par exemple sur un boutton) me crée un fichier .xls (Excel), en faisant remplir ecrire dans un fichier Excel sous Dev-Cpp [ par fox88 ] je recherche un moyen afin d'ecrire des donnees dans un fichier Excel afin de mettre de la mise en forme (couleur des cellules, etc...) en c++ sous De


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,281 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales