Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Deux boîtes de dial identiques !

Z

ZAREK

Guest
Bonjour tout le monde,

Petit problème de boîte de dialogue.

EXPOSÉ:
J'ouvre une nouvelle feuille de calcul à partir d'un Modèle et je saisi les données. J'ouvre la boîte de dial. "Enregistrer sous" qui s'ouvre après celle qui me demande si je veux 'créer un nouvel enregistrement' ou 'continuer sans mise à jour' (afin d'exporter les données vers la base de données).
"Enregistrer sous" s'ouvre directement à l'"endroit" désiré par le code suivant:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim chemin As String
chemin = "c:\documents and settings\..."
ChDir chemin
Dim enregistrersous As Dialog
Set enregistrersous = Application.Dialogs(xlDialogSaveAs)
enregistrersous.Show
End Sub

Je saisi le nom du fichier à enregistrer et j'"Enregistre".
LÀ, une seconde boîte de dial. "Enregistrer sous" identique à la précédente s'ouvre et me propose d'enregistrer (à nouveau) mon fichier alors qu'il l'est déjà !?... Evidemment, si j'"Enregistre", il me signale que le fichier est déjà enregistré et me demande si je veux le remplacer ! J'"Annule" donc, la boîte se ferme et je peux fermer ma feuille (par la croix)...

QUESTIONS:
1/Est-il possible (si oui, comment faire) de supprimer l'apparition de cette 2ème boîte "Enregistrer sous" et que le fichier (la feuille) se ferme après l'enregistrement à l'aide de la 1ère boîte ??
2/Est-il possible (si oui, comment faire) d'incrémenter le nom du fichier (grisé) automatiquement par rapport au dernier fichier déjà enregistré ??
exemple: "Enregistrer sous" affiche les fichiers enregistrés précédemment
'fichier1'
'fichier2'
'fichier3'
et propose comme Nom du fichier: 'fichier' (grisé).
Le Nom du fichier que proposerait la boîte de dial. serait alors: 'fichier4'.

Merci à celui ou celle qui se penchera sur ce post (pas trop près, mauvais pour les yeux !...)

A vous lire avec plaisir,

Philippe
 
R

Robert

Guest
Salut Zarek (philippe), salut le forum,

Vite fait, sans avoir vérifié et donc peut-être une énorme bétise... Mais je pense que le code devrait plutôt être placé dans l'événement [BeforClose de ThisWorkbook que dans l'événement "BeforeSave".

Pour le reste je pense que c'est faisable mais là je n'ai pas le temps... Si plus tard dans la soirée je vois que tu n'à pas de réponse, j'essaierai de te trouver une soluce.

À plus,

Robert
 
Z

ZAREK

Guest
Salut Bob,

Merci de me répondre aussi rapidemment.
Pour le placement du code dans BeforeClose au lieu BeforeSave, j'ai essayé mais alors le processus d'enregistrement des données dans la base de données ne se fait plus ! Je suppose que le code "écrase" la fonction d'enregistrement des données dépendant de l'assistant modèle avec suivi...

Merci quand même et peut-être à ce soir,

Phil
 
R

Robert

Guest
Re Zarek, bonsoir le forum

Pour revenir à ton premier problème je reste persuadé que la solution est dans BeforeClose mais je n'ai pas toutes les données en mains pour pouvoir aboutir... Pour ton second problème je te propose d'adapter et d'insérer le code ci-dessous dans ton propre code.

la macro qui suit recherche dans un dossier déterminé le nombre de classeurs Excel dont le nom commence par Fichier. Si il n'y en a aucun elle enregistre sous le classeur : Fichier0001.xls. S'il y en a au moins un, elle enregistre en incrémentant, Fichier0002.xls, Fichier0003.xls, ..., Fichier0015.xls, etc...

Public Sub fichincr() 'macro
chemin = ThisWorkbook.Path & "\" 'définit la variable chemin (adapte à ton cas)
nom = "Fichier" 'définit la variable nom (adapte à ton cas)
Set fs = Application.FileSearch 'définie la variable fs
With fs
.LookIn = chemin 'dossier de recherche (chem)
.Filename = nom & "*.xls"
If .Execute = 0 Then
ActiveWorkbook.SaveAs (chemin & nom & "0001")
Else
num = Format(.FoundFiles.Count + 1, "0000")
ActiveWorkbook.SaveAs (chemin & nom & num)
End If
End With
End Sub

À plus,

Robert
 
Z

ZAREK

Guest
'Soir Robert, 'soir le Forum,

Voilà Robert, content de te relire. J'ai essayé ton code pour "fichincr()"...
Marche pas. Je l'ai placé juste après le "End Sub" du code que j'ai envoyé dans mon premier post, j'ai adapté les variables 'chemin' et 'nom', mais je me demande s'il n'y aurait pas une erreur dans:
.Filename = nom & "*.xls" (pour le *)
si tu me permet l'audace de reprendre un pro !
et est-ce bien à l'emplacement cité plus haut que je dois copier ton code ?

Pour ce qui est du 1er problème, impossible d'envoyer un exemple de Modèle avec suivi des données, les adressages ne suivraient pas...

Ainsi, si tu as encore quelques minutes à me consacrer, ça me ferait plaisir d'avoir ton avis éclairé.

A plus,

Phil
 
R

Robert

Guest
Re Phil, bonsoir le forum,

La macro telle que je te l'ai envoyée fonctionne car je l'ai testée. Maintenant si tu me dis que tu l'as placée après le End Sub c'est normal qu'elle ne soit pas prise en compte. Il faut que tu copies les lignes entre Public Sub fichincr() 'macro et End Sub et que tu les copient avant ton End Sub.
Quant à .Filename = nom "*.xls" cela veut dire que la recherche concerne tous le fichiers commençant par nom. Donc si tu as défini nom comme "toto" par exemple. "toto0001.xls", "toto0002.xls", "toto va à la pêche.xls" tous seront comptabilisés. Et pour terminer, je te rassure je ne suis pas un pro mais simplement un passionné...

À plus,

Robert
 
Z

ZAREK

Guest
Bonjour Robert et le Forum,

Je pense que je n'ai pas d'allure... ou pas de chance ! Rien ne fonctionne !
J'ai essayé tellement de possibilités pour faire "tourner" ce code que j'en devient gaga !... Je l'abandonne quelque temps dans mes archives avant de m'énerver plus qu'il n'en faut. Je le reprendrai plus tard, lorsque j'aurai plus d'expérience en VBA.
Ne sois pas déçu de n'avoir pas pu m'aider efficacement Robert, je suis certain que d'autres ont pu profiter avec succès de nos posts, ta patience avec moi en est récompensée!

Merci beaucoup et au plaisir de te relire en parcourant le Forum,

Philippe
 

Discussions similaires

Réponses
9
Affichages
323
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…