double enregistrement avec incrémentation

balu57

XLDnaute Nouveau
salut à toutes et tous,

je viens de trouver sur le forum le code suivant

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="D:\nom du fichier.xls"
ActiveWorkbook.SaveAs Filename:="G:\Dossier\nom du fichier.xls"
Application.DisplayAlerts = True
End Sub

Il me convient parfaitement pour réaliser mon double enregistrement, MAIS...

Est-il possible d'obtenir pour un des deux enregistrements une "incrémentation" afin de conserver les enregistrements précédents.

EXEMPLE:

le fichier: bidouille.xls

devra s'enregistrer en tant que bidouille.xls dans un des dossiers (il évolue avec les modifs)

et en bidouille1.xls, puis bidouille2.xls etc. dans le second dossier.(chaque version enregistrée est conservée)

si quelqu'un a une idée....

Je ne suis que débutant donc soyez super gentils, expliquez!!! merci

Balu57
 

fhoest

XLDnaute Accro
Re : double enregistrement avec incrémentation

Bonsoir,
essaie ceci:
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim inc As Variant
Application.DisplayAlerts = False
' inc = n° de l'incrementation
MsgBox Right(ActiveWorkbook.Name, 2)
'la ligne du dessus peut etre supprimer c'est pour l'exemple
inc = Right(ActiveWorkbook.Name, 2)
If IsNumeric(inc) Then
Else:
inc = Right(ActiveWorkbook.Name, 1)
End If
ActiveWorkbook.SaveAs Filename:="D:\nom du fichier.xls"
ActiveWorkbook.SaveAs Filename:="G:\Dossier\nom du fichier" & inc & ".xls"
Application.DisplayAlerts = True
End Sub
si tu dépasse le chiffre 99 il faut prévoir une condition qui vérifie que tu as passer la première centaine du mem genre que les dizaines.
A+
 
Dernière édition:

balu57

XLDnaute Nouveau
Re : double enregistrement avec incrémentation

voici ton code avec les modifs que je lui ai apporté

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim inc As Variant
Application.DisplayAlerts = False
' inc = n° de l'incrementation
MsgBox Right(ActiveWorkbook.Name, 2)
'la ligne du dessus peut etre supprimer c'est pour l'exemple
inc = Right(ActiveWorkbook.Name, 2)
If IsNumeric(inc) Then
Else:
inc = Right(ActiveWorkbook.Name, 1)
End If
ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\Bureau\Positionnement BacPro\POSITIONNEMENT Version 11_24 élèves_RepCouleurs.xls"
ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\Mes documents\POSITIONNEMENT Version 11_24 élèves_RepCouleurs" & inc & ".xls"
Application.DisplayAlerts = True
End Sub


J'obtiens bien un double enregistrement, mais pas d'incrémentation pour le second.

un premier enregistrement: POSITIONNEMENT Version 11_24 élèves_RepCouleurs.xls

un second enregistrement: POSITIONNEMENT Version 11_24 élèves_RepCouleurss.xls

un "s" s'est ajouté à la fin, puis les nouveaux enregistrements se font sur les mêmes fichiers , alors que j'aimerais que dans le deuxième cas je puisses me retrouver avec
un: POSITIONNEMENT Version 11_24 élèves_RepCouleurs 1.xls
puis: POSITIONNEMENT Version 11_24 élèves_RepCouleurs 2.xls
etc. autant de fois que d'enregistrements.

Désolé, j'ai peut-être loupé quelque chose !!! ou me suis mal exprimé.

Balu57
 

fhoest

XLDnaute Accro
Re : double enregistrement avec incrémentation

oui c'est normal,
soit :enregistre manuellement le premier avec un "1" à la fin ensuite le reste se fera tout seul.
ou remplacer le code par:
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim inc As Variant
Application.DisplayAlerts = False
' inc = n° de l'incrementation
MsgBox Right(ActiveWorkbook.Name, 2)
'la ligne du dessus peut etre supprimer c'est pour l'exemple
inc = Right(ActiveWorkbook.Name, 2)
If IsNumeric(inc) Then
Else:
inc = Right(ActiveWorkbook.Name, 1)
If IsNumeric(inc) Then inc=1
End If
ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\Bureau\Positionnement BacPro\POSITIONNEMENT Version 11_24 élèves_RepCouleurs.xls"
ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\Mes documents\POSITIONNEMENT Version 11_24 élèves_RepCouleurs" & inc & ".xls"
Application.DisplayAlerts = True
End Sub
A bientôt.
 

balu57

XLDnaute Nouveau
Re : double enregistrement avec incrémentation

Merci infiniment pour ta réactivité, comme d'habitude ce Forum est génial et je n'en penses pas moins de ceux qui le font vivre.

En continuant à fouiner j'ai trouvé une solution qui associée à la tienne me convient parfaitement, je te livre le résultat.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim inc As Variant
Application.DisplayAlerts = False
inc = Right(ActiveWorkbook.Name, 2)
If IsNumeric(inc) Then
Else:
inc = Right(ActiveWorkbook.Name, 1)
End If
ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\Bureau\Positionnement BacPro\POSITIONNEMENT Version 11_24 élèves_RepCouleurs"
ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\Mes documents\POSITIONNEMENT Version 11_24 élèves_RepCouleurs" & Format(Date, "d mmmm yyyy") & "_" & Format(Time, "h mm ss")
Application.DisplayAlerts = True
End Sub

Comme ça au lieu de n'avoir que des nombres j'aurais la date et l'heure d'utilisation du fichier.

Encore merci

Balu57
 

balu57

XLDnaute Nouveau
Re : double enregistrement avec incrémentation

je viens de modifier le code en reprenant celui que j'avais trouvé sur le forum.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\Bureau\Positionnement BacPro\POSITIONNEMENT Version 11_24 élèves_RepCouleurs"
ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\Mes documents\POSITIONNEMENT Version 11_24 élèves_RepCouleurs" & Format(Date, "d mmmm yyyy") & "_" & Format(Time, "h mm ss")
Application.DisplayAlerts = True
End Sub

voila, c'est peut être plus élégant comme ça, je ne mélanges pas deux approches différentes.

Ceci dit encore merci fhoest pour ta réactivité, ta solution est déjà envisagée pour une autre appli.

Balu57
 

Statistiques des forums

Discussions
312 684
Messages
2 090 916
Membres
104 697
dernier inscrit
Pierrot Hubert