Combinaison de macros

ninanani

XLDnaute Occasionnel
J ai deux macros: la premiere pour sauvegarder une feuille seule d un fichier complet. Et la seconde pour qu a chaque nouvelle feuille je puisse inserer un numero de facture qui augmente automatiquement.

Premiere matrice:
Sub Save_Sheet()

Dim strNom As Variant

strNom = Application.GetSaveAsFilename(ActiveSheet.Name, "Invoices (*.xls),*.xls")

If strNom <> False Then
ActiveSheet.Copy
ActiveWorkbook.SaveAs strNom
ActiveWorkbook.Close
End If

End Sub


Deuxieme matrice:

Sub IncrementationFactureNumero()
Dim NumberInvoiceNumber As Integer
Dim RangeInvoiceNumber As Range
Dim StringInvoiceNumber As String

Set RangeInvoiceNumber = Sheets("Invoices").Range("G14")
StringInvoiceNumber = ""
With RangeInvoiceNumber
If .Value = "" Then
.Value = StringInvoiceNumber & " " & Format(0, "0")
End If
End With
NumberInvoiceNumber = Val(Mid(RangeInvoiceNumber, Len(StringInvoiceNumber) + 1))
NumberInvoiceNumber = NumberInvoiceNumber + 1
RangeInvoiceNumber = StringInvoiceNumber & " " & Format(NumberInvoiceNumber, "0000")
End Sub


J aimerais savoir s il etait possible de combiner les deux pour que a chaque sauvegarde, lorsque j ai une nouvelle feuille, le numero augmente automatiquement, car pour le moment c est manuel. Il me faut appliquer la matrice du numero a chaque fois pour augmenter le numero (et j ai peur que l on oublie defois et que cela fausse toutes nos donnees)

Merci a vous!:eek:
 

JNP

XLDnaute Barbatruc
Re : Combinaison de macros

Bonjour Ninanani :),
Un petit bonjour en début de message ne coute rien :eek:.
Peut-être que la procédure
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
End Sub
dans ThisWorkbook pourrait te permettre d'automatiser ta deuxième macro.
Bonne journée :cool:
 

JNP

XLDnaute Barbatruc
Re : Combinaison de macros

Re Ninanani :),
C'est ce qu'on appelle une macro événementielle. Elle va donc être appelée au moment de ta sauvegarde. Tu peux essayer de coller directement ton code dedans, soit
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim NumberInvoiceNumber As Integer
Dim RangeInvoiceNumber As Range
Dim StringInvoiceNumber As String
Set RangeInvoiceNumber = Sheets("Invoices").Range("G14")
StringInvoiceNumber = ""
With RangeInvoiceNumber
If .Value = "" Then
.Value = StringInvoiceNumber & " " & Format(0, "0")
End If
End With
NumberInvoiceNumber = Val(Mid(RangeInvoiceNumber, Len(StringInvoiceNumber) + 1))
NumberInvoiceNumber = NumberInvoiceNumber + 1
RangeInvoiceNumber = StringInvoiceNumber & " " & Format(NumberInvoiceNumber, "0000")
End Sub
Bonne journée :cool:
 

ninanani

XLDnaute Occasionnel
Re : Combinaison de macros

Merci,
Je ne comprends pas pourquoi lorsque je rentre cette nouvelle macro et que je la sauvegarde, lorsque je retourne dans mon fichier, je ne peux pas l appliquer, c est comme si elle n etait pas prise en compte.
 

JNP

XLDnaute Barbatruc
Re : Combinaison de macros

Re :),
Logiquement, c'est quand tu vas lancer ta macro de sauvegarde et qu'il va tomber sur
Code:
ActiveWorkbook.SaveAs strNom
qu'il va exécuter avant de sauvegarder ton code d'incrémentation.
Bonne journée :cool:
 

ninanani

XLDnaute Occasionnel
Re : Combinaison de macros

Re,

Merci pour ton aide, mais j ai toujours un probleme.

J ai donc maintenant deux macros, celle de sauvegarde et celle que tu m a donne.

Lorsque je lance ma sauvegarde, seule la matrice de sauvegarde fonctionne, mais le numero sur la feuille reste inchange.
Peut etre fallait il combiner les deux macros sur une meme, je n ai pas tres bien compris.

Merci encore
 

Statistiques des forums

Discussions
312 843
Messages
2 092 758
Membres
105 526
dernier inscrit
Hiro