Ah ! ....
T'aurais pu modifier ton message plutôt que de tout refaire. Spa grave.
--------------------------
Bon, alors il s'agit de ne pas faire n'importe quoi.
Relis le code de snakezap, on y utilise
InputBox, pas
TextBox.
Pis c'est quoi ce bordel ?
Code:
Sheets("Revue de Contrat" ).Copy After:=Sheets(5).Copy = X, Collate:=True
:??:
Au début de chacun de tes modules, écris la ligne suivante. Cela va restreindre la permissivité du langage VB, mais ce sera d'un grand bénéfice.
--------------------------
■
Etape 1
Avant de s'emmerder avec des saisies, on va faire simple. Soit N le nombre de copies voulues.
Code:
Dim I As Integer
Dim N As Integer
N = 3
For I = 1 To N
Sheets("Revue de Contrat").Copy After:=Sheets("Revue de Contrat")
Next
Et voilà !
Bon, moi je n'aime pas les
sheets génériques (feuilles quelconques). Comme j'aime à savoir ce que je fais, j'utilise des
Worksheets (feuilles de calcul).
Code:
Dim I As Integer
Dim N As Integer
N = 3
For I = 1 To N
Worksheets("Revue de Contrat").Copy After:=Worksheets("Revue de Contrat")
Next
■
Etape 2
Bon, maintenant, on se dit que ce serait bien mieux de mettre les nouvelles feuilles à la fin.
Comment savoir quelle est la dernière feuille ? Existe-t-il un
Sheets.LastSheet ?
Ben non. Va falloir le faire soi-même. En revanche, il existe un
Sheets.Count.
On a donc le nombre de feuilles totale. En plus, une feuille peut être désignée par son nom
Sheets("Revue de Contrat"), ou par son numéro
Sheets(12).
Pratique non ? Ben si, regarde. La dernière feuille est :
Sheets(Sheets.Count).
Stro facile :sol:
Code:
Dim I As Integer
Dim N As Integer
N = 3
For I = 1 To N
Worksheets("Revue de Contrat").Copy After:=Sheets(Sheets.Count)
Next
■
Etape 2
Bon, maintenant qu'on sait faire pour N=3, on va essayer pour N quelconque.
Soit on pose la question à l'utilisateur (cf. code de snakezap), soit on ramasse l'info sur la feuille.
Dans tous les cas, moi j'en fous, je traite le cas général :
Code:
Sub Photocopieuse(sh As WorkSheet, N As Integer)
Dim I As Integer
For I = 1 To N
sh.Copy After:=Sheets(Sheets.Count)
Next
End Sub
Maintenant, il suffit d'appeler correctement notre photocopieuse.
En "dur" :
Code:
Photocopieuse Worksheets("Revue de Contrat"), 3
En "interactif" :
Code:
Sub PhotocopieSaisie()
Dim reponse As String
Do
reponse = InputBox("Nombre de copies", "MultiCopie")
If reponse = "" Then Exit Sub
Loop While Not IsNumeric(reponse)
Photocopieuse Worksheets("Revue de Contrat"), CInt(X)
End Sub
snakezap, profites-en pour corriger ton code horrible et bencale.
En VB, on utilise des doubles-quotes pour les chaînes.
Ta gestion des erreurs est abominable : tu laisses l'application se planter au lieu de tester tes variables.
Et ton étiquette s'appelle
gestionErreur, beurk ! (Spice de javaiste, va ! :na: )
[Avant de t'énerver tout rouge, évalue le niveau d'ironie de mon commentaire
]
En "automatique" :
Code:
Sub PhotocopieAutomatique()
If IsNumeric(Range("V5").Value) Then Photocopieuse Worksheets("Revue de Contrat"), Range("V5").Value
End Sub
C'est ce que tu attendais ?