VBA pour Lancement et fermeture (auto-save)

BowserKar

XLDnaute Nouveau
Je commence dans le codage VBa mais tranquillement j'apprend les bases (comme la plupart qui écrivent sur le forum probablement).

Je vous explique mon problème. J'ai créé une feuille de soumission qui ajoute 1 (+1) à la cellule F11 (qui est le numéro de la facture) à chaque fois que j'ouvre le fichier "Soumissions.xls". À la fermeture du fichier, si les cases sont vides, donc qu'aucune soumission est en cours, un macro enlève 1 à la cellule F11 (pour qu'à l'ouverture le numéro de soumission se suit au lieu d'augmenter même si la dernière fois que le fichier a été ouvert aucune soumission n'a été écrite).

Si à la fermeture les cases ne sont pas vide, une sauvegarde se fait sous le nom "Soumission #"cellule F11" & "le nom de la personne dans la cellule B14" & "la date d'Aujourd'hui".xls". Ensuite, toujours dans la fermeture, les cellules qui doivent être vides se font effacer avec ClearContents (sans effacer le numéro en F11) et finalement une sauvegarde est fait du fichier en "Soumissions.xls" pour avoir le modèle de base avec le nouveau numéro de soumission.

Jusque là tout marche comme sur des roulettes. Le problème est que si j'ouvre une ancienne soumission, en la fermant ça refait les macros de "si les cases ne sont pas vide" donc en bout de ligne, si j'étais rendu à la soumission #60 mais que j'ouvre la 34, en réouvrant le modèle de base je me retrouve à 35 au lieu de 61.

Bref, est-ce que c'est possible de dire au fichier "Si à ton ouverture, le worksheet est "Soumissions.xls", agis normalement, sinon, cancel le macro de sorti." ou une autre manière qui me permettrait de ne pas sauvegarder le modèle "Soumissions.xls" en sortant si la feuille est remplie tout en pouvant faire continuer le numérotage des soumissions la prochaine fois que j'ouvre le fichier.

Je vous copie mon code du "ThisWorkbook" :

Option Explicit
Private Sub Workbook_Open()
If ThisWorkbook.Name = "Soumissions.xls" Then
Range("F11").Value = Range("F11").Value + 1
End If
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Range("B14,B15,B16,B17,B18,B19,B20,B21") = Empty Then
Range("F11").Value = Range("F11").Value - 1
SaveOri --> (C'est mon macro qui enregistre par dessus le modèle de base de Soumission.xls)
ThisWorkbook.Saved = True
Else
SaveAsA1 --> (Le macro qui enregistre-sous la feuille sous un autre nom)
Application.ScreenUpdating = False
reset --> (Le macro qui efface les données pour avoir un modèle vierge tout en gardant la case F11)
SaveOri
End If
End Sub

MERCI! :)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA pour Lancement et fermeture (auto-save)

Bonjour BowserKar et bienvenu, bonjour le forum,

Peut-être comme ça :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Name <> "Soumissions.xls" Then Exit Sub
If Range("B14,B15,B16,B17,B18,B19,B20,B21") = Empty Then
Range("F11").Value = Range("F11").Value - 1
SaveOri '--> (C'est mon macro qui enregistre par dessus le modèle de base de Soumission.xls)
ThisWorkbook.Saved = True
Else
SaveAsA1 '--> (Le macro qui enregistre-sous la feuille sous un autre nom)
Application.ScreenUpdating = False
Reset '--> (Le macro qui efface les données pour avoir un modèle vierge tout en gardant la case F11)
SaveOri
End If
End Sub
 

BowserKar

XLDnaute Nouveau
Re : VBA pour Lancement et fermeture (auto-save)

Bonjour et merci de bien vouloir m'aider. J'allais écrire que si je comprend bien la ligne, que ca ne marcherait pas mais j'Ai testé avant de parler et ça semble fonctionner!

Merci beaucoup et je reviendrai sur le forum! Très efficace ;)
 

BowserKar

XLDnaute Nouveau
Re : VBA pour Lancement et fermeture (auto-save)

Problème! Ça avait l'air de marcher mais une fois le fichier excel chez le client, le problème persiste, quand j'ouvre une ancienne soumission, que je la ferme et que je réouvre le modèle de base, le numéro de la soumission est celui après l'ancienne soumission ouverte au lieu de suivre celle de la dernière soumission enregistrée. :(
 

Discussions similaires

Réponses
6
Affichages
306
Réponses
1
Affichages
168
Réponses
0
Affichages
153

Statistiques des forums

Discussions
312 224
Messages
2 086 410
Membres
103 201
dernier inscrit
centrale vet