Tri complexe pour impression

ufernet

XLDnaute Junior
Bonjour,

Je souhaite imprimer au moyen d'un publipostage Word un tableau d'excel. Mon imprimante ne fait pas le A6 (4 fois plus petit que le A4). J'imprime 4 fiches par feuille A4 puis je les coupe avec un massicot. Le problème c'est que chaque enregistrement est différent et que l'ordre est primordial. Je voudrais trier mon tableau, qui a un nombre variable de ligne, pour que les feuilles s'impriment dans l'ordre qui me convient. J'ai mis un exemple dans le tableau joint.

Sur l'onglet Avant : le tableau tel qu'il est pour cette semaine. J'ai rajouté une colonne "Numéro d'enregistrement" de 1 à n (647 cette semaine); puis une colonne "Numéro pour le Tri" ou j'ai mis une formule: N2+4 et copie vers le bas (4 parcequ'il y a 4 fiches, soit une ligne du tableau, par feuille A4). Lorsque j'arrive à l'enregistrement 625 j'ecris 2 puis à l'enregistrement 626 j'écris 3 puis à l'enregistrement 627 j'écris 4 et c'est fini. Je fais un copier coller en valeur de la colonne "Numéro pour le tri" Je fais le tri sur cette colonne et c'est bon. J'ai mis le résultat dans l'onglet Aprés.
C'est un peu long et le risque d'erreur est important. L'idéal serait une formule dans la colonne "Numéro pour le tri" ou une macro qui aboutisse au même résultat. Sachant que le nombre de ligne est variable d'une semaine sur l'autre et qu'il faut 1 heure pour tout trier si on imprime le tableau tel quel.

J'ai essayé une formule mais je n'arrive pas à déterminer dans quelle cellule il faut repartir à 2; 3 ou 4.

Merci de votre aide.
 

Pièces jointes

  • Tri complexe.xlsx
    110.6 KB · Affichages: 49

PMO2

XLDnaute Accro
Re : Tri complexe pour impression

Bonjour,

Une piste avec le code ci-dessous à copier dans un module standard
Code:
Sub NumeroPourTri()
Dim S As Worksheet
Dim R As Range
Dim NbLig&
Dim Tranche&
Dim Pas&
Dim i&
Dim cpt&
Dim T()
ActiveSheet.Copy after:=Sheets(Sheets.Count)
Set S = ActiveSheet
Set R = S.[a1].CurrentRegion
NbLig& = R.Rows.Count - 1
Tranche& = NbLig& \ 4
If Tranche& * 4 < NbLig& Then Tranche& = Tranche& + 1
ReDim T(1 To NbLig&, 1 To 1)
Pas& = 1
For i& = 1 To NbLig&
  T(i&, 1) = Pas&
  Pas& = Pas& + 4
  If i& Mod Tranche& = 0 Then
    cpt& = cpt& + 1
    Pas& = cpt& + 1
  End If
Next i&
Set R = S.Range(S.Cells(2, R.Columns.Count + 1), S.Cells(NbLig& + 1, R.Columns.Count + 1))
R = T
End Sub

Sélectionnez la feuille à traiter puis lancez la macro "NumeroPourTri". Le résultat s'affiche dans une nouvelle feuille.

Je joins un classeur exemple pour plus de facilité.
 

Discussions similaires

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972