OVH Cloud OVH Cloud

N°devis automatique

23 réponses
Avatar
pauline
Bonjour,

J'aimerais pouvoir avoir un numéro de devis qui se met automatiquement à
chaque création d'un nouveau fichier devis.

J'ai une matrice qui se nomme "matricedevis" et pour créér un nouveau devis
je vais sur ce fichier et je le sauvegarde en le renommant devis +le nom de
la société (exemple= devis robert) ensuite je travaille sur ce fichier.

J'ai créé un fichier "n°devis" dans lequel ligne après ligne je note les
numéros de devis que je me sert avec le nom du client. Cette méthode est
fastidieuse et longue.

Je pense qu'il existe une formule?
Par contre, je connais pas encore vraiment la programmation VBA;;;

Merci d'avance

10 réponses

1 2 3
Avatar
jps
bonjour pauline
inspire-toi de cette réponse de boa73 qui devrait te permettre de régler ton
problème de numérotation....je suppose que ce que tu appelles "matrice" est
un modèle qui doit s'appeler chez toi, si j'ai bien tout compris,
"matricedevis.xlt"...
donc il te suffit de remplacer Fact.xlt dans l'exemple de Boa par
Matricedevis.xlt...
good luck
jps
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,

Boa73

"pauline" a écrit dans le message de
news:
Bonjour,

J'aimerais pouvoir avoir un numéro de devis qui se met automatiquement à
chaque création d'un nouveau fichier devis.

J'ai une matrice qui se nomme "matricedevis" et pour créér un nouveau
devis

je vais sur ce fichier et je le sauvegarde en le renommant devis +le nom
de

la société (exemple= devis robert) ensuite je travaille sur ce fichier.

J'ai créé un fichier "n°devis" dans lequel ligne après ligne je note les
numéros de devis que je me sert avec le nom du client. Cette méthode est
fastidieuse et longue.

Je pense qu'il existe une formule?
Par contre, je connais pas encore vraiment la programmation VBA;;;

Merci d'avance




Avatar
Corona
Bonjour Pauline,
Pour les numérotations automatiques de mes documents, j'utilise un
fichier INI.
Voici un exemple de macro qui écrit et lit dans un fichier INI.
Philippe
**************************************************************
' ++++ Variables utilsées ++++
' Toutes les variables utilisées ici sont Publiques
'
' appDirIni = chemin + nom fichier *.ini (exemple : C:Mes
DocumentsModèlesProjetsProjets.ini
' appType = Type exemple : Devis
' (Voir exemple du fichier INI plus bas)
' iniCount = Compteur
' iniCountChange = la période de remise à zéro du compteur (Y, M) Année Mois
etc ....
' iniLastDate = Date du dernier n° utilisé (sert pour la remise à Zéro)
'
Sub ReadIni()
With System
iniCount = .PrivateProfileString(appDirIni, appType, "Count")
iniCountChange = .PrivateProfileString(appDirIni, appType,
"CountChange")
iniLastDate = .PrivateProfileString(appDirIni, appType, "LastDate")
End With
End Sub

Sub WriteIni()
With System
.PrivateProfileString(appDirIni, appType, "Count") = iniCount
.PrivateProfileString(appDirIni, appType, "CountChange") = iniCountChange
.PrivateProfileString(appDirIni, appType, "LastDate") = iniLastDate
End With
End Sub
**************** Exemple de fichier INI ******************
[Devis]
Count
CountChange=Y
LastDate/03/2005
********************************************************


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

Bonjour,

J'aimerais pouvoir avoir un numéro de devis qui se met automatiquement à
chaque création d'un nouveau fichier devis.

J'ai une matrice qui se nomme "matricedevis" et pour créér un nouveau
devis je vais sur ce fichier et je le sauvegarde en le renommant devis +le
nom de la société (exemple= devis robert) ensuite je travaille sur ce
fichier.

J'ai créé un fichier "n°devis" dans lequel ligne après ligne je note les
numéros de devis que je me sert avec le nom du client. Cette méthode est
fastidieuse et longue.

Je pense qu'il existe une formule?
Par contre, je connais pas encore vraiment la programmation VBA;;;

Merci d'avance



Avatar
pauline
Bonjour et merci pour ta réponse jps,

A la lecture de ta réponse j'ai fait GLOUPS! Je pense que toi tu vas faire
AIE!AIE! car je suis débutante en VBA!
Déjà je ne savais pas que l'on pouvait se servir de xlt! Ma matrice était
sauvegardé en .xls, puis je l'ouvrais et je la sauvegardais avec un autre
nom.
Donc, j'ai (je pense) trouver la solution de transférer mon fichier xls en
xlt; j'ai procédé comme suit:
Enregistrer sous; type de fichier: modèle. es tu déjà d'accord sur cette
manip?

Ensuite j'ai ALT+F11 et au lieu de m'ouvrir l'éditeur VBA il m'a créé une
feuille supplémentaire nommée "MACRO1".
Voilà ou j'en suis. AU SECOURS!!!!!

Amicalement
Pauline



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

bonjour pauline
inspire-toi de cette réponse de boa73 qui devrait te permettre de régler
ton
problème de numérotation....je suppose que ce que tu appelles "matrice"
est
un modèle qui doit s'appeler chez toi, si j'ai bien tout compris,
"matricedevis.xlt"...
donc il te suffit de remplacer Fact.xlt dans l'exemple de Boa par
Matricedevis.xlt...
good luck
jps
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,

Boa73

"pauline" a écrit dans le message de
news:
Bonjour,

J'aimerais pouvoir avoir un numéro de devis qui se met automatiquement à
chaque création d'un nouveau fichier devis.

J'ai une matrice qui se nomme "matricedevis" et pour créér un nouveau
devis

je vais sur ce fichier et je le sauvegarde en le renommant devis +le nom
de

la société (exemple= devis robert) ensuite je travaille sur ce fichier.

J'ai créé un fichier "n°devis" dans lequel ligne après ligne je note les
numéros de devis que je me sert avec le nom du client. Cette méthode est
fastidieuse et longue.

Je pense qu'il existe une formule?
Par contre, je connais pas encore vraiment la programmation VBA;;;

Merci d'avance







Avatar
pauline
Bonjour Philippe et merci pour ta réponse

Mais je te répond comme à jps (qui lui aussi a eu la gentillesse de me
donner une réponse): GLOUPS!
Qu'est ce une fichier INI ? A quoi sert-il? Où dois je mettre la programme
VBA que tu me donnes?
Désolée mais je suis débutante!!!!

Merci

"Corona" <Philippe Tulliez> a écrit dans le message de news:
%
Bonjour Pauline,
Pour les numérotations automatiques de mes documents, j'utilise un
fichier INI.
Voici un exemple de macro qui écrit et lit dans un fichier INI.
Philippe
**************************************************************
' ++++ Variables utilsées ++++
' Toutes les variables utilisées ici sont Publiques
'
' appDirIni = chemin + nom fichier *.ini (exemple : C:Mes
DocumentsModèlesProjetsProjets.ini
' appType = Type exemple : Devis
' (Voir exemple du fichier INI plus bas)
' iniCount = Compteur
' iniCountChange = la période de remise à zéro du compteur (Y, M) Année
Mois etc ....
' iniLastDate = Date du dernier n° utilisé (sert pour la remise à Zéro)
'
Sub ReadIni()
With System
iniCount = .PrivateProfileString(appDirIni, appType, "Count")
iniCountChange = .PrivateProfileString(appDirIni, appType,
"CountChange")
iniLastDate = .PrivateProfileString(appDirIni, appType, "LastDate")
End With
End Sub

Sub WriteIni()
With System
.PrivateProfileString(appDirIni, appType, "Count") = iniCount
.PrivateProfileString(appDirIni, appType, "CountChange") = iniCountChange
.PrivateProfileString(appDirIni, appType, "LastDate") = iniLastDate
End With
End Sub
**************** Exemple de fichier INI ******************
[Devis]
Count
CountChange=Y
LastDate/03/2005
********************************************************


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

Bonjour,

J'aimerais pouvoir avoir un numéro de devis qui se met automatiquement à
chaque création d'un nouveau fichier devis.

J'ai une matrice qui se nomme "matricedevis" et pour créér un nouveau
devis je vais sur ce fichier et je le sauvegarde en le renommant devis
+le nom de la société (exemple= devis robert) ensuite je travaille sur ce
fichier.

J'ai créé un fichier "n°devis" dans lequel ligne après ligne je note les
numéros de devis que je me sert avec le nom du client. Cette méthode est
fastidieuse et longue.

Je pense qu'il existe une formule?
Par contre, je connais pas encore vraiment la programmation VBA;;;

Merci d'avance







Avatar
LSteph
Bonjour,
Effectivement "J" suivi de PS étant souvent synonyme de "glou"
on entend parfois même jj ou glouglou...
en attendant le gloups obtenu vient de ce que de ton côté
Enfin pas toi mais ton doigt a dû remplacer le Alt gentillement indiqué par
"j"..ps par Ctrl
ce qui a pour vertu d'inserer une FeuilleMacro.

Cordialement.

'lSteph

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

Bonjour et merci pour ta réponse jps,

A la lecture de ta réponse j'ai fait GLOUPS! Je pense que toi tu vas faire
AIE!AIE! car je suis débutante en VBA!
Déjà je ne savais pas que l'on pouvait se servir de xlt! Ma matrice était
sauvegardé en .xls, puis je l'ouvrais et je la sauvegardais avec un autre
nom.
Donc, j'ai (je pense) trouver la solution de transférer mon fichier xls en
xlt; j'ai procédé comme suit:
Enregistrer sous; type de fichier: modèle. es tu déjà d'accord sur cette
manip?

Ensuite j'ai ALT+F11 et au lieu de m'ouvrir l'éditeur VBA il m'a créé une
feuille supplémentaire nommée "MACRO1".
Voilà ou j'en suis. AU SECOURS!!!!!

Amicalement
Pauline



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

bonjour pauline
inspire-toi de cette réponse de boa73 qui devrait te permettre de régler
ton
problème de numérotation....je suppose que ce que tu appelles "matrice"
est
un modèle qui doit s'appeler chez toi, si j'ai bien tout compris,
"matricedevis.xlt"...
donc il te suffit de remplacer Fact.xlt dans l'exemple de Boa par
Matricedevis.xlt...
good luck
jps
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,

Boa73

"pauline" a écrit dans le message de
news:
Bonjour,

J'aimerais pouvoir avoir un numéro de devis qui se met automatiquement à
chaque création d'un nouveau fichier devis.

J'ai une matrice qui se nomme "matricedevis" et pour créér un nouveau
devis

je vais sur ce fichier et je le sauvegarde en le renommant devis +le nom
de

la société (exemple= devis robert) ensuite je travaille sur ce fichier.

J'ai créé un fichier "n°devis" dans lequel ligne après ligne je note les
numéros de devis que je me sert avec le nom du client. Cette méthode est
fastidieuse et longue.

Je pense qu'il existe une formule?
Par contre, je connais pas encore vraiment la programmation VBA;;;

Merci d'avance











Avatar
jps
merdum de merdum pauline
sur quelle version d'excel travailles-tu?
si ta matrice (toujours comme tu dis) est en .xls, tu pourrais très bien la
garder ainsi et faire un truc dans ce genre :
tu ouvres Matricedevis.xls et tu entres dans la cellule de ton choix un n°
toujours de ton choix et tu enregistres ton classeur et tu le fermes...(on
pourrait tout faire à la fois mais ainsi tu comprendras mieux)
tu le rouvres et tu fais Alt F11 pour ouvrir VBE (et non pas cette feuille
macro qui nous arrive de je ne sais où)
dans VBE, dans l'arborescence à gauche tu double-cliques sur ThisWorkbook...
tu as avoir à droite cette fois une fenêtre de module...tu suis toujours?
tu vas y coller ceci :

Private Sub Workbook_Open()
'la ligne ci-dessous est un petit cadeau de la maison qui te permet de dater
ton 'devis de la date du jour...ne te reste qu'à changer la cellule (dans
l'ex. c'est F1)
Range("F1").Value = Date
la ligne ci-dessous va faire du bon travail puisqu'elle va ajouter une unité
au n° de 'devis que tu as enregistré dans ta matrice...là encore, adapter la
cellule
Range("E1").Value = Range("E1").Value + 1
'et ici, vite fait bien fait sur le gaz tu enregistres ton action de
numérotation, restant 'entendu que quand tu renverras ensuite
Matricedevis.xls dans son kibboutz, il ne 'faudra surtout pas l'enregistrer
mais je suppose que c'est ce que tu faisais déjà
ActiveWorkbook.Save
End Sub

voilà pauline ce que nous pouvions dire dans cette affaire qui devrait bien
fonctionner dès l'instant où tu peux ouvrir VBE, ce qui semble poser
problème
tutto capich?
jps

"pauline" a écrit dans le message de
news:
Bonjour et merci pour ta réponse jps,

A la lecture de ta réponse j'ai fait GLOUPS! Je pense que toi tu vas faire
AIE!AIE! car je suis débutante en VBA!
Déjà je ne savais pas que l'on pouvait se servir de xlt! Ma matrice était
sauvegardé en .xls, puis je l'ouvrais et je la sauvegardais avec un autre
nom.
Donc, j'ai (je pense) trouver la solution de transférer mon fichier xls en
xlt; j'ai procédé comme suit:
Enregistrer sous; type de fichier: modèle. es tu déjà d'accord sur cette
manip?

Ensuite j'ai ALT+F11 et au lieu de m'ouvrir l'éditeur VBA il m'a créé une
feuille supplémentaire nommée "MACRO1".
Voilà ou j'en suis. AU SECOURS!!!!!

Amicalement
Pauline



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

bonjour pauline
inspire-toi de cette réponse de boa73 qui devrait te permettre de régler
ton
problème de numérotation....je suppose que ce que tu appelles "matrice"
est
un modèle qui doit s'appeler chez toi, si j'ai bien tout compris,
"matricedevis.xlt"...
donc il te suffit de remplacer Fact.xlt dans l'exemple de Boa par
Matricedevis.xlt...
good luck
jps
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,

Boa73

"pauline" a écrit dans le message de
news:
Bonjour,

J'aimerais pouvoir avoir un numéro de devis qui se met automatiquement
à



chaque création d'un nouveau fichier devis.

J'ai une matrice qui se nomme "matricedevis" et pour créér un nouveau
devis

je vais sur ce fichier et je le sauvegarde en le renommant devis +le
nom



de
la société (exemple= devis robert) ensuite je travaille sur ce fichier.

J'ai créé un fichier "n°devis" dans lequel ligne après ligne je note
les



numéros de devis que je me sert avec le nom du client. Cette méthode
est



fastidieuse et longue.

Je pense qu'il existe une formule?
Par contre, je connais pas encore vraiment la programmation VBA;;;

Merci d'avance











Avatar
papou
Bonjour Jean-Paul
(et non pas cette feuille
macro qui nous arrive de je ne sais où)
Pauline s'est trompé, au lieu de faire Alt + F11, elle a fait Ctrl + F11 ce

qui a pour effet d'insérer une feuille macro dans le classeur actif.
C'est ce que lui a gentiment fait remarqué leSteph d'ailleurs.
Cordialement
Pascal

"jps" a écrit dans le message de news:
%
merdum de merdum pauline
sur quelle version d'excel travailles-tu?
si ta matrice (toujours comme tu dis) est en .xls, tu pourrais très bien
la
garder ainsi et faire un truc dans ce genre :
tu ouvres Matricedevis.xls et tu entres dans la cellule de ton choix un n°
toujours de ton choix et tu enregistres ton classeur et tu le fermes...(on
pourrait tout faire à la fois mais ainsi tu comprendras mieux)
tu le rouvres et tu fais Alt F11 pour ouvrir VBE (et non pas cette feuille
macro qui nous arrive de je ne sais où)
dans VBE, dans l'arborescence à gauche tu double-cliques sur
ThisWorkbook...
tu as avoir à droite cette fois une fenêtre de module...tu suis toujours?
tu vas y coller ceci :

Private Sub Workbook_Open()
'la ligne ci-dessous est un petit cadeau de la maison qui te permet de
dater
ton 'devis de la date du jour...ne te reste qu'à changer la cellule (dans
l'ex. c'est F1)
Range("F1").Value = Date
la ligne ci-dessous va faire du bon travail puisqu'elle va ajouter une
unité
au n° de 'devis que tu as enregistré dans ta matrice...là encore, adapter
la
cellule
Range("E1").Value = Range("E1").Value + 1
'et ici, vite fait bien fait sur le gaz tu enregistres ton action de
numérotation, restant 'entendu que quand tu renverras ensuite
Matricedevis.xls dans son kibboutz, il ne 'faudra surtout pas
l'enregistrer
mais je suppose que c'est ce que tu faisais déjà
ActiveWorkbook.Save
End Sub

voilà pauline ce que nous pouvions dire dans cette affaire qui devrait
bien
fonctionner dès l'instant où tu peux ouvrir VBE, ce qui semble poser
problème
tutto capich?
jps

"pauline" a écrit dans le message de
news:
Bonjour et merci pour ta réponse jps,

A la lecture de ta réponse j'ai fait GLOUPS! Je pense que toi tu vas
faire
AIE!AIE! car je suis débutante en VBA!
Déjà je ne savais pas que l'on pouvait se servir de xlt! Ma matrice était
sauvegardé en .xls, puis je l'ouvrais et je la sauvegardais avec un
autre
nom.
Donc, j'ai (je pense) trouver la solution de transférer mon fichier xls
en
xlt; j'ai procédé comme suit:
Enregistrer sous; type de fichier: modèle. es tu déjà d'accord sur cette
manip?

Ensuite j'ai ALT+F11 et au lieu de m'ouvrir l'éditeur VBA il m'a créé
une
feuille supplémentaire nommée "MACRO1".
Voilà ou j'en suis. AU SECOURS!!!!!

Amicalement
Pauline



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

bonjour pauline
inspire-toi de cette réponse de boa73 qui devrait te permettre de
régler
ton
problème de numérotation....je suppose que ce que tu appelles "matrice"
est
un modèle qui doit s'appeler chez toi, si j'ai bien tout compris,
"matricedevis.xlt"...
donc il te suffit de remplacer Fact.xlt dans l'exemple de Boa par
Matricedevis.xlt...
good luck
jps
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,

Boa73

"pauline" a écrit dans le message de
news:
Bonjour,

J'aimerais pouvoir avoir un numéro de devis qui se met automatiquement
à



chaque création d'un nouveau fichier devis.

J'ai une matrice qui se nomme "matricedevis" et pour créér un nouveau
devis

je vais sur ce fichier et je le sauvegarde en le renommant devis +le
nom



de
la société (exemple= devis robert) ensuite je travaille sur ce
fichier.

J'ai créé un fichier "n°devis" dans lequel ligne après ligne je note
les



numéros de devis que je me sert avec le nom du client. Cette méthode
est



fastidieuse et longue.

Je pense qu'il existe une formule?
Par contre, je connais pas encore vraiment la programmation VBA;;;

Merci d'avance














Avatar
Clément Marcotte
Bonjour,

Tu peux aller voir là, c'est probablement mieux expliqué que par JPS.
(Beaucoup savent pourquoi ;-) )

http://dj.joss.free.fr/faq.htm#numFacture

"pauline" a écrit dans le message de
news:
Bonjour,

J'aimerais pouvoir avoir un numéro de devis qui se met
automatiquement à

chaque création d'un nouveau fichier devis.

J'ai une matrice qui se nomme "matricedevis" et pour créér un
nouveau devis

je vais sur ce fichier et je le sauvegarde en le renommant devis +le
nom de

la société (exemple= devis robert) ensuite je travaille sur ce
fichier.


J'ai créé un fichier "n°devis" dans lequel ligne après ligne je note
les

numéros de devis que je me sert avec le nom du client. Cette méthode
est

fastidieuse et longue.

Je pense qu'il existe une formule?
Par contre, je connais pas encore vraiment la programmation VBA;;;

Merci d'avance




Avatar
jps
chez moi, c'est imagé, Moooooossieur...
ferez mieux d'avoir les yeux tournés vers rome plutôt que vers mes
esseuplications, des fois que le conclave vous choisisse et que nous
assistions à la naissance de mpve..
jps

"Clément Marcotte" a écrit dans le message
de news:
Bonjour,

Tu peux aller voir là, c'est probablement mieux expliqué que par JPS.
(Beaucoup savent pourquoi ;-) )

http://dj.joss.free.fr/faq.htm#numFacture

"pauline" a écrit dans le message de
news:
Bonjour,

J'aimerais pouvoir avoir un numéro de devis qui se met
automatiquement à

chaque création d'un nouveau fichier devis.

J'ai une matrice qui se nomme "matricedevis" et pour créér un
nouveau devis

je vais sur ce fichier et je le sauvegarde en le renommant devis +le
nom de

la société (exemple= devis robert) ensuite je travaille sur ce
fichier.


J'ai créé un fichier "n°devis" dans lequel ligne après ligne je note
les

numéros de devis que je me sert avec le nom du client. Cette méthode
est

fastidieuse et longue.

Je pense qu'il existe une formule?
Par contre, je connais pas encore vraiment la programmation VBA;;;

Merci d'avance







Avatar
Mavichavel
Nous sommes le *06/03/2005* et dans un effort
inconsidéré, *Clément Marcotte* a reussi à
tapoter avec ses petits doigts musclés...

Bonjour M. Clément...beaucoup savent :Oui, mais
pas tous...allez ne vous faites pas prier
racontez nous... cela ne dépassera pas les
limites du forum.. :-Z

Bonjour,

Tu peux aller voir là, c'est probablement mieux
expliqué que par JPS. (Beaucoup savent pourquoi ;-) )


--
Amicalement
Michel.P
Serai Calife à la place du Calife...


retirez _sans_spam pour m'envoyer un
message.

1 2 3