Incrémenter un nombre dans une feuille Excel
Résolu
halfernet
Messages postés
305
Statut
Membre
-
halfernet Messages postés 305 Statut Membre -
halfernet Messages postés 305 Statut Membre -
Bonjour,
Je suis en train de créer des fiches techniques pour mon travail, et j'aurai besoin d'incrémenter le n° de chaque fiches à chaque fois que j'imprime, il y a 3 fiches par feuilles excel, j'ai essayé des macros pour d'autres exemples mais il ne s'appliquent pas a moi.
En gros : les cellules K1, AB1 et AS1 possèdent respectivement le numéro "E101", "E102" et "E103".
Si j'imprime,
les cellules K1, AB1 et AS1 devraient posséder respectivement le numéro "E104", "E105" et "E106" et ainsi de suite...
Question subsidiaire (qui n'est pas primordiale) : Peut-on imprimer 200 exemplaires dans cette optique là, sans que sa n'imprime les 200 pages identiques ?
Je suis en train de créer des fiches techniques pour mon travail, et j'aurai besoin d'incrémenter le n° de chaque fiches à chaque fois que j'imprime, il y a 3 fiches par feuilles excel, j'ai essayé des macros pour d'autres exemples mais il ne s'appliquent pas a moi.
En gros : les cellules K1, AB1 et AS1 possèdent respectivement le numéro "E101", "E102" et "E103".
Si j'imprime,
les cellules K1, AB1 et AS1 devraient posséder respectivement le numéro "E104", "E105" et "E106" et ainsi de suite...
Question subsidiaire (qui n'est pas primordiale) : Peut-on imprimer 200 exemplaires dans cette optique là, sans que sa n'imprime les 200 pages identiques ?
3 réponses
-
Bonjour,
Une proposition en vba selon ce que j'ai compris :Private Sub Workbook_BeforePrint(Cancel As Boolean) Dim nb As Long, i As Long, c As Long, sh As Worksheet Dim listeCell(), nbCell As Long, part1 As String, part2 As Long listeCell = Array("C1", "E1", "G1") nbCell = UBound(listeCell) + 1 Set sh = ActiveSheet If sh.Name <> "Feuil1" Then Exit Sub Cancel = True On Error GoTo suite nb = CInt(InputBox("Nombre d'exemplaires à imprimer ", "Impression")) On Error GoTo 0 Application.EnableEvents = False For i = 1 To nb ' imprimer feuille sh.PrintOut Copies:=1, Collate:=True ' n° suivants For c = 0 To nbCell - 1 part1 = Left(sh.Range(listeCell(c)), 1) part2 = CInt(Mid(sh.Range(listeCell(c)), 2)) sh.Range(listeCell(c)).Value = part1 & part2 + nbCell Next c Next i suite: Application.EnableEvents = True End Sub
Les cellules à modifier sont à déclarer dans le array listeCell.
Le contenu est sensé être constitué d'un caractère (quelconque), et d'une partie numérique à incrémenter (après impression) du nombre de cellules listées (ici donc +3)
Le nombre d'exemplaire est demandé (sans contrôle du maxi vu que tu as évoqué 200 possible... mais il faudrait l'envisager).
L'imprimante doit être choisie avant de lancer la macro.
exemple : Classeur1.xls
eric -
-
Re : Parfait, c'est au poil ! je te remercie grandement.