Suite chronologique sur plusieurs colonne dans une même page
Bonjour, j'ai un petit soucis, gros pour moi
Je voudrais faire d'un groupe de deux colonne (A la référence et B le prix) qui est sur 474 pages, sur 3 fois moins de pages, c'est a dire que quand j'arrive an bas de pages les référence et prix ce décale sur les colonnes de droites.
Je ne sais pas trop comment expliqué, je ne sais pas si c'est clair
En fait je veut les colonnes A et B ce suivent en C et D et E et F en chronologique a chaque fin de page.
Merci a vous
Mon exemple de fichier:
Bonjour,
Si je comprend bien tu veux que tes donner change de colonne afin de rentrer sur une seul page à l'impressions ?
Si cela est le cas tu peux ajuster ton impression dans la mise en page exel. Sur 2012 :
- Fichier
- Imprimer
- Mise en page
- ajuster
A ce moment tu définie sur combien de pages tu veux ajuster ton impression.
Mais si tu veux faire en sorte que ta colonne A devienne C et ta colonne B devient D et ainsi de suite a chaque fois que la précédente a dépasser ta zone d'impression en longueur, je ne sais pas comment faire en automatique.
En espérant t'avoir aider !
ps : Le fait d'aller dans les options de mise ne page va afficher des cadre en pointiller sur ta page, chaque cadre correspond a 1 feuille imprimer avec tes configuration d'impression actuelle.
Bonjour,
Une proposition à étudier et à adapter.
Ctrl+w pour lancer la procédure
Cdlt.
Option Explicit
Public Sub Mise_en_forme()
' Ctrl+w pour lancer la procédure
Dim Wss As Worksheet
Dim Dl As Long, Dl1 As Long
Dim lig As Long, col As Integer
Dim Nbp As Long, x As Long
Dim Plg As Range
10 With Application
20 .DisplayAlerts = False
30 .ScreenUpdating = False
40 End With
50 Set Wss = Worksheets("Feuil1")
60 On Error Resume Next
70 Worksheets("Feuil2").Delete
80 On Error GoTo 0
90 Application.DisplayAlerts = True
100 ActiveWorkbook.Worksheets.Add after:=Wss
110 ActiveSheet.Name = "Feuil2"
120 With Wss
' derligne non vide feuil1
130 Dl = .Range("A" & Rows.Count).End(xlUp).Row
' nombre de pages à l'impression
140 Nbp = .PageSetup.Pages.Count
' nombre de lignes par page
150 x = Application.RoundUp(Dl / Nbp, 0)
' derligne non vide feuil2
160 Dl1 = 1
170 col = 1
180 For lig = 1 To Dl Step x
190 Set Plg = .Range(.Cells(lig, 1), .Cells(lig, 1).Resize(x, 2))
200 Plg.Copy Destination:=Cells(Dl1, col)
210 col = col + 2
220 If col = 7 Then ' ( pour 4 colonnes = 9)
230 col = 1
240 Dl1 = Range("A" & Rows.Count).End(xlUp).Row + 1
250 End If
260 Next
270 End With
280 Set Wss = Nothing: Set Plg = Nothing
End Sub
Le top!! Ca marche
Vraiment merci beaucoup!!!!!!!!
Re,
Penses à clore le sujet.
A bientôt. Cdlt
Excellente macro, seulement soucis de dernière minutes, une fois la macro exécute je souhaiterais nommé mes colonne et imprimé les titres et de-lors tous se décale d'une ligne sur l'ensemble du fichier, y'a t il un remède?
Encore merci
Bonjour,
Copier code ci-dessous en lieu et place du précédent.
Ne pas mettre d'entêtes de colonne. La macro s'en charge et formate un semblant de mise en page (lignes à répéter).
Cdlt
Option Explicit
Public Sub Mise_en_forme()
' Ctrl+w pour lancer la procédure
Dim Wss As Worksheet, wsd As Worksheet
Dim Dl As Long, Dl1 As Long
Dim lig As Long, col As Integer
Dim Nbp As Long, x As Long
Dim Plg As Range
10 With Application
20 .DisplayAlerts = False
30 .ScreenUpdating = False
40 End With
50 Set Wss = Worksheets("Feuil1")
60 On Error Resume Next
70 Worksheets("Feuil2").Delete
80 On Error GoTo 0
90 Application.DisplayAlerts = True
100 ActiveWorkbook.Worksheets.Add after:=Wss
110 ActiveSheet.Name = "Feuil2"
120 With Wss
' derligne non vide feuil1
130 Dl = .Range("A" & Rows.Count).End(xlUp).Row
' nombre de pages à l'impression
140 Nbp = .PageSetup.Pages.Count
' nombre de lignes par page
150 x = Application.RoundUp(Dl / Nbp, 0)
' derligne non vide feuil2
160 Dl1 = 1
170 col = 1
180 For lig = 1 To Dl Step x
190 Set Plg = .Range(.Cells(lig, 1), .Cells(lig, 1).Resize(x, 2))
200 Plg.Copy Destination:=Cells(Dl1, col)
210 col = col + 2
220 If col = 7 Then ' ( pour 4 colonnes = 9)
230 col = 1
240 Dl1 = Range("A" & Rows.Count).End(xlUp).Row + 1
250 End If
260 Next
270 End With
280 Rows("1:1").Insert
290 Range("A1:F1") = Array("Code", "Prix", "Code", "Prix", "Code", "Prix")
300 With ActiveSheet.PageSetup
310 .PrintTitleRows = "$1:$1"
320 .PrintTitleColumns = ""
330 End With
340 Set Wss = Nothing: Set Plg = Nothing
End SubTout a fonctionné
Merci beaucoup!