Comment enregistrer un fichier

pointbin Messages postés 71 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 13 mai 2010 - 15 juin 2005 à 09:46
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 19 juin 2005 à 21:41
Bonjour,
j'utilise une feuille exel dans un form et apres finir le traitement je veut le sauvegarder sous un dossier.
est ce possile ?
Merci

14 réponses

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
15 juin 2005 à 10:04
Sheet.SaveAs ... ?

@+


E.B.
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
15 juin 2005 à 17:10
Non, c'est plutot :




Workbooks(NomDuClasseur).Save



Ca, c'est qu'il y a de plus simple! Ne demande aucun paramètres!

Sinon, tu as aussi :




'Pour enregistrer le classeur tout entier


Workbooks(NomDuClasseur).SaveAs paramètres


'Pour n'enregistrer que la feuille


Worksheets(NomDeLaFeuille).SaveAs paramètres


Paramètres : Filename, FileFormat, Password,
WriteResPassword, ReadOnlyRecommended,
CreateBackup, AddToMru, TextCodePage,
TextVisualLayout



Tu as aussi
SaveCopyAs(Filename) ...



Enfin, le mieux reste encore de regarder dans l'aide du VBA !!!



Enjoy



(Si une réponse vous convient, cliquez sur le bouton "Accepter..." ...)
0
pointbin Messages postés 71 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 13 mai 2010
15 juin 2005 à 23:17
Merci
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
16 juin 2005 à 00:42
Si tu veux vraiment nous remercier, clique sur le bouton
"Accepter la réponse" afin que personne d'autre ne perde de temps à
essayer de te répondre!!! Ainsi, dans la liste, ton post sera
accompagné d'une icone de validation verte ce qui indiquera que ton
post a bien trouvé une réponse... Or, il n'y a que toi, le posteur, qui
puisse valider une réponse!



Enjoy
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pointbin Messages postés 71 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 13 mai 2010
16 juin 2005 à 02:22
Mais je doit l'essayer avant de cliquer sur reponce accepter.


Workbooks(sh).Save me retourne une erreur "type incompatible"


j'ai mis sh qui est un spreadsheet et j'ai ecris ça


Workbooks(sh.Sheets).SaveCopyAs "c:\tmp.xls"


mais une erreur survient : " type incompatible"

je ne sais pas si j'ai fait une erreur dans le nom, j'ai pas compris la difference entre nom_du_classeur et nom_de_la_feuille car le nom de la feuille dans le sh est feuille1 et quand je le met il m'indique qu'il ya une variable non definit.
de meme pour ça :

Workbooks(sh).SaveAs "C:\tmp.xls", 33, "", False, False, False, xlNoChange, False, False, , False, False

la meme erreur et quand je ne met pas de parametre aussi (Workbooks(sh).SaveAs "C:\tmp.xls")

et quand j'utilise worksheet une autre erreur survient : la methode 'worksheet' de l'objet '_Global' a échoué.

savez vous la solution pour ça ? ou si j'ai fait une erreur!
Merci
0
pointbin Messages postés 71 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 13 mai 2010
16 juin 2005 à 02:32
et pour sheets.SaveAs n'exixte pas mais il y Sheets.PrintOut mais elle me fait aussi une erreur : la methodela methode 'worksheet' de l'objet '_Global' a échoué 'worksheet' de l'objet '_Global' a échoué.

aider moi a resoudre ce probleme.

Merci
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
16 juin 2005 à 06:24
Le classeur, c'est ton fichier... c'est un truc qui contient plusieurs feuilles...



Mais tu as aussi "ThisWorkBook" pour faire référence à ton classeur...




ThisWorkBook.SaveAs ... <= fait le teste déjà avec ça!



Sinon, pour enregistrer juste une feuille...



ThisWorkbook.Sheets("Feuil1").SaveAse ...



Comprends-tu ou pas ???
0
pointbin Messages postés 71 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 13 mai 2010
17 juin 2005 à 00:44
ThisWorkbook.Sheets("Feuil1").SaveAs ; n'existe pas


et pour ThisWorkbook.SaveAs "C:\tmp.xls" c'est le meme probleme :la methodela methode 'worksheet' de l'objet '_Global' a échoué

le truc qui continet plusieur feuille je lui ai donné le nom de 'sh' et ce sh contient une seule feuille qui s'appelle 'feuille1'.


j'ai fait tous les possibilites mais sans resultat toujours il ya un probleme.


j'ai un form que j'ai nomme fiche1 et spreadsheet que j'ai nomme sh et ce sh contient une feuille qui s'appelle 'feuille1'.


j'ai essaye tous ce que vous m'avez dit mais cet erreur ne me lache pas.


si vous pouvez l'esseyer chez vous pour savoir si c'est de mon systeme le probleme ou pas, si vous pouvez bien sure.


Merci beacoup pour votre soutient.
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
17 juin 2005 à 04:54
Alors, déjà, ce truc, comme je te l'ai dit, s'appelle un "CLASSEUR" !!! Grave-le bien dans ta mémoire... parce que ça peut toujours servir pour bien se comprendre!!!

Ensuite, tu ne peut pas lui donner un nom!!! Au pire, tu peux
l'enregistrer sous un fichier qui lui a un nom, mais un classeur n'a
pas à proprement parlé un nom (si ce n'est, donc, celui de son
fichier!).



Et je dirais ensuite que, si tu n'as rien changé, ta feuille ne s'appelle pas "Feuille1" mais "Feuil1" ce qui n'est absolument pas pareil!!! Faut être précis dans la syntaxe!!!



Chez moi :
ThisWorkbook.SaveAs "C:\Tmp.xls" fonctionne très bien!!!



D'où ma question : Où l'as-tu placé ???

C'est à dire, dans quelle procédure (évenementielle ou pas ???) et de quel module (celui de la feuille, celui du classeur [ThisWorkbook] ou un que tu as créé) ???



Ensuite, il me vient à l'esprit de te demander sous quelle version de
Excel (et donc, du VBA) tu travailles ??? Théoriquement ça ne devrait
avoir aucun rapport car Save (et donc, SaveAs) existe depuis la nuit
des temps, mais bon, on ne sait jamais avec ce foutu VBA !!! ;-)

Parce que, même si je ne suis pas un spécialiste du VBA, je ne connais pas "spreadsheet"
(c'est quoi ça ???) !!! Je te soupçone donc d'utiliser une version
supérieur à ma bonne vieille 2000 auquel cas, je ne pourais peut-être
pas t'aider !!!



Sinon, pour répondre à une de tes questions, sache que le nom que tu
mets entre les parenthèses doit être, un index valide, une string
valide, ou une référence valide (variable objet par exemple). Du coup :

Worksheets(sh)... ne fonctionnera pas alors que Worksheets("sh")
fonctionnera (pour peu que ta feuille s'appelle ainsi!!!). Mais tu peux
aussi mettre l'index de la feuille ou du classeur à la place de leurs
noms. Ceci dit, comme elles sont dynamique et qu'elles peuvent donc
changer de place et donc d'index, il peut être hasardeux d'utiliser
cette manière !


Et c'est la même chose pour Workbook.

Ceci explique peut-être le message d'erreur "Type incompatible" que tu as eu !!!



De plus, je te fait remarquer que ce n'est pas "Worksheet" mais "Worksheets
" le mot clef (collection) pour faire référence aux feuilles (à une feuille) !!! Ceci explique certainement ton problème de "_Global"
... Une fois de plus, je me dois de te faire remarquer qu'en
programmation on se doit d'être absolument rigouroux dans la syntaxe!!!
[Astuce, tape le début d'un mot puis utilise CTRL+Espace pour activer
l'assistant puis TAB pour compléter... C'est pratique, on va plus vite
et on évite la plupart de ces erreurs de syntaxe qui nous pourrissent
la vie ;-]



J'aimerais aussi te faire remarquer que les arguments de la méthode
SaveAs sont facultatifs... Du coup, tu peux parfaitement remplacer tous
tes "... False, False, False ..." par des "... , , , , ..." afin de ne mettre que ton "... , , , , xlNoChange"
(les argument suivant étant eux-aussi facultatifs, inutile de mettre
aussi des virgules ou les valeurs par défaut [qui sont, comme leur nom
l'indique, mise par défaut par Excel!!!]).



De plus, je te conseillerais vivement d'utiliser une des constantes
prédéfinies plutôt que des valeurs lorsque cela est possible comme pour
le format du fichier à enregistrer "33". Pour ce dernier, tant
qu'a le déclarer (et donc, ne pas utiliser le paramétrage par défaut
qui suffit), je te conseille d'utiliser plutôt la constante "clWorkbookNormal" (si telle est bien ton intention!!!).



Mais si tu nous mettais ton code, ce serait plus facile pour nous de voir d'où pourrait bien venir ton problème!!!



Sinon, as-tu regardé d'un peu plus près ton Aide VBA (en appuyant sur la touche "F1") ???



Tient nous au courant...



Enjoy
0
pointbin Messages postés 71 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 13 mai 2010
17 juin 2005 à 22:55
Merci beaucoup [auteurdetail.aspx?ID=46796 ScSami]




pour le SpreadSheet ( c'est ceci le truc, j'ai dis truc car je ne
savias pas son nom) mais vous me dites qu'il s'appelle un classeur.

je m'explique:



j'ai Office 2003 et sous vb j'ai a jouter la reference a Microsoft Office Web Components Functions.



et apres j'ai trouver de nouveau composant ajouter et dans c'set
dernier il y a ce SpreadSheet qui contient un classeur exel et ce
classeur contient une feuille qui s'appelle par defaut "feuille1" (j'ai
vus son non dans la proprieté du SpreadSheet -que j'ai appele sh- et je
peut changer de la le nom de la feuille)

et pour la syntaxe je suis sure 100% que j'ecris les noms
correcte car j'utilise la façon que vous avez dis (Ctrl+espace ......).

j'ai un form qhi s'appelle fiche1 dans lequel il y a le sh (spreadsheet
qui contient la feuille) et un bouton "cmd_imp" pour imprimer

voici le code que j'ai ecris pour remplir la feuille exel :





Private Sub Form_Load()

fiche1.sh.ActiveSheet.Unprotect


fiche1.sh.Range("E6").Value = mrec.Fields(2) 'Nom


fiche1.sh.Range("E7").Value = mrec.Fields(3) 'Prénom






fiche1.sh.Range("E8").Value = mrec.Fields(6) 'Adresse


fiche1.sh.Range("E9").Value = mrec.Fields(7) 'Grade


fiche1.sh.Range("E5").Value = mrec.Fields(6) 'N° Cnss




'extraire les taux


Set mrec3 = mysql.query("select * FROM `taux variable`")


fiche1.sh.Range("J12").Value = mrec3.Fields(0) 'Prix heure 'normale


fiche1.sh.Range("J18").Value = mrec3.Fields(0) 'Prix heure 'normale


fiche1.sh.Range("M20").Value = mrec3.Fields(3) 'Prix heure 'Supp


fiche1.sh.Range("N36").Value = mrec3.Fields(2) 'Cnss(%)


fiche1.sh.Range("S23").Value = mrec3.Fields(1) 'Primes






Set mrec2 = mysql.query(" select * from `fiche de paie` where `Date
paie` '" & DateAffiche & "' and `Code`" & TxtCode.Text
& "")




fiche1.sh.Range("Q2").Value = Mois.vald.Text & "- " & Mois.TxtAnnee 'Mois


Nbre = CInt(mrec2.Fields(2)) + CInt(mrec2.Fields(3))


fiche1.sh.Range("F18").Value = mrec2.Fields(2) 'Nbre heure 'normale


fiche1.sh.Range("F20").Value = mrec2.Fields(3) 'Nbre d'heure 'Supp


'fiche1.sh.Range("S18").Value = mrec2.Fields(4) 'Salaire de 'base




fiche1.sh.Range("S25").Value = mrec2.Fields(5) 'Indemnites


fiche1.sh.Range("S28").Value = mrec2.Fields(6) 'Salaire bruts


fiche1.sh.Range("S32").Value = mrec2.Fields(6) 'Salaire bruts


fiche1.sh.Range("N37").Value = mrec2.Fields(7) 'IRPP


fiche1.sh.Range("T37").Value = mrec2.Fields(7) 'IRPP


fiche1.sh.Range("N38").Value = mrec2.Fields(8) 'Opposition


fiche1.sh.Range("T38").Value = mrec2.Fields(8) 'Opposition


fiche1.sh.Range("N39").Value = mrec2.Fields(9) 'Accompte


fiche1.sh.Range("S39").Value = mrec2.Fields(9) 'Accompte


fiche1.sh.Range("I47").Value = Nbre 'Nbre heure total


fiche1.sh.Range("S53").Value = Date 'Date systeme




fiche1.sh.ActiveSheet.Protect , , , , False, False, False, False, False, False, False, False, False, False, False, False


fiche1.Show









End Sub





Private Sub cmd_imp_Click()

'ThisWorkbook.Sheets.PrintOut

ThisWorkbook.SaveAs "C:\Tmp.xls"

'Worksheets("Feuille1").SaveAs "C:\Tmp.xls"

'Worksheets("sh.ActiveWorkbook.ActiveSheet").SaveAs "C:\Tmp.xls"

'Worksheets("Feuil1").SaveAs "C:\Tmp.xls"


End Sub


mais c'est toujour la meme erreur la methodela methode 'worksheets' de l'objet '_Global' a échoué

Avez vous une idee pour imprimer cette
feuille, j'ai voulu imprimer mais j'ai pas trouver alors j'ai voulu la
sauvegarder sur le disque puis l'imprimer avec une API a partir de vb.



vraiment j'ai tout essaye pour le sauvegarder mais sans resultat.

est ce que ça peut etre a cause d' office 2000?



en faite qu'est ce que ça veut VBA ?(ce que je sais c'est les fonctions
qui permettent de travailler avec office sous vb , est ce vrais?)

Merci beaucoup.
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
18 juin 2005 à 03:35
Ok ok... je commence à mieux comprendre ton problème...
même si je ne suis pas certain de pouvoir te donner la vrai solution
car, comme je te l'ai dit, je n'ai que la version 2000 et je ne peux
donc pas être certain que mes tests s'avèreront viables pour ta version
2003... Autrement dit, je peux pas tester!



Mais je crois qu'il faut faire ceci :



Private Sub cmd_imp_Click()

fiche1.sh.ActiveSheet
.PrintOut

'et/ou




'Pour le classeur


fiche1.sh
.SaveAs "C:\Tmp.xls"

'ou, pour la feuille

fiche1.sh.ActiveSheet
.SaveAs "C:\Tmp.xls"



End Sub



Tout simplement!!!

Fait donc le test et dis moi...



Sinon, VBA => Visual Basic (BASIC étant aussi un acromyne... cf. le dico de VBF [VB-France !!!]
) for Application(s?).

Autrement dit, en effet, le VB pour les applications... de la suite (de
logiciels) Office de crosoft... Autrement dit, c'est un langage de
script plus qu'un langage de prog car il est "interprêté" et non pas
"compilé"...



Mais en réalité, la barrière entre le VB classique et le VBA est très fine... En fait, à part le coté de l'exécution (interprêtation ou compilation
), la principale différence, outre son utilité (en
effet, le VBA ne peut s'exécuter comme comme Macro au seins d'un
fichier d'un des softs compatible de la suite Office afin de manipuler
ce dernier... et non comme programme indépendant!
) sont les objets que tu peux manipuler (qui sont donc déstinés à manipuler soit le fichier, soit l'interface du soft
)...



Tout ce qui peut être fait en VBA peut théoriquement l'être fait
également avec le VB normal... Autrement dit, le VBA n'est qu'une
version limité du VB et orientée pour une utilisation très spécifique
(le scripting... l'ajout de fonctionnalités à un document balisé...).



Note cependant qu'il n'y a pas que le VBA pour coder des macros sous Office...



Bon, je sais pas si j'ai été super clair sur ce coup!!! Au pire,
reporte toi aux différentes rubriques de VBF et à l'aide du VBA pour
plus d'infos...



Tient moi au courant pour ce problème décidément percistant!



Enjoy
0
pointbin Messages postés 71 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 13 mai 2010
19 juin 2005 à 08:48
fiche1.sh.ActiveSheet
.PrintOut : n'existe pas maleheureusement



de meme pour :

fiche1.sh
.SaveAs "C:\Tmp.xls"

et

fiche1.sh.ActiveSheet
.SaveAs "C:\Tmp.xls"



donc, je peut conclure que les nouvelles version de Office sont destiné
a mieux compliquer les choses et non a les améliorés puisque ça marche
sous office 2000.



et pour votre explication pour le VBA, elle est bien claire.



Merci pour tous.
0
pointbin Messages postés 71 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 13 mai 2010
19 juin 2005 à 10:35
Voici un lien trés interessent :

http://www.excelabo.net/xl/imprimer.php



j'espere trouver une solution ici.
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
19 juin 2005 à 21:41
Je connaissais déjà ce site... mais merci quand même pour le lien...



Bon, ben je suis vraiment désolé de n'avoir pas pu t'aider plus et mieux...



La prochaine fois peut-être



Enjoy
0
Rejoignez-nous