Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Trier colonne puis imprimer

5 réponses
Avatar
Souriane
Bonjour!

Une question un peu particuli=E8re.

J'ai Excel 2002

J'ai un document excel qui continent un inventaire de tous les meubles
de l'entreprise.

Chaque en-t=EAte de colonne porte le nom coll=E8gue qui occupe le local.
J'en ai plusieurs.
Chaque en-t=EAte de ligne porte le nom d'un meuble. J'en ai environ
1000.
Il y a un chiffre vis-=E0-vis chaque meuble que contient chaque local

Je voudrais faire ceci:

1=2E Trier la colone du 1er coll=E8gue pour que je n'aie en haute de la
liste seulement les meubles qu'il y a dans son local.
2=2E D=E9finir comme zone d'impression juste la colonne de ce premier
coll=E8gue avec juste les meubles qu'il y a dans son local.
3=2E Imprimer cette liste
4=2E Passer ensuite au 2e coll=E8gue et recommencer.

Infos suppl=E9mentaire:
Le nom des coll=E8gues se trouvent de B3 =E0 CZ3
Le nom des meubles se trouvent de A5 =E0 A113.

Comment puis-je automatiser le tout?

Merci!

Souriane

5 réponses

Avatar
kolann
J'ai fait une macro semblable pour mon travail

il faut masquer toutes les lignes
puit ensuite tu peut utilisé la macro ci dessou avec un userform
elle fait apparaitre les lignes que tu veux

Sub selectligne(zcol As Long, znomel As String)
'zcol est le numero de colone ou appliquer la macro
'znomel est le nom ou le numéro pour faire apparaitre les lignes
lig = Range("Q1") - 1
fin = Range("Q1") + Range("Q2")


lignestart:
lig = lig + 1
If lig = fin Then GoTo lignefin Else GoTo ligne1

ligne1:
If Cells(lig, zcol) = znomel Then GoTo ligne2 Else GoTo lignestart

ligne2:
Rows(lig).Select
Selection.EntireRow.Hidden = False
GoTo lignestart

lignefin:
End Sub
Avatar
docm
Bonjour Souriane.

Sub ImprimerParColonnes()
'Le nom des collègues se trouvent de B3 à CZ3
'Le nom des meubles se trouvent de A5 à A113.
ReDim colonnes(0)
Range("A5:CZ113").Select

fin = Selection.Rows.Count
debut = 2
ligne1 = Selection.Row

memPrintArea = ActiveSheet.PageSetup.PrintArea

ReDim colonnes(fin)
For i = debut To fin
colonnes(i) = 12 'Columns(i).ColumnWidth
Columns(i).ColumnWidth = 0
Next

For i = debut To fin
Columns(i).ColumnWidth = colonnes(i)
derniereligne = Columns(i).Find("*", Cells(1, i), , , , xlPrevious).Row
Selection.Sort Key1:Îlls(ligne1, i), Order1:=xlAscending,
Header:=xlNo, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
derniereligne = Columns(i).Find("*", Cells(1, i), , , , xlPrevious).Row
ActiveSheet.PageSetup.PrintArea = "$A$1:" & Mid(Cells(1, i).Address, 1, 2
+ 1 * -(i > 26)) & derniereligne
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Columns(i).ColumnWidth = 0
Next
For i = debut To fin
Columns(i).ColumnWidth = colonnes(i)
Next
ActiveSheet.PageSetup.PrintArea = memPrintArea

End Sub

Cordialement

docm

"Souriane" wrote in message
news:
Bonjour!

Une question un peu particulière.

J'ai Excel 2002

J'ai un document excel qui continent un inventaire de tous les meubles
de l'entreprise.

Chaque en-tête de colonne porte le nom collègue qui occupe le local.
J'en ai plusieurs.
Chaque en-tête de ligne porte le nom d'un meuble. J'en ai environ
1000.
Il y a un chiffre vis-à-vis chaque meuble que contient chaque local

Je voudrais faire ceci:

1. Trier la colone du 1er collègue pour que je n'aie en haute de la
liste seulement les meubles qu'il y a dans son local.
2. Définir comme zone d'impression juste la colonne de ce premier
collègue avec juste les meubles qu'il y a dans son local.
3. Imprimer cette liste
4. Passer ensuite au 2e collègue et recommencer.

Infos supplémentaire:
Le nom des collègues se trouvent de B3 à CZ3
Le nom des meubles se trouvent de A5 à A113.

Comment puis-je automatiser le tout?

Merci!

Souriane
Avatar
JB
Bonjour,

Imprime chaque colonne sans les lignes vides:

http://cjoint.com/?grhrD0Ftr2

Sub imprime()
Cells.EntireRow.Hidden = False
ActiveSheet.PageSetup.PrintTitleColumns = "$A:$A"
n = Range("A5").CurrentRegion.Rows.Count
Range("B3").Select
Do While ActiveCell <> ""
Cells.EntireRow.Hidden = False
Range(ActiveCell, ActiveCell.Offset(n + 1, 0)).Select
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
ActiveSheet.PageSetup.PrintArea = Selection.Address
ActiveSheet.PrintPreview ' ActiveSheet.Printout
ActiveCell.Offset(0, 1).Select
Loop
End Sub

Cordialement JB


Bonjour!

Une question un peu particulière.

J'ai Excel 2002

J'ai un document excel qui continent un inventaire de tous les meubles
de l'entreprise.

Chaque en-tête de colonne porte le nom collègue qui occupe le local.
J'en ai plusieurs.
Chaque en-tête de ligne porte le nom d'un meuble. J'en ai environ
1000.
Il y a un chiffre vis-à-vis chaque meuble que contient chaque local

Je voudrais faire ceci:

1. Trier la colone du 1er collègue pour que je n'aie en haute de la
liste seulement les meubles qu'il y a dans son local.
2. Définir comme zone d'impression juste la colonne de ce premier
collègue avec juste les meubles qu'il y a dans son local.
3. Imprimer cette liste
4. Passer ensuite au 2e collègue et recommencer.

Infos supplémentaire:
Le nom des collègues se trouvent de B3 à CZ3
Le nom des meubles se trouvent de A5 à A113.

Comment puis-je automatiser le tout?

Merci!

Souriane


Avatar
JB
Sub imprime()
ActiveSheet.PageSetup.PrintTitleColumns = "$A:$A"
n = Range("A5").CurrentRegion.Rows.Count
Range("B3").Select
Do While ActiveCell <> ""
Cells.EntireRow.Hidden = False
ActiveCell.Resize(n + 2).Select
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
Selection.PrintPreview ' Selection.Printout
ActiveCell.Offset(0, 1).Select
Loop
Cells.EntireRow.Hidden = False
End Sub

JB

Bonjour!

Une question un peu particulière.

J'ai Excel 2002

J'ai un document excel qui continent un inventaire de tous les meubles
de l'entreprise.

Chaque en-tête de colonne porte le nom collègue qui occupe le local.
J'en ai plusieurs.
Chaque en-tête de ligne porte le nom d'un meuble. J'en ai environ
1000.
Il y a un chiffre vis-à-vis chaque meuble que contient chaque local

Je voudrais faire ceci:

1. Trier la colone du 1er collègue pour que je n'aie en haute de la
liste seulement les meubles qu'il y a dans son local.
2. Définir comme zone d'impression juste la colonne de ce premier
collègue avec juste les meubles qu'il y a dans son local.
3. Imprimer cette liste
4. Passer ensuite au 2e collègue et recommencer.

Infos supplémentaire:
Le nom des collègues se trouvent de B3 à CZ3
Le nom des meubles se trouvent de A5 à A113.

Comment puis-je automatiser le tout?

Merci!

Souriane


Avatar
Souriane
Wow! Vous m'épatez tous! Bien que je débute l'apprentissage du
language VB, je suis quand même émerveillée des possibilités!

J'ai retenu la première réponse de JB car elle semblait la plus
courte. Elle fonctionne à merveille sauf que j'ai du enlever une
ligne pour qu'elle fonctionne. J'ai changé :

ActiveSheet.PrintPreview ' ActiveSheet.Printout

pour:
ActiveSheet.Printout

Et ça fonctionne à m'époustouffler! Quelque chose qui m'aurait pris
des heures à réaliser sans cette macro!

Un gros merci!

Souriane



Bonjour,