SaveAs+Textbox

cs_Sept Messages postés 6 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 30 octobre 2003 - 3 juil. 2003 à 15:52
cs_Sept Messages postés 6 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 30 octobre 2003 - 5 juil. 2003 à 20:31
Mes cheveux vous en seraient très reconnaissant, car bientôt je n'en n'aurai plus à force de me les arracher, voici mon problème :

J'ai créer un "Bouton Enregitrer" :

Private Sub BoutonEnregistre_Click()
Load FenêtreEnregistre
If FenêtreEnregistre.TexteEnregistrement = "" Then
NomFichierDéfault = "CP " & Format(Date, "yy-mm-dd") & "-0" & Range("I3")
FenêtreEnregistre.TexteEnregistrement = NomFichierDéfault
End If
FenêtreEnregistre.Show
End Sub

Et un UserForm (FenêtreEnregistre) avec un textbox dans lequel un nom par défaut s'affiche,
mais que l'on peut changer :

Private Sub FenêtreEnregistre_Initialize()
Load FenêtreEnregistre
End Sub
----------------------------------------------------------------------
Private Sub BoutonOK_Click()
CheminFichier = "C:\Consignes Permanentes\Archives CP"
NomFichier = FenêtreEnregistre.TexteEnregistrement & ".xls"
CheminEtNomFichier = CheminFichier & NomFichier
If Len(Dir(CheminEtNomFichier)) Then
Reponse = MsgBox(NomFichier & " existe déjà !", 49, "Overwrite ?")
If Reponse = vbOK Then
Kill CheminEtNomFichier
ActiveWorkbook.SaveCopyAs Filename:=CheminEtNomFichier
End If
Else: ActiveWorkbook.SaveCopyAs Filename:=CheminEtNomFichier
End If
Dim Wb As Workbook
Dim ConsignePermanente As String
ConsignePermanente = ActiveWorkbook.Name
For Each Wb In Workbooks
If Wb.Name <> ConsignePermanente Then
Wb.Close savechanges = True
End If
Next Wb
FenêtreEnregistre.Hide
End Sub
----------------------------------------------------------------------
Private Sub BoutonAnnuler_Click()
FenêtreEnregistre.Hide
End Sub

Evènements :
1° Clic : Sauvegarde, ficher inexistant -> Ok !
2° Clic : Sauvegarde, ficher existant -> Ok !
3° Clic : Sauvegarde, ficher existant -> Erreur Automation (Objet déconnecté)?

6 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
4 juil. 2003 à 10:19
salut

deja une petite remarque : CONNAIS TU LES COMMON DIALOGs parce que la tu te casse le ... enfin ce n'est qu'une question et un conseil : jette un oeuil du coté des common dialog : tu n'auras alors plus que 10 lignes à ecrire au maximum

pour ton prb :
For Each Wb In Workbooks
If Wb.Name <> ConsignePermanente Then
Wb.Close savechanges = True
End If
Next Wb

wb.close ferme le workbook donc supprime la référence à activeworkbook (enfin je pense)
si tu ferme le worbook actif : activeworkbook n'existe plus à moins que tu active un autre workbook

si c pas ca pourrais tu me dire ou l'erreur apparait ?

voila

ShareVB
0
cs_Sept Messages postés 6 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 30 octobre 2003
4 juil. 2003 à 17:56
Salut,
Merci pour ta réponse,
J'ai simplifié depuis, mais toujours un pb, j'ai constaté que sous Excel 97 tout marche, mais pas sous 2000, une sugestion?

Private Sub BoutonOK_Click()
CheminFichier = "C:\Consignes Permanentes\Archives CP"
NomFichier = FenêtreEnregistre.TexteEnregistrement & ".xls"
CheminEtNomFichier = CheminFichier & NomFichier
If Len(Dir(CheminEtNomFichier)) <> 0 Then
Reponse = MsgBox(NomFichier & " existe déjà !", 49, "Overwrite ?")
If ActiveWorkbook.Name <> NomFichier And Reponse = vbOK Then
ActiveWorkbook.SaveCopyAs Filename:=CheminEtNomFichier
Else If ActiveWorkbook.Name NomFichier And Reponse vbOK Then
ActiveWorkbook.Save
End If
End If
Else: If Len(Dir(CheminEtNomFichier)) = 0 Then ActiveWorkbook.SaveCopyAs Filename:=CheminEtNomFichier
End If
Unload FenêtreEnregistre
End Sub
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
4 juil. 2003 à 18:15
salut

moi j'ecrirais ca :
Private Sub BoutonOK_Click()
CheminFichier = "C:\Consignes Permanentes\Archives CP"
NomFichier = FenêtreEnregistre.TexteEnregistrement & ".xls"
CheminEtNomFichier = CheminFichier & NomFichier
If Len(Dir(CheminEtNomFichier)) Then 'c plus rapide sans <> 0
'je comprends pas pourquoi tu mets une question sans vbyesno et puis c mieux de mettre les nom que les valeurs
Reponse = MsgBox(NomFichier & " existe déjà !", vbyesno + vbexclamation, "Overwrite ?")
If (ActiveWorkbook.Name <> NomFichier) And (Reponse = vbyes) Then ' les parentheses pour la clareté
ActiveWorkbook.SaveCopyAs Filename:=CheminEtNomFichierElseIf (ActiveWorkbook.Name NomFichier) And (Reponse vbyes) Then ' elseif permet d'eviter un if then endif dans un else
ActiveWorkbook.Save
End If
Else ' pas besoins d'autre condition si pas <> 0 alors = 0
ActiveWorkbook.SaveCopyAs Filename:=CheminEtNomFichier
End If
Unload FenêtreEnregistre
End Sub

tu as toujours le meme prb ? si oui à quelle ligne ?

voila

ShareVB
0
cs_Sept Messages postés 6 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 30 octobre 2003
5 juil. 2003 à 13:51
Salut,
encore le pénible...
Après avoir remplacer ma procédure, comme d'hab :

Erreur d'exécution '75'
Objet spécifié introuvable (alors qu'il le trouve 2 fois au début!)

Le débogage me renvoie sur "Load FenêtreEnregistre", de feuil1 :

Private Sub BoutonEnregistre_Click()
Load FenêtreEnregistre
If FenêtreEnregistre.TexteEnregistrement = "" Then
NomFichierDéfault = "CP " & Format(Date, "yy-mm-dd") & "-0" & Range("I3")
FenêtreEnregistre.TexteEnregistrement = NomFichierDéfault
End If
FenêtreEnregistre.Show
End Sub

A nouveau une sugestion ?
Merci...
> > > > ----------------------------------------------------------------------
> > > > Private Sub BoutonAnnuler_Click()
> > > > FenêtreEnregistre.Hide
> > > > End Sub
> > > >
> > > > Evènements :
> > > > 1° Clic : Sauvegarde, ficher inexistant -> Ok !
> > > > 2° Clic : Sauvegarde, ficher existant -> Ok !
> > > > 3° Clic : Sauvegarde, ficher existant -> Erreur Automation (Objet déconnecté)?
> > >
> >
>
0

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

Posez votre question
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
5 juil. 2003 à 17:03
salut

je vois pas bien :

faut insister... recompiler... redemarrer vba...

si tu retapes FenêtreEnregistre.Hide quand tu tapes le point normalement une liste déroulante apparait, si elle apparait pas c que le déboggeur est pas content mais pourquoi...

ShareVB
0
cs_Sept Messages postés 6 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 30 octobre 2003
5 juil. 2003 à 20:31
Je vais essayer de trouver qlq'chose....
Merci
0
Rejoignez-nous