| Bonsoir flobat,
Bizarre, ton truc. Peut-être testes-tu ta macro sans faire de modif dans ton classeur avant de le fermer ? Auquel cas, le classeur se ferme sans sauver quoi que ce soit.
Utiliser BeforeSave n'est pas forcément judicieux : si tu enregistres de temps à autre ton travail en cours, tu vas à chaque fois incrémenter ton compteur. A toi de voir. Mais BeforeClose est peut-être plus adapté (tout dépend de ton contexte). Répondre à Armojax | 3 flobat, le 10 oct 2005 à 11:29:41Bonjour Armojax
et merci pour ta réponse. Mon classeur est toujours modifié lorsque je l'enregistre, et il passe à l'ancien numéro + 1.
Utiliser la formule BeforeClose te paraît plus judicieux, mais plus laborieuse pour moi parce que mon but est de laisser mon document ouvert la journée et de l'enregistrer à chaque modification.
Par contre, je ne comprend toujours pas pourquoi le numéro revient à 1 lorsque j'éteins l'ordinateur et que je le rallume le lendemain.
Merci et A+ Répondre à flobat |
| 10 flobat, le 19 oct 2005 à 22:44:43Bonsoir Armojax,
Je crois que je t'ai répondu un peu trop vite en te disant que la macro BeforeClose ne me convenait pas. Finalement, je voudrais l'essayer, mais j'ai un problème.
Je ne connais pas trop les macros, et, en remplaçant Save par Close, la macro n'est pas acceptée.
Peux-tu m'aider et me donner la formule ?
Merci. Répondre à flobat | Hello flobat,
Excuse-moi, je vois seulement maintenant ton message.
Pour activer Before_Close :
- Va dans VBA
- Dans l'Explorateur de Projets, double-clique sur ThisWorkbook La partie droite qui s'affiche est surmontée de deux boites à listes : Général et Déclarations
- Dans Général, clique sur Workbook, puis...
- Dans Déclarations clique sur Before_Close
Et là tu mets le contenu de ta macro. Répondre à Armojax |
| 12 flobat, le 20 oct 2005 à 22:03:09Bonsoir Armojax,
Je te remercie pour ton aide, j'ai trouvé la macro BeforeClose et je l'ai testée. Elle fonctionne très bien avec Fichier Enregistrer, mais lorsque j'utilise Fichier Enregistrer Sous, mon numéro s'incrémente après fermeture du fichier, mais pas à la réouverture de mon modèle. Je comprend la procédure puisque le modèle lui-même n'est pas enregistré (je lui donne un autre nom).
Peut-être existe-t-il une autre macro qui puisse me permettre d'utiliser Fichier Enregistrer Sous tout en incrémentant mes numéros ?
Merci de me donner ton avis. Répondre à flobat |
| Hello flobat,
Le plus simple (?) me semble de stocker à part le numéro de facture.
Dans l'exemple ci-dessous, j'utilise un petit classeur IncrémentFacture dans lequel je stocke, à la fermeture du classeur, le numéro de facture incrémenté.
Ensuite, à l'ouverture, on va y chercher le numéro en question.
De cette façon, quel que soit le fichier qu'on ouvre (le modèle ou bien un enregistrement sous...), on obtient toujours le bon numéro.
Le code n'est pas condensé. On peut simplifier en donnant des noms, etc.
Si quelqu'un a mieux, je suis preneur. Private Sub Workbook_Open()
Application.ScreenUpdating = False
Dim CeClasseur As Workbook
Dim SaveNofact As Workbook
Workbooks.Open Filename:="D:\Forums_CCM\IncrémentFacture.xls"
Set SaveNofact = ActiveWorkbook
Set CeClasseur = ThisWorkbook
CeClasseur.Sheets("Feuil1").Cells(1, 1).Value = SaveNofact.Sheets("Feuil1").Cells(1, 1).Value
SaveNofact.Close
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.ScreenUpdating = False
Dim CeClasseur As Workbook
Dim SaveNofact As Workbook
Workbooks.Open Filename:="D:\Forums_CCM\IncrémentFacture.xls"
Set SaveNofact = ActiveWorkbook
Set CeClasseur = ThisWorkbook
CeClasseur.Sheets("Feuil1").Cells(1, 1).Value = CeClasseur.Sheets("Feuil1").Cells(1, 1).Value + 1
SaveNofact.Sheets("Feuil1").Cells(1, 1).Value = CeClasseur.Sheets("Feuil1").Cells(1, 1).Value
SaveNofact.Close True
Application.ScreenUpdating = True
End Sub
Répondre à Armojax | 14 flobat, le 23 oct 2005 à 21:08:28Bonsoir Armojax,
Excuse-moi pour ma réponse tardive, je n'étais pas disponible ce week-end.
Merci pour ta solution. Je n'ai pas tout compris, ç'est un peu compliqué pour moi.
J'ai quand même fait un essai. J'ai créé un fichier IncrementFacture, mais lorsque je le nomme dans la macro (Filename), j'ai un message d'erreur : fichier introuvable.
Que faut-il faire ?
J'ai noté dans Filename : C:\Documents and Settings\Famille\IncrementFacture.xls
Merci encore pour ton aide.
A+ Répondre à flobat |
| Bonjour flobat,
Effectivement, j'ai donné le fonctionnement en vitesse de croisière, mais pas la façon d'initialiser le système !
Il faut que tu te crées un petit classeur "IncrémentFacture.xls", qui contiendra seulement (en cellule A1 de la feuille Feuil1, si on ne veut pas modifier la macro), le numéro de facture que tu veux avoir lors de la prochaine ouverture de ton travail.
Il y a 2 macros : la première sauvegarde dans IncrémentFacture le numéro de facture à chaque fois q'on fait un Enregistrer ou un Enregistrer sous... La seconde va y chercher la numéro de facture lors de chaque ouverture.
Bonne semaine.
Ajx. Répondre à Armojax | 16 flobat, le 25 oct 2005 à 20:19:26Salut Armojax,
Mille merci pour ton aide, ça fonctionne.
C'est un peu long et fastidieux, mais le plus important est le résultat. Je n'ai encore pas tout compris le sens exact des mots, mais j'essaie petit à petit.
Où trouve-tu toutes ces macros ? Y'a t-il un site spécial ?
A+ Répondre à flobat | Salut flobat,
Bon, hébé tant mieux si ça fait ce que tu veux.
En général, on écrit soi-même les macros dont on a besoin. Il est rare de trouver pile poil la macro qui va correspondre au problème du moment, et il y a du plaisir à se fabriquer ses propres outils.
Pour Excel, Word, Access... VBA est pratique, parce que directement intégré. Pour apprendre, tous les moyens sont bons : commencer par l'enregistreur de macros, trouver un bon bouquin ou quelqu'un qui sait, et fouiller dans des sites nombreux sur le sujet. En voici quelques uns trouvés avec Google :
http://www.commentcamarche.net/faq/sujet-631-%5BVisual-Basic%5D-Liens-utiles
http://www.excelabo.net/
http://xcell05.free.fr/
http://ericrenaud.free.fr/
http://vlohr.free.fr/veriti/index.php
http://vb.developpez.com/
En dehors de Microsoft Office, il vaut mieux utiliser un autre langage que VB, qui n'est plus franchement d'actualité (php, delphi...). Répondre à Armojax |
| 18 flobat, le 27 oct 2005 à 22:58:13Salut Armojax,
Merci pour tes conseils, j'irais visiter les sites que tu m'as recommandés dès que j'aurais un peu de temps libre.
En tout cas, c'est très interessant et j'ai déjà appris beaucoup en communicant avec toi.
A+ lorsque j'aurais un autre problème de macros. Répondre à flobat |
|
|
|
|
|