URGENT sauvegarde automatique d'un classeur excel

momo pancho Messages postés 29 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 14 juin 2007 - 25 mai 2007 à 16:55
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 25 mai 2007 à 23:58
Bonjour, à toute et à tous

Je souhaite effectuer la sauvegarde par N° de semaine d'un classeur Excel dans un même dossier après une demande de confirmation par oui ou non dans une pop-up.




Mon problème  : Je dois créer un nouveau classeur pour la Save à chaque confirmation par oui,  et celui-ci est vide.


À la demande d'enregistrement si je confirme par NON, on me demande quand même d'enregistrer.


Après l'enregistrement une erreur (1004 définis par l'application ou par l'objet) apparaît dans visual basic.



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




Private Sub Workbook_Open()


MsgBox "Ne pas oublier de sauvegarder dans le dossier save TN !"



 Dim Msg, Style, Title, Help, Ctxt, Response, MyString


Msg = "Souhaitez-vous enregistrer?"    ' Définit le message.


Style = vbYesNo + vbCritical + vbDefaultButton2    ' Définit les boutons.


Title = "pour enregistrer clic sur yes "    ' Définit le titre.


Help = "DEMO.HLP"    ' Définit le fichier d'aide.


Ctxt = 1000    ' Définit le contexte de



                ' la rubrique.


' Affiche le message.


Response = MsgBox(Msg, Style, Title, Help, Ctxt)


If Response = vbYes Then    ' L'utilisateur a choisi Oui.



    MyString = "Oui"    ' Effectue une action.


Else: Reponse = vbNon    ' L'utilisateur a choisi Non.



    MyString = "Non"    ' Effectue une action.


End If


Set NewBook = Workbooks.Add


Do



    fName = Application.GetSaveAsFilename


Loop Until fName <> False


fileSaveName = Application.GetSaveAsFilename( _



    fileFilter:="Text Files (*.txt), *.txt")


If fileSaveName <> False Then



    MsgBox "Save as " & fileSaveName


End If



 




'Sauvegarde la copie


ActiveWorkbook.SaveAs "C:\user\P520267\modif audit\save TN\Semaine TN.xls"


'Ferme le classeur sauvegardé


ActiveWorkbook.Close True



 




End Sub



 




Dans le même classeur je souhaite enregistrer dans un autre onglet le nombre de sélection d'un mot dans le menu déroulant de chaque cellule d'une colonne.


Ma formule =NB.SI('DETAIL DES ANOMALIES TN'!$D$29;"*SECURITE*") Cela fonctionne mai si je sup le mot dans le menu déroulant tous revient à zéro.






APPLICATION

,

AUDIT COMPLET

,

----

08 - AUDIT COMPLET

,

1

,

----

 

,

 

,

----

 

,

 

,

----

 

,

 

,

----

 

,
 


 




Mes connaissances dans ce langage sont très très limité.



 




Merci merci pour votre aide.



 




A+

15 réponses

cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
25 mai 2007 à 18:30
Salut,

Je n'ai pas la réponse exacte, mais je te propose déjà dans un premier temps, une boite de dialogue simplifiée, qui t'évitera toutes les déclarations ci-dessus :

Dim Rep As Boolean


Rep (MsgBox("Souhaitez-vous enregistrer ?", vbQuestion Or vbOKCancel, "Confirmation d'enregistrement") vbOK)


If Not Rep Then
   ' Choix Non
    Exit Sub
End If


' Ici ton traitement si oui


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
0
momo pancho Messages postés 29 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 14 juin 2007
25 mai 2007 à 18:47
Salut Explorer

cela est plus simple mai le resultat est le meme

Merci quand meme

A+momo pancho
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
25 mai 2007 à 18:56
Salut,

C'est quoi exactement ton problème ? C'est une copie de ton fichier : Semaine TN.xls, dans un répertoire définit pat l'utilisateur ?

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
momo pancho Messages postés 29 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 14 juin 2007
25 mai 2007 à 18:58
oui
0

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

Posez votre question
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
25 mai 2007 à 19:02
Salut,

On reprend donc :

Dim Rep As Boolean
Dim SourceFichier As String
Dim DestFichier As String

SourceFichier ="C:\user\P520267\modif audit\save TN\Semaine TN.xls"
DestFichier = "C:\Semaine TN.xls"
Rep (MsgBox("Souhaitez-vous enregistrer ?", vbQuestion Or vbOKCancel, "Confirmation d'enregistrement") vbOK)

If Not Rep Then
   ' Choix Non
    Exit Sub
End If

' Copie le fichier
 FileCopy SourceFichier, DestFichier 

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
momo pancho Messages postés 29 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 14 juin 2007
25 mai 2007 à 19:10
Salut

Maintenant  erreur de compilation
0
momo pancho Messages postés 29 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 14 juin 2007
25 mai 2007 à 19:23
Salut Exploreur

Maintenant cela fonctionne mai toujour rien dans le fichier de destination

A+ momo pancho
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
25 mai 2007 à 19:28
Salut,

Ton fichier source :Semaine TN.xls, contient-il au moins quelque chose à l'intérieur ?
Car si il est vide, c'est sur que ta copie sera vide aussi !

Par contre j'ai un gros doute que tu soit sou VB6!!! Ce n'est pas plutôt VBA ou vb2005 express ?

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
momo pancho Messages postés 29 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 14 juin 2007
25 mai 2007 à 19:40
Salut


 


Mon fichier source contient effectivement des données dans 4 onglets


 


Je suis sou VB 6.38863


 


Je peux t'envoyer mon fichier source si tu veux
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
25 mai 2007 à 20:03
Je pense que c'est VBA car "MsgBox" n'a pas la meme synthaxe en .net (il me semble)
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
25 mai 2007 à 20:04
Je pense que c'est VBA car "MsgBox" n'a pas la meme synthaxe en .net (il me semble)
0
momo pancho Messages postés 29 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 14 juin 2007
25 mai 2007 à 20:05
Je ne sait pas pas d'experience dans ce domaine
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
25 mai 2007 à 20:09
Salut,

Effectivement,c'est MessageBox.....

Mais je doute que notre ami, veuille réellement faire une simple copie de son fichier, car FileCopy, fait un clone de sont fichier, donc il devrait y avoir ses onglets aussi ?!

Il y a un truc qui m'échappe!!

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
momo pancho Messages postés 29 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 14 juin 2007
25 mai 2007 à 20:19
Ne doute pas

Ce que je veux fair cet une sauvegade à la demmande du fichier source toute les deux semaine mai je ne sait pas comment fair.

Merci de votre aide precieuse car je suis novice en la matiere.

A+ momo pancho

 
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
25 mai 2007 à 23:58
Déjà, ici, il y a un problème...
If Response = vbYes Then    ' L'utilisateur a choisi Oui.
    MyString = "Oui"    ' Effectue une action.
Else: Reponse = vbNon     ' L'utilisateur a choisi Non.
    MyString = "Non"    ' Effectue une action.
End If

Donc, si Response = vbNo , tu fermes sans sauvegarde et tu quittes la Sub
ActiveWorkbook.Close False
Exit Sub

Sinon
ActiveWorkbook.Saveas "Le Chemin et le nom"
ActiveWorkbook.Close

Si, avant de sauvegarder, tu veux savoir si le fichier existe
If Dir(Chemin et nom de fichier) <> "" Then ' le fichier existe
Response = MsgBox ("Écraser le fichier existant ?", vbYesNo, "Titre")
If Response = vbNo then Exit sub ' on laisse tomber

MPi
0