Bonjour Céline06,
Voici un début de suggestion : Le principe de base, Incrémenter le numéro de facture qui apparaît dans un contrôle d'un
barre d'outils à chaque fois que tu sauvegarde la feuille. Tout ce qui suit a besoin d'être raffiné selon ta méthode de
travail ou celle que tu aimerais implanter ! Attention... dans les deux dernières procédures, j'utilise la "Feuil1" pour
les fins de l'exemple... tu devrais modifier selon ton application.
Sub Combo_No_Facture est une procédure qui affiche dans ton programme, une nouvelle barre d'outil et affiche à
l'intérieur le prochain numéro de facture devant être utilisé.
Prochain_No_Facture = est un procédure permettant de mettre à jour l'information de la nouvelle barre d'outils et
d'afficher le prochain numéro de facture devant être utilisé.
Cependant, lorsque tu fermes ton fichier, tu dois trouver un endroit où sauvegarder l'information du numéro de facture.
Tu pourrais utiliser une cellule de ta feuille inutilisé comme IV65535 .
Tout ceci pour être gérer à partir d'événement situé dans le ThisWorkbook comme :
Ce qui suit dans le ThisWorkbook de ton classeur
'----------------
Private Sub Workbook_Open()
Combo_No_Facture
End Sub
'----------------
'----------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Prochain_No_Facture
End Sub
Dans le module de la feuille :
'----------------
Private Sub Worksheet_Activate()
Combo_No_Facture
End Sub
'----------------
Private Sub Worksheet_Deactivate()
On Error Resume Next
Application.CommandBars("No Facture").Delete
End Sub
'----------------
Ce qui suit dans un module Standard.
'-----------------------------
Sub Combo_No_Facture()
Dim Mbar As CommandBar
Dim Comb As CommandBarComboBox
On Error Resume Next
Application.CommandBars("No Facture").Delete
Set Mbar = Application.CommandBars.Add _
("No Facture", msoBarTop, False, True)
With Mbar
.Position = msoBarFloating
.Left = 750
.Top = 150
.Visible = True
.Protection = msoBarNoChangeVisible + msoBarNoCustomize _
+ msoBarNoMove
Set Comb = .Controls.Add(msoControlComboBox)
With Comb
.Caption = "Suivant : "
.Width = 110
.TooltipText = "Votre prochain No Facture"
If Worksheets("Feuil1").Range("IV65535") = "" Then
Worksheets("Feuil1").Range("IV65535") = 1
.AddItem 1
.ListIndex = 1
Else
.Clear
.AddItem Worksheets("Feuil1").Range("IV65535")
.ListIndex = 1
End If
.Style = msoComboLabel
End With
End With
Set Comb = Nothing: Set Mbar = Nothing
End Sub
'-----------------------------
Sub Prochain_No_Facture()
Dim A As Long
With Application.CommandBars("No Facture").Controls(1)
A = Val(.List(.ListIndex))
.Clear
.AddItem A + 1
Application.EnableEvents = False
Worksheets("Feuil1").Range("IV65535") = A + 1
Application.EnableEvents = True
.ListIndex = 1
End With
End Sub
'-----------------------------
Salutations!
"Céline06" a écrit dans le message de news:
Bonjour à tous,
Voilà ce que je cherche a faire. Je pense que vous allez pouvoir m'aider.
J'ai mis en place une facture dans un classeur, celle ci est complétée
automatiquement garce à des macros et en fonction des données présentes dans
les feuilles précedentes. La seule chose que je dois faire, c'est changer le
numero de la facture avant de l'enregistrer. Ce que je voudrais c'est faire
une sorte de "pense bête" qui me dise quel est le prochain numero. Ca
pourrait se faire sous forme de barre d'outil car je ne veux pas que le
munero suivant apparaisse sur les factures quand je les imprime.
J'ai pas trop d'idées sur le type d'outil a mettre en place. Peut être une
barre d'outil sur laquelle serait recopié le dernier numero de facture ou
alors le dernier numero +1.
Merci d'avance pour votre aide.
Bonjour Céline06,
Voici un début de suggestion : Le principe de base, Incrémenter le numéro de facture qui apparaît dans un contrôle d'un
barre d'outils à chaque fois que tu sauvegarde la feuille. Tout ce qui suit a besoin d'être raffiné selon ta méthode de
travail ou celle que tu aimerais implanter ! Attention... dans les deux dernières procédures, j'utilise la "Feuil1" pour
les fins de l'exemple... tu devrais modifier selon ton application.
Sub Combo_No_Facture est une procédure qui affiche dans ton programme, une nouvelle barre d'outil et affiche à
l'intérieur le prochain numéro de facture devant être utilisé.
Prochain_No_Facture = est un procédure permettant de mettre à jour l'information de la nouvelle barre d'outils et
d'afficher le prochain numéro de facture devant être utilisé.
Cependant, lorsque tu fermes ton fichier, tu dois trouver un endroit où sauvegarder l'information du numéro de facture.
Tu pourrais utiliser une cellule de ta feuille inutilisé comme IV65535 .
Tout ceci pour être gérer à partir d'événement situé dans le ThisWorkbook comme :
Ce qui suit dans le ThisWorkbook de ton classeur
'----------------
Private Sub Workbook_Open()
Combo_No_Facture
End Sub
'----------------
'----------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Prochain_No_Facture
End Sub
Dans le module de la feuille :
'----------------
Private Sub Worksheet_Activate()
Combo_No_Facture
End Sub
'----------------
Private Sub Worksheet_Deactivate()
On Error Resume Next
Application.CommandBars("No Facture").Delete
End Sub
'----------------
Ce qui suit dans un module Standard.
'-----------------------------
Sub Combo_No_Facture()
Dim Mbar As CommandBar
Dim Comb As CommandBarComboBox
On Error Resume Next
Application.CommandBars("No Facture").Delete
Set Mbar = Application.CommandBars.Add _
("No Facture", msoBarTop, False, True)
With Mbar
.Position = msoBarFloating
.Left = 750
.Top = 150
.Visible = True
.Protection = msoBarNoChangeVisible + msoBarNoCustomize _
+ msoBarNoMove
Set Comb = .Controls.Add(msoControlComboBox)
With Comb
.Caption = "Suivant : "
.Width = 110
.TooltipText = "Votre prochain No Facture"
If Worksheets("Feuil1").Range("IV65535") = "" Then
Worksheets("Feuil1").Range("IV65535") = 1
.AddItem 1
.ListIndex = 1
Else
.Clear
.AddItem Worksheets("Feuil1").Range("IV65535")
.ListIndex = 1
End If
.Style = msoComboLabel
End With
End With
Set Comb = Nothing: Set Mbar = Nothing
End Sub
'-----------------------------
Sub Prochain_No_Facture()
Dim A As Long
With Application.CommandBars("No Facture").Controls(1)
A = Val(.List(.ListIndex))
.Clear
.AddItem A + 1
Application.EnableEvents = False
Worksheets("Feuil1").Range("IV65535") = A + 1
Application.EnableEvents = True
.ListIndex = 1
End With
End Sub
'-----------------------------
Salutations!
"Céline06" <Cline06@discussions.microsoft.com> a écrit dans le message de news:
7B9A0624-4626-4C6C-BF15-D27005AE5E8D@microsoft.com...
Bonjour à tous,
Voilà ce que je cherche a faire. Je pense que vous allez pouvoir m'aider.
J'ai mis en place une facture dans un classeur, celle ci est complétée
automatiquement garce à des macros et en fonction des données présentes dans
les feuilles précedentes. La seule chose que je dois faire, c'est changer le
numero de la facture avant de l'enregistrer. Ce que je voudrais c'est faire
une sorte de "pense bête" qui me dise quel est le prochain numero. Ca
pourrait se faire sous forme de barre d'outil car je ne veux pas que le
munero suivant apparaisse sur les factures quand je les imprime.
J'ai pas trop d'idées sur le type d'outil a mettre en place. Peut être une
barre d'outil sur laquelle serait recopié le dernier numero de facture ou
alors le dernier numero +1.
Merci d'avance pour votre aide.
Bonjour Céline06,
Voici un début de suggestion : Le principe de base, Incrémenter le numéro de facture qui apparaît dans un contrôle d'un
barre d'outils à chaque fois que tu sauvegarde la feuille. Tout ce qui suit a besoin d'être raffiné selon ta méthode de
travail ou celle que tu aimerais implanter ! Attention... dans les deux dernières procédures, j'utilise la "Feuil1" pour
les fins de l'exemple... tu devrais modifier selon ton application.
Sub Combo_No_Facture est une procédure qui affiche dans ton programme, une nouvelle barre d'outil et affiche à
l'intérieur le prochain numéro de facture devant être utilisé.
Prochain_No_Facture = est un procédure permettant de mettre à jour l'information de la nouvelle barre d'outils et
d'afficher le prochain numéro de facture devant être utilisé.
Cependant, lorsque tu fermes ton fichier, tu dois trouver un endroit où sauvegarder l'information du numéro de facture.
Tu pourrais utiliser une cellule de ta feuille inutilisé comme IV65535 .
Tout ceci pour être gérer à partir d'événement situé dans le ThisWorkbook comme :
Ce qui suit dans le ThisWorkbook de ton classeur
'----------------
Private Sub Workbook_Open()
Combo_No_Facture
End Sub
'----------------
'----------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Prochain_No_Facture
End Sub
Dans le module de la feuille :
'----------------
Private Sub Worksheet_Activate()
Combo_No_Facture
End Sub
'----------------
Private Sub Worksheet_Deactivate()
On Error Resume Next
Application.CommandBars("No Facture").Delete
End Sub
'----------------
Ce qui suit dans un module Standard.
'-----------------------------
Sub Combo_No_Facture()
Dim Mbar As CommandBar
Dim Comb As CommandBarComboBox
On Error Resume Next
Application.CommandBars("No Facture").Delete
Set Mbar = Application.CommandBars.Add _
("No Facture", msoBarTop, False, True)
With Mbar
.Position = msoBarFloating
.Left = 750
.Top = 150
.Visible = True
.Protection = msoBarNoChangeVisible + msoBarNoCustomize _
+ msoBarNoMove
Set Comb = .Controls.Add(msoControlComboBox)
With Comb
.Caption = "Suivant : "
.Width = 110
.TooltipText = "Votre prochain No Facture"
If Worksheets("Feuil1").Range("IV65535") = "" Then
Worksheets("Feuil1").Range("IV65535") = 1
.AddItem 1
.ListIndex = 1
Else
.Clear
.AddItem Worksheets("Feuil1").Range("IV65535")
.ListIndex = 1
End If
.Style = msoComboLabel
End With
End With
Set Comb = Nothing: Set Mbar = Nothing
End Sub
'-----------------------------
Sub Prochain_No_Facture()
Dim A As Long
With Application.CommandBars("No Facture").Controls(1)
A = Val(.List(.ListIndex))
.Clear
.AddItem A + 1
Application.EnableEvents = False
Worksheets("Feuil1").Range("IV65535") = A + 1
Application.EnableEvents = True
.ListIndex = 1
End With
End Sub
'-----------------------------
Salutations!
"Céline06" a écrit dans le message de news:
Bonjour à tous,
Voilà ce que je cherche a faire. Je pense que vous allez pouvoir m'aider.
J'ai mis en place une facture dans un classeur, celle ci est complétée
automatiquement garce à des macros et en fonction des données présentes dans
les feuilles précedentes. La seule chose que je dois faire, c'est changer le
numero de la facture avant de l'enregistrer. Ce que je voudrais c'est faire
une sorte de "pense bête" qui me dise quel est le prochain numero. Ca
pourrait se faire sous forme de barre d'outil car je ne veux pas que le
munero suivant apparaisse sur les factures quand je les imprime.
J'ai pas trop d'idées sur le type d'outil a mettre en place. Peut être une
barre d'outil sur laquelle serait recopié le dernier numero de facture ou
alors le dernier numero +1.
Merci d'avance pour votre aide.
Pour compléter mon message précédent,
Dans le ThisWorkbook, tu pourrais avoir un test similaire ...(plus exhaustif au besoin) pour t'assurer que l'usager
n'enregistre pas des "factures bidons" ...et ce critère pour être utilisé dans la procédure que je t'ai proposé pour
déterminer si le numéro de facture doit être incrémenté.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With ThisWorkbook
With .Worksheets("Feuil1")
If .Range("A10") = "" And .Range("D25") = "" Then
Cancel = True
End If
End With
End With
End Sub
Salutations!
"Céline06" a écrit dans le message de news:
Après un essai de ton code, me voila de retour. Malheureusement, j'ai un
petit problème. Je m'explique. Le truc c'est qu'avec ce code, le numero de la
"facture suivante" change a chaque enregistrement du classeur. Le problème
c'est que la facture fait partie d'un classeur qui est souvent modifié et le
numero change a chaque fois même lorsqu'une facture n'est pas editée. J'ai
donc pensé a une chose. J'ai une barre d'outil qui a a ce code:
Set myControl6 = myBar.Controls _
.Add(Type:=msoControlButton)
With myControl6
.FaceId = 397
.Caption = "Incrémenter N° facture"
.OnAction = "incrementer"
End With
etc
La macro "incrementer" me permet en cliquant sur le bouton de la barre de
changé le numero de la facture.
Voila la macro:
Private Sub incrementer()
If ActiveWorkbook.Path <> "" Then
If ActiveWorkbook.Name = "Base de données" Then Exit Sub
With Sheets("Facture")
.Range("E11").Value = .Range("E11").Value + 1
End With
End If
End Sub
Pensez vous qu'à cette macro je pourrais ajouter le fait de créer une autre
barre d'outil et d'y insérer le prochain numero de facture. J'ai essayé de
faire un truc dans ce sens mais j'ai pas reussi.
Merci pour votre aide.
Pour compléter mon message précédent,
Dans le ThisWorkbook, tu pourrais avoir un test similaire ...(plus exhaustif au besoin) pour t'assurer que l'usager
n'enregistre pas des "factures bidons" ...et ce critère pour être utilisé dans la procédure que je t'ai proposé pour
déterminer si le numéro de facture doit être incrémenté.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With ThisWorkbook
With .Worksheets("Feuil1")
If .Range("A10") = "" And .Range("D25") = "" Then
Cancel = True
End If
End With
End With
End Sub
Salutations!
"Céline06" <Cline06@discussions.microsoft.com> a écrit dans le message de news:
5EBE3A8D-BB2E-4250-995B-16BCB1C6BF35@microsoft.com...
Après un essai de ton code, me voila de retour. Malheureusement, j'ai un
petit problème. Je m'explique. Le truc c'est qu'avec ce code, le numero de la
"facture suivante" change a chaque enregistrement du classeur. Le problème
c'est que la facture fait partie d'un classeur qui est souvent modifié et le
numero change a chaque fois même lorsqu'une facture n'est pas editée. J'ai
donc pensé a une chose. J'ai une barre d'outil qui a a ce code:
Set myControl6 = myBar.Controls _
.Add(Type:=msoControlButton)
With myControl6
.FaceId = 397
.Caption = "Incrémenter N° facture"
.OnAction = "incrementer"
End With
etc
La macro "incrementer" me permet en cliquant sur le bouton de la barre de
changé le numero de la facture.
Voila la macro:
Private Sub incrementer()
If ActiveWorkbook.Path <> "" Then
If ActiveWorkbook.Name = "Base de données" Then Exit Sub
With Sheets("Facture")
.Range("E11").Value = .Range("E11").Value + 1
End With
End If
End Sub
Pensez vous qu'à cette macro je pourrais ajouter le fait de créer une autre
barre d'outil et d'y insérer le prochain numero de facture. J'ai essayé de
faire un truc dans ce sens mais j'ai pas reussi.
Merci pour votre aide.
Pour compléter mon message précédent,
Dans le ThisWorkbook, tu pourrais avoir un test similaire ...(plus exhaustif au besoin) pour t'assurer que l'usager
n'enregistre pas des "factures bidons" ...et ce critère pour être utilisé dans la procédure que je t'ai proposé pour
déterminer si le numéro de facture doit être incrémenté.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With ThisWorkbook
With .Worksheets("Feuil1")
If .Range("A10") = "" And .Range("D25") = "" Then
Cancel = True
End If
End With
End With
End Sub
Salutations!
"Céline06" a écrit dans le message de news:
Après un essai de ton code, me voila de retour. Malheureusement, j'ai un
petit problème. Je m'explique. Le truc c'est qu'avec ce code, le numero de la
"facture suivante" change a chaque enregistrement du classeur. Le problème
c'est que la facture fait partie d'un classeur qui est souvent modifié et le
numero change a chaque fois même lorsqu'une facture n'est pas editée. J'ai
donc pensé a une chose. J'ai une barre d'outil qui a a ce code:
Set myControl6 = myBar.Controls _
.Add(Type:=msoControlButton)
With myControl6
.FaceId = 397
.Caption = "Incrémenter N° facture"
.OnAction = "incrementer"
End With
etc
La macro "incrementer" me permet en cliquant sur le bouton de la barre de
changé le numero de la facture.
Voila la macro:
Private Sub incrementer()
If ActiveWorkbook.Path <> "" Then
If ActiveWorkbook.Name = "Base de données" Then Exit Sub
With Sheets("Facture")
.Range("E11").Value = .Range("E11").Value + 1
End With
End If
End Sub
Pensez vous qu'à cette macro je pourrais ajouter le fait de créer une autre
barre d'outil et d'y insérer le prochain numero de facture. J'ai essayé de
faire un truc dans ce sens mais j'ai pas reussi.
Merci pour votre aide.
Merci beaucoup. Ca me semble pas simple tout ca! Rien de tel qu'un essai,
c'est ce que je vais faire tout de suite.
Merci encore!Pour compléter mon message précédent,
Dans le ThisWorkbook, tu pourrais avoir un test similaire ...(plus exhaustif au besoin) pour t'assurer que l'usager
n'enregistre pas des "factures bidons" ...et ce critère pour être utilisé dans la procédure que je t'ai proposé pour
déterminer si le numéro de facture doit être incrémenté.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With ThisWorkbook
With .Worksheets("Feuil1")
If .Range("A10") = "" And .Range("D25") = "" Then
Cancel = True
End If
End With
End With
End Sub
Salutations!
"Céline06" a écrit dans le message de news:
Après un essai de ton code, me voila de retour. Malheureusement, j'ai un
petit problème. Je m'explique. Le truc c'est qu'avec ce code, le numero de la
"facture suivante" change a chaque enregistrement du classeur. Le problème
c'est que la facture fait partie d'un classeur qui est souvent modifié et le
numero change a chaque fois même lorsqu'une facture n'est pas editée. J'ai
donc pensé a une chose. J'ai une barre d'outil qui a a ce code:
Set myControl6 = myBar.Controls _
.Add(Type:=msoControlButton)
With myControl6
.FaceId = 397
.Caption = "Incrémenter N° facture"
.OnAction = "incrementer"
End With
etc
La macro "incrementer" me permet en cliquant sur le bouton de la barre de
changé le numero de la facture.
Voila la macro:
Private Sub incrementer()
If ActiveWorkbook.Path <> "" Then
If ActiveWorkbook.Name = "Base de données" Then Exit Sub
With Sheets("Facture")
.Range("E11").Value = .Range("E11").Value + 1
End With
End If
End Sub
Pensez vous qu'à cette macro je pourrais ajouter le fait de créer une autre
barre d'outil et d'y insérer le prochain numero de facture. J'ai essayé de
faire un truc dans ce sens mais j'ai pas reussi.
Merci pour votre aide.
Merci beaucoup. Ca me semble pas simple tout ca! Rien de tel qu'un essai,
c'est ce que je vais faire tout de suite.
Merci encore!
Pour compléter mon message précédent,
Dans le ThisWorkbook, tu pourrais avoir un test similaire ...(plus exhaustif au besoin) pour t'assurer que l'usager
n'enregistre pas des "factures bidons" ...et ce critère pour être utilisé dans la procédure que je t'ai proposé pour
déterminer si le numéro de facture doit être incrémenté.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With ThisWorkbook
With .Worksheets("Feuil1")
If .Range("A10") = "" And .Range("D25") = "" Then
Cancel = True
End If
End With
End With
End Sub
Salutations!
"Céline06" <Cline06@discussions.microsoft.com> a écrit dans le message de news:
5EBE3A8D-BB2E-4250-995B-16BCB1C6BF35@microsoft.com...
Après un essai de ton code, me voila de retour. Malheureusement, j'ai un
petit problème. Je m'explique. Le truc c'est qu'avec ce code, le numero de la
"facture suivante" change a chaque enregistrement du classeur. Le problème
c'est que la facture fait partie d'un classeur qui est souvent modifié et le
numero change a chaque fois même lorsqu'une facture n'est pas editée. J'ai
donc pensé a une chose. J'ai une barre d'outil qui a a ce code:
Set myControl6 = myBar.Controls _
.Add(Type:=msoControlButton)
With myControl6
.FaceId = 397
.Caption = "Incrémenter N° facture"
.OnAction = "incrementer"
End With
etc
La macro "incrementer" me permet en cliquant sur le bouton de la barre de
changé le numero de la facture.
Voila la macro:
Private Sub incrementer()
If ActiveWorkbook.Path <> "" Then
If ActiveWorkbook.Name = "Base de données" Then Exit Sub
With Sheets("Facture")
.Range("E11").Value = .Range("E11").Value + 1
End With
End If
End Sub
Pensez vous qu'à cette macro je pourrais ajouter le fait de créer une autre
barre d'outil et d'y insérer le prochain numero de facture. J'ai essayé de
faire un truc dans ce sens mais j'ai pas reussi.
Merci pour votre aide.
Merci beaucoup. Ca me semble pas simple tout ca! Rien de tel qu'un essai,
c'est ce que je vais faire tout de suite.
Merci encore!Pour compléter mon message précédent,
Dans le ThisWorkbook, tu pourrais avoir un test similaire ...(plus exhaustif au besoin) pour t'assurer que l'usager
n'enregistre pas des "factures bidons" ...et ce critère pour être utilisé dans la procédure que je t'ai proposé pour
déterminer si le numéro de facture doit être incrémenté.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With ThisWorkbook
With .Worksheets("Feuil1")
If .Range("A10") = "" And .Range("D25") = "" Then
Cancel = True
End If
End With
End With
End Sub
Salutations!
"Céline06" a écrit dans le message de news:
Après un essai de ton code, me voila de retour. Malheureusement, j'ai un
petit problème. Je m'explique. Le truc c'est qu'avec ce code, le numero de la
"facture suivante" change a chaque enregistrement du classeur. Le problème
c'est que la facture fait partie d'un classeur qui est souvent modifié et le
numero change a chaque fois même lorsqu'une facture n'est pas editée. J'ai
donc pensé a une chose. J'ai une barre d'outil qui a a ce code:
Set myControl6 = myBar.Controls _
.Add(Type:=msoControlButton)
With myControl6
.FaceId = 397
.Caption = "Incrémenter N° facture"
.OnAction = "incrementer"
End With
etc
La macro "incrementer" me permet en cliquant sur le bouton de la barre de
changé le numero de la facture.
Voila la macro:
Private Sub incrementer()
If ActiveWorkbook.Path <> "" Then
If ActiveWorkbook.Name = "Base de données" Then Exit Sub
With Sheets("Facture")
.Range("E11").Value = .Range("E11").Value + 1
End With
End If
End Sub
Pensez vous qu'à cette macro je pourrais ajouter le fait de créer une autre
barre d'outil et d'y insérer le prochain numero de facture. J'ai essayé de
faire un truc dans ce sens mais j'ai pas reussi.
Merci pour votre aide.