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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
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
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" <sourianebad@bigfoot.com> wrote in message
news:1150402387.542122.175030@h76g2000cwa.googlegroups.com...
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.
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
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
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.
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
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
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.
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
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,
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!
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!