OVH Cloud OVH Cloud

Impression incrémentale

8 réponses
Avatar
franck001
Bonjour à tous,

voici mon petit souci, j'ai un document type facture on va dire et je
souhaite l'imprimer "X" fois à l'identique avec juste le numéro de facture
qui change en s'incrémentant à partir d'une "base" que je lui fixe.
Ex. j'imprime avec
X=10
Base= 1235
1ère facture qui sort avec numéro 1235 puis 1236 puis 1237 jusque 1244.

Sauriez-vous m'aider ? Merci d'avance et si en plus cela pouvez être
compatible Excel 97-2000 alors là ce serait la fête !

------(-_-)°zZz------
Franck
http://www.deschamps-web.com

8 réponses

Avatar
michdenis
Une façon de faire :

Dans la procédure, tu remplaces le nom de la feuille par
celle de ton application. Il en va de même de la plage
de cellules à imprimer A1G40 et aussi tu spécifies où
tu inscrits le "No_Facture" dans ta feuille.
:
'---------------------------
Dim Base As Integer
Base = 1235
With Worksheets("Feuil1")
.PageSetup.PrintArea = .Range("A1:G40").Address
For a = 1 To 10
.Range("No_Facture") = Base + 1
.PrintOut
Next
.PageSetup.PrintArea = ""
End With
'---------------------------



"franck001" a écrit dans le message de
news:
Bonjour à tous,

voici mon petit souci, j'ai un document type facture on va dire et je
souhaite l'imprimer "X" fois à l'identique avec juste le numéro de facture
qui change en s'incrémentant à partir d'une "base" que je lui fixe.
Ex. j'imprime avec
X
Base= 1235
1ère facture qui sort avec numéro 1235 puis 1236 puis 1237 jusque 1244.

Sauriez-vous m'aider ? Merci d'avance et si en plus cela pouvez être
compatible Excel 97-2000 alors là ce serait la fête !

------(-_-)°zZz------
Franck
http://www.deschamps-web.com
Avatar
franck001
Merci MichDenis mais étant un peu novice je vais te demander des détails:
Il faut que je fasse une macro c'est ça où je copie ton code ?
Ensuite comment je peux faire pour avoir une base et une quantité
d'impression variable que l'utilisateur pourra spécifier dans uen cellule par
exemple ?
Dernier point [Range("No_Facture")] c'est la cellule où la macro va écrire
mon numéro de facture c'est cela ?

Merci pour ton aide

Franck

"michdenis" a écrit :

Une façon de faire :

Dans la procédure, tu remplaces le nom de la feuille par
celle de ton application. Il en va de même de la plage
de cellules à imprimer A1G40 et aussi tu spécifies où
tu inscrits le "No_Facture" dans ta feuille.
:
'---------------------------
Dim Base As Integer
Base = 1235
With Worksheets("Feuil1")
.PageSetup.PrintArea = .Range("A1:G40").Address
For a = 1 To 10
.Range("No_Facture") = Base + 1
.PrintOut
Next
.PageSetup.PrintArea = ""
End With
'---------------------------



"franck001" a écrit dans le message de
news:
Bonjour à tous,

voici mon petit souci, j'ai un document type facture on va dire et je
souhaite l'imprimer "X" fois à l'identique avec juste le numéro de facture
qui change en s'incrémentant à partir d'une "base" que je lui fixe.
Ex. j'imprime avec
X
Base= 1235
1ère facture qui sort avec numéro 1235 puis 1236 puis 1237 jusque 1244.

Sauriez-vous m'aider ? Merci d'avance et si en plus cela pouvez être
compatible Excel 97-2000 alors là ce serait la fête !

------(-_-)°zZz------
Franck
http://www.deschamps-web.com




Avatar
Papyjac
Bonjour franck,

Je tenterais bien une solution sans VBA, mais il faut tater les formules
circulaires, A1¡+1 ; le problème est d'amorcer la pompe

Si ça t'interesse je peux développer

--
Papyjac


"franck001" a écrit :

Merci MichDenis mais étant un peu novice je vais te demander des détails:
Il faut que je fasse une macro c'est ça où je copie ton code ?
Ensuite comment je peux faire pour avoir une base et une quantité
d'impression variable que l'utilisateur pourra spécifier dans uen cellule par
exemple ?
Dernier point [Range("No_Facture")] c'est la cellule où la macro va écrire
mon numéro de facture c'est cela ?

Merci pour ton aide

Franck

"michdenis" a écrit :

> Une façon de faire :
>
> Dans la procédure, tu remplaces le nom de la feuille par
> celle de ton application. Il en va de même de la plage
> de cellules à imprimer A1G40 et aussi tu spécifies où
> tu inscrits le "No_Facture" dans ta feuille.
> :
> '---------------------------
> Dim Base As Integer
> Base = 1235
> With Worksheets("Feuil1")
> .PageSetup.PrintArea = .Range("A1:G40").Address
> For a = 1 To 10
> .Range("No_Facture") = Base + 1
> .PrintOut
> Next
> .PageSetup.PrintArea = ""
> End With
> '---------------------------
>
>
>
> "franck001" a écrit dans le message de
> news:
> Bonjour à tous,
>
> voici mon petit souci, j'ai un document type facture on va dire et je
> souhaite l'imprimer "X" fois à l'identique avec juste le numéro de facture
> qui change en s'incrémentant à partir d'une "base" que je lui fixe.
> Ex. j'imprime avec
> X
> Base= 1235
> 1ère facture qui sort avec numéro 1235 puis 1236 puis 1237 jusque 1244.
>
> Sauriez-vous m'aider ? Merci d'avance et si en plus cela pouvez être
> compatible Excel 97-2000 alors là ce serait la fête !
>
> ------(-_-)°zZz------
> Franck
> http://www.deschamps-web.com
>
>


Avatar
franck001
Cher Papy tout m'intéresse, surtout ce qui peut m'apporter une solution, donc
compte sur moi pour tater à tout va mais à condition de m'expliquer lol

Merci d'avance

"Papyjac" a écrit :

Bonjour franck,

Je tenterais bien une solution sans VBA, mais il faut tater les formules
circulaires, A1¡+1 ; le problème est d'amorcer la pompe

Si ça t'interesse je peux développer

--
Papyjac


"franck001" a écrit :

> Merci MichDenis mais étant un peu novice je vais te demander des détails:
> Il faut que je fasse une macro c'est ça où je copie ton code ?
> Ensuite comment je peux faire pour avoir une base et une quantité
> d'impression variable que l'utilisateur pourra spécifier dans uen cellule par
> exemple ?
> Dernier point [Range("No_Facture")] c'est la cellule où la macro va écrire
> mon numéro de facture c'est cela ?
>
> Merci pour ton aide
>
> Franck
>
> "michdenis" a écrit :
>
> > Une façon de faire :
> >
> > Dans la procédure, tu remplaces le nom de la feuille par
> > celle de ton application. Il en va de même de la plage
> > de cellules à imprimer A1G40 et aussi tu spécifies où
> > tu inscrits le "No_Facture" dans ta feuille.
> > :
> > '---------------------------
> > Dim Base As Integer
> > Base = 1235
> > With Worksheets("Feuil1")
> > .PageSetup.PrintArea = .Range("A1:G40").Address
> > For a = 1 To 10
> > .Range("No_Facture") = Base + 1
> > .PrintOut
> > Next
> > .PageSetup.PrintArea = ""
> > End With
> > '---------------------------
> >
> >
> >
> > "franck001" a écrit dans le message de
> > news:
> > Bonjour à tous,
> >
> > voici mon petit souci, j'ai un document type facture on va dire et je
> > souhaite l'imprimer "X" fois à l'identique avec juste le numéro de facture
> > qui change en s'incrémentant à partir d'une "base" que je lui fixe.
> > Ex. j'imprime avec
> > X
> > Base= 1235
> > 1ère facture qui sort avec numéro 1235 puis 1236 puis 1237 jusque 1244.
> >
> > Sauriez-vous m'aider ? Merci d'avance et si en plus cela pouvez être
> > compatible Excel 97-2000 alors là ce serait la fête !
> >
> > ------(-_-)°zZz------
> > Franck
> > http://www.deschamps-web.com
> >
> >


Avatar
Papyjac
Bonjour Franck


Faire le test sur un classeur vierge pour te roder

en A1¡+1 ; il te signale une référence circulaire A1

Menu Outil ; Options ; Onglet Calcul ; Coche Itération ; Nb maximal
d'itérations = 1 ; OK

ensuite tu fais F9 plusieurs fois : le numbre s'incrémente

Le problème pour amorcer la pompe à 1235, il faut écrire

A1=si(A1<1235;1235;A1+1)

et tu fais F9 plusieurs fois de suite : 1236, 1237 Etc...

Et la prochaine fois que tu veux éditer des factures, il faudra changer 1235
en 1500 par exemple



--
Papyjac


"franck001" a écrit :

Cher Papy tout m'intéresse, surtout ce qui peut m'apporter une solution, donc
compte sur moi pour tater à tout va mais à condition de m'expliquer lol

Merci d'avance

"Papyjac" a écrit :

> Bonjour franck,
>
> Je tenterais bien une solution sans VBA, mais il faut tater les formules
> circulaires, A1¡+1 ; le problème est d'amorcer la pompe
>
> Si ça t'interesse je peux développer
>
> --
> Papyjac
>
>
> "franck001" a écrit :
>
> > Merci MichDenis mais étant un peu novice je vais te demander des détails:
> > Il faut que je fasse une macro c'est ça où je copie ton code ?
> > Ensuite comment je peux faire pour avoir une base et une quantité
> > d'impression variable que l'utilisateur pourra spécifier dans uen cellule par
> > exemple ?
> > Dernier point [Range("No_Facture")] c'est la cellule où la macro va écrire
> > mon numéro de facture c'est cela ?
> >
> > Merci pour ton aide
> >
> > Franck
> >
> > "michdenis" a écrit :
> >
> > > Une façon de faire :
> > >
> > > Dans la procédure, tu remplaces le nom de la feuille par
> > > celle de ton application. Il en va de même de la plage
> > > de cellules à imprimer A1G40 et aussi tu spécifies où
> > > tu inscrits le "No_Facture" dans ta feuille.
> > > :
> > > '---------------------------
> > > Dim Base As Integer
> > > Base = 1235
> > > With Worksheets("Feuil1")
> > > .PageSetup.PrintArea = .Range("A1:G40").Address
> > > For a = 1 To 10
> > > .Range("No_Facture") = Base + 1
> > > .PrintOut
> > > Next
> > > .PageSetup.PrintArea = ""
> > > End With
> > > '---------------------------
> > >
> > >
> > >
> > > "franck001" a écrit dans le message de
> > > news:
> > > Bonjour à tous,
> > >
> > > voici mon petit souci, j'ai un document type facture on va dire et je
> > > souhaite l'imprimer "X" fois à l'identique avec juste le numéro de facture
> > > qui change en s'incrémentant à partir d'une "base" que je lui fixe.
> > > Ex. j'imprime avec
> > > X
> > > Base= 1235
> > > 1ère facture qui sort avec numéro 1235 puis 1236 puis 1237 jusque 1244.
> > >
> > > Sauriez-vous m'aider ? Merci d'avance et si en plus cela pouvez être
> > > compatible Excel 97-2000 alors là ce serait la fête !
> > >
> > > ------(-_-)°zZz------
> > > Franck
> > > http://www.deschamps-web.com
> > >
> > >


Avatar
michdenis
'En supposant que ton numéro de facture 1235
'de départ est en A1 et que le nombre de copies est
'dans la cellule A2 de ta feuille

Tu copies cette procédure dans un module Standard
de ton classeur "Facture".

Prend le temps de lire la procédure et d'adapter ce qui
doit l'être selon ton application.
'-----------------------------------------------
Sub Imprimer_Facture()
Dim NbDeCopies As Integer
Dim NoDeDépart As Integer
On Error Resume Next
With Worksheets("Feuil1") 'Adapte le nom Feuil1
If .Range("A1") * .Range("A2") > 0 Then
'Adapte la plage de cellules à imprimer
.PageSetup.PrintArea = .Range("A1:G40").Address
NoDeDépart = .Range("A1") 'à modifier
NbDeCopies = .Range("A2") 'à modifier
Application.EnableEvents = False
For a = 1 To NbDeCopies
.Range("A1") = NoDeDépart + 1
.PrintOut
Next
Application.EnableEvents = True
.PageSetup.PrintArea = ""
Else
MsgBox "Le numéro de facture de départ et " & _
vbCrLf & "le nombre de copies n'est pas indiqué.," & _
vbInformation + vbOKOnly, "Attention"
End If
End With

'Si tu veux que la cellule A1 retienne
'le dernier numéro de facture imprimé, tu
'dois sauvegarder ton classeur.
ThisWorkbook.Save
End Sub
'-----------------------------------------------





"franck001" a écrit dans le message de
news:
Merci MichDenis mais étant un peu novice je vais te demander des détails:
Il faut que je fasse une macro c'est ça où je copie ton code ?
Ensuite comment je peux faire pour avoir une base et une quantité
d'impression variable que l'utilisateur pourra spécifier dans uen cellule
par
exemple ?
Dernier point [Range("No_Facture")] c'est la cellule où la macro va écrire
mon numéro de facture c'est cela ?

Merci pour ton aide

Franck

"michdenis" a écrit :

Une façon de faire :

Dans la procédure, tu remplaces le nom de la feuille par
celle de ton application. Il en va de même de la plage
de cellules à imprimer A1G40 et aussi tu spécifies où
tu inscrits le "No_Facture" dans ta feuille.
:
'---------------------------
Dim Base As Integer
Base = 1235
With Worksheets("Feuil1")
.PageSetup.PrintArea = .Range("A1:G40").Address
For a = 1 To 10
.Range("No_Facture") = Base + 1
.PrintOut
Next
.PageSetup.PrintArea = ""
End With
'---------------------------



"franck001" a écrit dans le message
de
news:
Bonjour à tous,

voici mon petit souci, j'ai un document type facture on va dire et je
souhaite l'imprimer "X" fois à l'identique avec juste le numéro de facture
qui change en s'incrémentant à partir d'une "base" que je lui fixe.
Ex. j'imprime avec
X
Base= 1235
1ère facture qui sort avec numéro 1235 puis 1236 puis 1237 jusque 1244.

Sauriez-vous m'aider ? Merci d'avance et si en plus cela pouvez être
compatible Excel 97-2000 alors là ce serait la fête !

------(-_-)°zZz------
Franck
http://www.deschamps-web.com




Avatar
franck001
Superbe code je te remercie c'est parfait.

------(-_-)°zZz------
Franck
http://www.deschamps-web.com


"michdenis" a écrit :

'En supposant que ton numéro de facture 1235
'de départ est en A1 et que le nombre de copies est
'dans la cellule A2 de ta feuille

Tu copies cette procédure dans un module Standard
de ton classeur "Facture".

Prend le temps de lire la procédure et d'adapter ce qui
doit l'être selon ton application.
'-----------------------------------------------
Sub Imprimer_Facture()
Dim NbDeCopies As Integer
Dim NoDeDépart As Integer
On Error Resume Next
With Worksheets("Feuil1") 'Adapte le nom Feuil1
If .Range("A1") * .Range("A2") > 0 Then
'Adapte la plage de cellules à imprimer
.PageSetup.PrintArea = .Range("A1:G40").Address
NoDeDépart = .Range("A1") 'à modifier
NbDeCopies = .Range("A2") 'à modifier
Application.EnableEvents = False
For a = 1 To NbDeCopies
.Range("A1") = NoDeDépart + 1
.PrintOut
Next
Application.EnableEvents = True
.PageSetup.PrintArea = ""
Else
MsgBox "Le numéro de facture de départ et " & _
vbCrLf & "le nombre de copies n'est pas indiqué.," & _
vbInformation + vbOKOnly, "Attention"
End If
End With

'Si tu veux que la cellule A1 retienne
'le dernier numéro de facture imprimé, tu
'dois sauvegarder ton classeur.
ThisWorkbook.Save
End Sub
'-----------------------------------------------





"franck001" a écrit dans le message de
news:
Merci MichDenis mais étant un peu novice je vais te demander des détails:
Il faut que je fasse une macro c'est ça où je copie ton code ?
Ensuite comment je peux faire pour avoir une base et une quantité
d'impression variable que l'utilisateur pourra spécifier dans uen cellule
par
exemple ?
Dernier point [Range("No_Facture")] c'est la cellule où la macro va écrire
mon numéro de facture c'est cela ?

Merci pour ton aide

Franck

"michdenis" a écrit :

> Une façon de faire :
>
> Dans la procédure, tu remplaces le nom de la feuille par
> celle de ton application. Il en va de même de la plage
> de cellules à imprimer A1G40 et aussi tu spécifies où
> tu inscrits le "No_Facture" dans ta feuille.
> :
> '---------------------------
> Dim Base As Integer
> Base = 1235
> With Worksheets("Feuil1")
> .PageSetup.PrintArea = .Range("A1:G40").Address
> For a = 1 To 10
> .Range("No_Facture") = Base + 1
> .PrintOut
> Next
> .PageSetup.PrintArea = ""
> End With
> '---------------------------
>
>
>
> "franck001" a écrit dans le message
> de
> news:
> Bonjour à tous,
>
> voici mon petit souci, j'ai un document type facture on va dire et je
> souhaite l'imprimer "X" fois à l'identique avec juste le numéro de facture
> qui change en s'incrémentant à partir d'une "base" que je lui fixe.
> Ex. j'imprime avec
> X
> Base= 1235
> 1ère facture qui sort avec numéro 1235 puis 1236 puis 1237 jusque 1244.
>
> Sauriez-vous m'aider ? Merci d'avance et si en plus cela pouvez être
> compatible Excel 97-2000 alors là ce serait la fête !
>
> ------(-_-)°zZz------
> Franck
> http://www.deschamps-web.com
>
>




Avatar
franck001
bonne solution aussi PapyJac, je vais tout de même plus me pencher sur celle
de MichDenis qui à l'avantage de ne pas avoir besoin de rafraichir par F9 à
chaque fois que je veux imprimer.

Merci bien

Franck

"Papyjac" a écrit :

Bonjour Franck


Faire le test sur un classeur vierge pour te roder

en A1¡+1 ; il te signale une référence circulaire A1

Menu Outil ; Options ; Onglet Calcul ; Coche Itération ; Nb maximal
d'itérations = 1 ; OK

ensuite tu fais F9 plusieurs fois : le numbre s'incrémente

Le problème pour amorcer la pompe à 1235, il faut écrire

A1=si(A1<1235;1235;A1+1)

et tu fais F9 plusieurs fois de suite : 1236, 1237 Etc...

Et la prochaine fois que tu veux éditer des factures, il faudra changer 1235
en 1500 par exemple



--
Papyjac


"franck001" a écrit :

> Cher Papy tout m'intéresse, surtout ce qui peut m'apporter une solution, donc
> compte sur moi pour tater à tout va mais à condition de m'expliquer lol
>
> Merci d'avance
>
> "Papyjac" a écrit :
>
> > Bonjour franck,
> >
> > Je tenterais bien une solution sans VBA, mais il faut tater les formules
> > circulaires, A1¡+1 ; le problème est d'amorcer la pompe
> >
> > Si ça t'interesse je peux développer
> >
> > --
> > Papyjac
> >
> >
> > "franck001" a écrit :
> >
> > > Merci MichDenis mais étant un peu novice je vais te demander des détails:
> > > Il faut que je fasse une macro c'est ça où je copie ton code ?
> > > Ensuite comment je peux faire pour avoir une base et une quantité
> > > d'impression variable que l'utilisateur pourra spécifier dans uen cellule par
> > > exemple ?
> > > Dernier point [Range("No_Facture")] c'est la cellule où la macro va écrire
> > > mon numéro de facture c'est cela ?
> > >
> > > Merci pour ton aide
> > >
> > > Franck
> > >
> > > "michdenis" a écrit :
> > >
> > > > Une façon de faire :
> > > >
> > > > Dans la procédure, tu remplaces le nom de la feuille par
> > > > celle de ton application. Il en va de même de la plage
> > > > de cellules à imprimer A1G40 et aussi tu spécifies où
> > > > tu inscrits le "No_Facture" dans ta feuille.
> > > > :
> > > > '---------------------------
> > > > Dim Base As Integer
> > > > Base = 1235
> > > > With Worksheets("Feuil1")
> > > > .PageSetup.PrintArea = .Range("A1:G40").Address
> > > > For a = 1 To 10
> > > > .Range("No_Facture") = Base + 1
> > > > .PrintOut
> > > > Next
> > > > .PageSetup.PrintArea = ""
> > > > End With
> > > > '---------------------------
> > > >
> > > >
> > > >
> > > > "franck001" a écrit dans le message de
> > > > news:
> > > > Bonjour à tous,
> > > >
> > > > voici mon petit souci, j'ai un document type facture on va dire et je
> > > > souhaite l'imprimer "X" fois à l'identique avec juste le numéro de facture
> > > > qui change en s'incrémentant à partir d'une "base" que je lui fixe.
> > > > Ex. j'imprime avec
> > > > X
> > > > Base= 1235
> > > > 1ère facture qui sort avec numéro 1235 puis 1236 puis 1237 jusque 1244.
> > > >
> > > > Sauriez-vous m'aider ? Merci d'avance et si en plus cela pouvez être
> > > > compatible Excel 97-2000 alors là ce serait la fête !
> > > >
> > > > ------(-_-)°zZz------
> > > > Franck
> > > > http://www.deschamps-web.com
> > > >
> > > >