Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

vba et numéro de facture

13 réponses
Avatar
Marc
Bonjour à vous tous
J'ai un modèle de facture (fichier.xlt)
Je veux qu'à l'ouverture, dans la cellule b2, le numéro de facture est
incrémenté de 1 pour chaque nouvelle facture.
Voici mon code sur une feuille test

Private Sub Workbook_Open()
Sheets("test").Range("b1") = Sheets("test").Range("b1") + 1
End Sub

le problème, c'est que dès que je sauvegarde en format xls, lors de la
réouverture de mon xlt, j'ai encore le numéro précédent, pourquoi?
Autre question. si je veux que le nom du fichier se nomme automatiquement
comme le texte qui sera inscrit dans la cellule B2 et le numéro de la
facture, je fais cela comment?

Merci de m'aider

Marc

10 réponses

1 2
Avatar
ymer.hyseni
On 4 juin, 21:32, Marc wrote:
Bonjour à vous tous
J'ai un modèle de facture (fichier.xlt)
Je veux qu'à l'ouverture, dans la cellule b2, le numéro de facture est
incrémenté de 1 pour chaque nouvelle facture.
Voici mon code sur une feuille test

Private Sub Workbook_Open()
Sheets("test").Range("b1") = Sheets("test").Range("b1") + 1
End Sub

le problème, c'est que dès que je sauvegarde en format xls, lors de la
réouverture de mon xlt, j'ai encore le numéro précédent, pourquoi?
Autre question. si je veux que le nom du fichier se nomme automatiquement
comme le texte qui sera inscrit dans la cellule B2 et le numéro de la
facture, je fais cela comment?

Merci de m'aider

Marc


pour la première partie de ta question, ce ne sera pas possible, car
ton fichier xlt ne change pas en réalité, quand tu le ferme à la fin,
il garde la même structure que lorsque tu l'a ouvert... et la deuxième
partie, je vais te répondre un peu plus tard...

ciao

Avatar
jps
bonjour marc
je te fais copie d'une réponse de anonymous donnée ici il y a quelques mois
et dont tu peux t'inspirer pour ce qui concerne la numérotation de ton
modèle .xlt
bonne chance
jps

début de copie
Voila Ci-dessous une solution qui suppose que ton modèle
("Fact.xlt" dans le code ci-dessous) contienne une
cellule nommée (InsertionNomDéfinir) "numFact", cellule
où s'inscrira le numéro incrémenté.

A l'ouverture d'un classeur basé sur le modèle
("Fact1.xls"), la cellule "numFact"
est incrémentée et le classeur est réenregistré comme
modèle "Fact.xlt", écrasant le précédent et sauvegardant
ainsi le nouveau numéro.

A la fermeture, si le classeur "Fact1.xls" n'a pas été
enregistré, on considère que le numéro de facture n'a pas
servi. Le modèle est réouvert et la cellule "numFact"
est décrémentée pour proposer à la création du prochain
classeur basé sur le modèle un numéro de
facture "cohérent" avec les précédentes factures
enregistrées.

Private Sub Workbook_Open()
If ActiveWorkbook.Path = "" Then
[numFact] = [numFact] + 1
ActiveWorkbook.Saved = True
ActiveWorkbook.SaveCopyAs(Application.TemplatesPath
& "Fact.xlt")
End If
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
chemXlt = Application.TemplatesPath & "Fact.xlt"
If ActiveWorkbook.Path = "" Then
Set wbk = Workbooks.Open(chemXlt)
With wbk.ActiveSheet
.Range("NumFact") = .Range("NumFact") - 1
End With
wbk.Close True
End If
End Sub

Il faut pour cela que le classeur de base soit nommé
Fact.xlt, qu'il contienne une cellule nommée
numFact, ouvrir l'editeur VBA à l'aide de la combinaison
Alt+F11, de double cliquer sur ThisWorkbook du
projet portant le nom du classeur dans la fenêtre située
en haut à gauche et de copier l'ensemble des
deux procédures, de Private Sub Workbook_Open() au
deuxième End Sub dans la grande fenêtre de droite,
puis d'enregistrer.

Attention
Un fichier .xlt n'est pas destiné à être ouvert par la
procédure "ouvrir",
c'est un modèle, fonctionnant sur le même principe
que "classeur.xlt" qui, lorsqu'on utilise fichier nouveau
donne classeur1.xls.
Si tu procèdes maintenant de cette manière : Fichier /
Nouveau,
tu auras une fenêtre qui te proposera fact en plus de
classeur ;
en choisissant fact, tu ouvriras un fichier nommé
fact1.xls avec une cellule Numfact incrémentée.

Voila j'espère avoir pu t'aider,

fin de copie

"Marc" a écrit dans le message de news:

Bonjour à vous tous
J'ai un modèle de facture (fichier.xlt)
Je veux qu'à l'ouverture, dans la cellule b2, le numéro de facture est
incrémenté de 1 pour chaque nouvelle facture.
Voici mon code sur une feuille test

Private Sub Workbook_Open()
Sheets("test").Range("b1") = Sheets("test").Range("b1") + 1
End Sub

le problème, c'est que dès que je sauvegarde en format xls, lors de la
réouverture de mon xlt, j'ai encore le numéro précédent, pourquoi?
Autre question. si je veux que le nom du fichier se nomme automatiquement
comme le texte qui sera inscrit dans la cellule B2 et le numéro de la
facture, je fais cela comment?

Merci de m'aider

Marc


Avatar
jps
rebonjour
pour la seconde partie, voici cette fois la copie d'un post de
l'incontournable papou
elle devrait t'aider pour l'enregistrement de ta facture...à adapter bien
évidemment
HTH
jps

début de copie

Modifier éventuellement avec le nom de la feuille :
Sub EnregistrerAvecParam()
Const Rp As String = "C:Mes documents"
Dim SousRp As String
Dim NomFic As String
SousRp = Worksheets("Feuil1").Range("A1").Value
NomFic = Worksheets("Feuil1").Range("A1").Value
If Rp = "" Or NomFic = "" Then MsgBox "Un paramètre est manquant" _
, vbInformation, "Impossible": Exit Sub
ThisWorkbook.SaveAs Rp & SousRp & Application.PathSeparator _
& NomFic & ".xls"
End Sub

fin de copie

"Marc" a écrit dans le message de news:

Bonjour à vous tous
J'ai un modèle de facture (fichier.xlt)
Je veux qu'à l'ouverture, dans la cellule b2, le numéro de facture est
incrémenté de 1 pour chaque nouvelle facture.
Voici mon code sur une feuille test

Private Sub Workbook_Open()
Sheets("test").Range("b1") = Sheets("test").Range("b1") + 1
End Sub

le problème, c'est que dès que je sauvegarde en format xls, lors de la
réouverture de mon xlt, j'ai encore le numéro précédent, pourquoi?
Autre question. si je veux que le nom du fichier se nomme automatiquement
comme le texte qui sera inscrit dans la cellule B2 et le numéro de la
facture, je fais cela comment?

Merci de m'aider

Marc


Avatar
ymer.hyseni
On 4 juin, 21:57, "jps" wrote:
bonjour marc
je te fais copie d'une réponse de anonymous donnée ici il y a quelque s mois
et dont tu peux t'inspirer pour ce qui concerne la numérotation de ton
modèle .xlt
bonne chance
jps

début de copie
Voila Ci-dessous une solution qui suppose que ton modèle
("Fact.xlt" dans le code ci-dessous) contienne une
cellule nommée (InsertionNomDéfinir) "numFact", cellule
où s'inscrira le numéro incrémenté.

A l'ouverture d'un classeur basé sur le modèle
("Fact1.xls"), la cellule "numFact"
est incrémentée et le classeur est réenregistré comme
modèle "Fact.xlt", écrasant le précédent et sauvegardant
ainsi le nouveau numéro.

A la fermeture, si le classeur "Fact1.xls" n'a pas été
enregistré, on considère que le numéro de facture n'a pas
servi. Le modèle est réouvert et la cellule "numFact"
est décrémentée pour proposer à la création du prochain
classeur basé sur le modèle un numéro de
facture "cohérent" avec les précédentes factures
enregistrées.

Private Sub Workbook_Open()
If ActiveWorkbook.Path = "" Then
[numFact] = [numFact] + 1
ActiveWorkbook.Saved = True
ActiveWorkbook.SaveCopyAs(Application.TemplatesPath
& "Fact.xlt")
End If
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
chemXlt = Application.TemplatesPath & "Fact.xlt"
If ActiveWorkbook.Path = "" Then
Set wbk = Workbooks.Open(chemXlt)
With wbk.ActiveSheet
.Range("NumFact") = .Range("NumFact") - 1
End With
wbk.Close True
End If
End Sub

Il faut pour cela que le classeur de base soit nommé
Fact.xlt, qu'il contienne une cellule nommée
numFact, ouvrir l'editeur VBA à l'aide de la combinaison
Alt+F11, de double cliquer sur ThisWorkbook du
projet portant le nom du classeur dans la fenêtre située
en haut à gauche et de copier l'ensemble des
deux procédures, de Private Sub Workbook_Open() au
deuxième End Sub dans la grande fenêtre de droite,
puis d'enregistrer.

Attention
Un fichier .xlt n'est pas destiné à être ouvert par la
procédure "ouvrir",
c'est un modèle, fonctionnant sur le même principe
que "classeur.xlt" qui, lorsqu'on utilise fichier nouveau
donne classeur1.xls.
Si tu procèdes maintenant de cette manière : Fichier /
Nouveau,
tu auras une fenêtre qui te proposera fact en plus de
classeur ;
en choisissant fact, tu ouvriras un fichier nommé
fact1.xls avec une cellule Numfact incrémentée.

Voila j'espère avoir pu t'aider,

fin de copie

"Marc" a écrit dans le message de news:


Bonjour à vous tous
J'ai un modèle de facture (fichier.xlt)
Je veux qu'à l'ouverture, dans la cellule b2, le numéro de facture est
incrémenté de 1 pour chaque nouvelle facture.
Voici mon code sur une feuille test

Private Sub Workbook_Open()
Sheets("test").Range("b1") = Sheets("test").Range("b1") + 1
End Sub

le problème, c'est que dès que je sauvegarde en format xls, lors de la
réouverture de mon xlt, j'ai encore le numéro précédent, pourqu oi?
Autre question. si je veux que le nom du fichier se nomme automatiqueme nt
comme le texte qui sera inscrit dans la cellule B2 et le numéro de la
facture, je fais cela comment?

Merci de m'aider

Marc



je te propose une chose, pour simplifier, il fait toi un fichier de
côté, où tu mets les numéros de factures que tu veux, puis une peti te
macro qui va à l'ouverture de ton fact.xlt aller chercher à la cellule
A1 ce qui se trouve... et bien sur il supprime la cellule afin que la
prochaine vient prendre place dedans... et comme ca tu évites plein de
complications...

ciao


Avatar
Marc
Bonjour à vous deux
un très grand merci pour votre aide, je vais analyser et adapter mon
document à la macro que vous m'avez expliqué.

Merci et bonne fin de journée


rebonjour
pour la seconde partie, voici cette fois la copie d'un post de
l'incontournable papou
elle devrait t'aider pour l'enregistrement de ta facture...à adapter bien
évidemment
HTH
jps

début de copie

Modifier éventuellement avec le nom de la feuille :
Sub EnregistrerAvecParam()
Const Rp As String = "C:Mes documents"
Dim SousRp As String
Dim NomFic As String
SousRp = Worksheets("Feuil1").Range("A1").Value
NomFic = Worksheets("Feuil1").Range("A1").Value
If Rp = "" Or NomFic = "" Then MsgBox "Un paramètre est manquant" _
, vbInformation, "Impossible": Exit Sub
ThisWorkbook.SaveAs Rp & SousRp & Application.PathSeparator _
& NomFic & ".xls"
End Sub

fin de copie

"Marc" a écrit dans le message de news:

Bonjour à vous tous
J'ai un modèle de facture (fichier.xlt)
Je veux qu'à l'ouverture, dans la cellule b2, le numéro de facture est
incrémenté de 1 pour chaque nouvelle facture.
Voici mon code sur une feuille test

Private Sub Workbook_Open()
Sheets("test").Range("b1") = Sheets("test").Range("b1") + 1
End Sub

le problème, c'est que dès que je sauvegarde en format xls, lors de la
réouverture de mon xlt, j'ai encore le numéro précédent, pourquoi?
Autre question. si je veux que le nom du fichier se nomme automatiquement
comme le texte qui sera inscrit dans la cellule B2 et le numéro de la
facture, je fais cela comment?

Merci de m'aider

Marc







Avatar
LSteph
;o)

début de copie
fin de copie


que des gens fréquentables cette fois ci!

Avatar
Modeste
Bonsour® LSteph avec ferveur ;o))) vous nous disiez :

;o)

début de copie
fin de copie


que des gens fréquentables cette fois ci!


Heu... tu n'as pas mis [HS] ;o)))

l'aurait pu mettre :
début de cHopiNe
fin de cHopiNe


--
--
@+
;o)))


Avatar
jps
ah! quelle belle image que celle de ce loup hurlant à la lune nordiste....
allez! ouste! à l'aniche
quant à l'autre, je vas te le retourner comme une crêpe alsacienne, à tel
point qu'il signera HPetsl (pour ne pas dire spaetzle....)
jps

"Modeste" a écrit dans le message de news:
%
Bonsour® LSteph avec ferveur ;o))) vous nous disiez :

;o)

début de copie
fin de copie


que des gens fréquentables cette fois ci!


Heu... tu n'as pas mis [HS] ;o)))

l'aurait pu mettre :
début de cHopiNe
fin de cHopiNe


--
--
@+
;o)))






Avatar
Lola
"jps" a écrit dans le message de news:

allez! ouste! à l'aniche


Joli ! :-)

Avatar
Francois L

Bonjour Modeste,

Euh [HN], je croyais que c'était [HO] ou [N] :o)
mais je suis pas spécialiste.

--
François L
1 2