selection et copie de cellules...

deudecos

XLDnaute Impliqué
Bonjour le forum,

Me voici de nouveau avec une question bete...(pas encore habitues ? :woohoo: )

Bon, en fait, j'ai une liste et je voudrais l'imprimer a la demande, mais voila, je la remplie au fur et a mesure, ce qui fait que le nombre de ligne change a chaque fois...
Dans l'idee, j'aurais souhaite pouvoir selectionner les lignes uniquement dont les cellules sont remplies pour les imprimer...
Mais ca je sais pas faire... quelqu'un peut il ou elle m'aider ?
Merci d'avance
Olivier :)
 
C

Canardo

Guest
Je suis en train de réfléchir à ton Pb. La question que je me pose est de savoir déja si tu veux supprimer ces lignes vides, ou conserver les espaces pour les remplir ultérieurement.

Si tu les supprimes, voici une macro qui fonctionne.
Elle ajoute 2 au bout des lignes vides, 1 au bout des autres en colonne 8, et remplit la col 9 de 1 à x, jusqu'à la dernière ligne utilisée, fait 1 tri sur Col 8, filtre et supprime les L vides, puis refait 1 tri sur col 9 pour remettre dans l'ordre.

( 'J'ai considéré ici que seules les colonnes A à H étaient remplies
il convient d'adapter la macro si il y a plus de colonnes)
Pour copier le texte, sélectionne avec la souris en glissant jusqu'en bas et fait Ctrl+C


Sub Tri_Lignes_Vides()

Range('B1').Select

Lignes = Range('A1').SpecialCells(xlLastCell).Row
Range('I2').Select
Range('I2').Offset(Lignes, 0).FormulaR1C1 = _
'=IF(AND(RC[-8]='''',RC[-7]='''',RC[-6]='''',RC[-5]='''',RC[-4]='''',RC[-3]='''',RC[-2]='''',RC[-1]=''''),2,1)'
Range('I2').Offset(Lignes, 0).Value = Range('I2').Offset(Lignes, 0).Value

Range('J2') = 1
Range('J2').Offset(Lignes, 0).FormulaR1C1.FillDown
Columns('A:J').Sort Key1:=Range('I2'), Order1:=xlAscending, Header:=xlYes

Range('a1').EntireRow.Insert
Range('a1:J1').FormulaR1C1 = 'zz'
Range('A1').CurrentRegion.Select
Selection.AutoFilter Field:=9, Criteria1:='2', Operator:=xlAnd
Selection.EntireRow.Delete
Range('a1').EntireRow.Delete
Columns('A:J').Sort Key1:=Range('J2'), Order1:=xlAscending, Header:=xlYes
Range('A2').Select

End Sub

Tiens-moi au courant

A+
 

deudecos

XLDnaute Impliqué
Bonsoir Canardo, le forum,

Merci de ta reponse Canardo, mais en fait, ma question etait mal posee je pense... :whistle:
Le probleme est plus simple que ca... :eek:
Je joint un fichier zip pour me faire mieux comprendre...

Merci encore pour ta reponse
Bonne soiree
Olivier [file name=imprim.zip size=44857]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/imprim.zip[/file]
 

Pièces jointes

  • imprim.zip
    2.1 KB · Affichages: 20
  • imprim.zip
    2.1 KB · Affichages: 19
  • imprim.zip
    2.1 KB · Affichages: 19
C

Canardo

Guest
Pardon, STOP ! ARRETE TOUT ! J'ai trouvé beaucoup mieux, plus simple et tout.

Sub Tri_Lignes_Vides()
'J'ai considéré ici que seules les colonnes A à H étaient remplies
'il convient d'adapter la macro si il y a plus de colonnes

Range('B1').Select

Lignes = Range('A1').SpecialCells(xlLastCell).Row
Range('I1').Select
Range(Range('I1'), Range('I1').Offset(Lignes, 0)).FormulaR1C1 = _
'=IF(AND(RC1='''',RC2='''',RC3='''',RC4='''',RC5='''',RC6='''',RC7='''',RC8=''''),1,2)'
Range('I1').Offset(Lignes, 0).Value = Range('I1').Offset(Lignes, 0).Value

Range('J1') = 1
Range('J1').Offset(Lignes, 0).FormulaR1C1.FillDown

Range('A1').Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Sort Key1:=Range('I1'), Order1:=xlAscending, Key2:=Range('J1') _
, Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
Range('K1').FormulaR1C1 = '=COUNTIF(C[-2],1)'
A_Sup = Range('K1').Value

Range(Range('I1'), Range('I1').Offset(A_Sup, 0)).Delete
'Columns('I:J').Delete ' Pour supp les col I et J, enlever l'apostrophe en début de ligne
Range('A1').Select

End Sub
 
C

Canardo

Guest
:angry: Comme dab, on demande des trucs en charabia, SANS FICHIER, pis quand les mecs ont bossé, on dit 'Ah Bin Non, j'mi suis trompé, ti as pas compris, tiens, vla mon fichier, ti vas comprendre'

Ach, Fichier, alors!

donc j'ai toujours pas compris ton problème.

Si tu veux imprimer jusqu'à la dernière ligne renseignée, c'est le cas; je t'ai réduit un peu la dernière colonne, et tout rentre dans une page; j'ai aussi coché la case quadrillage pour que ce soit plus lisible, et j'ai aussi indiqué les lignes à répéter en haut, pour le jour o% tu auras plus de lignes que pour une page. A part ça, je n'ai vu aucune lignes vides dans ton tableau??!??( juste celle avant les totaux)

Alors esplique le pb??

Si il s'agit de vérifier si certaines col sont vides, et de les masquer pour l'impression, c'est totalement différent.

.........
 
C

Canardo

Guest
Je te renvoie le fichier arrangé pour que tu juges. [file name=imprim retour_20050515230904.zip size=39396]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/imprim retour_20050515230904.zip[/file]
 

Pièces jointes

  • imprim retour_20050515230904.zip
    38.5 KB · Affichages: 20

deudecos

XLDnaute Impliqué
Re Canardo et le forum,

De toute evidence une meprise prends place entre nous...
Ma demande est beaucoup plus simple qu'il n'y parait...
J'ai une liste a imprimer, cette liste evolue de jour en jour, et je souhaite, par exemple a la fin de chaque semaine, l'imprimer.
Hors, cette liste n'a jamais le meme nombre de lignes. Je voulais donc, en passant par une macro, determiner la zone a imprimer. C'est aussi simple que ca, pas question d'eliminer la moindre cellule, juste d'imprimer sans me retrouver avec 15 pages ne contenants que du quadrillage.
Desole pour le derangement, mais remarques que de toute facon, tu n'as pas travaille pour rien, puisque ce que tu as fais precedement va me servir pour une autre application.
En tout cas, merci pour tout.
Bonne journee
Olivier
 
C

Canardo

Guest
Salut

J'ai encore retravaillé un peu ma macro et ton fichier pour que ce soit parfait.

Voila la macro ds sa dernière mouture, et ci joint le fichier avec la macro que j'au mise sur la feuille 2, et dans ton module.

Pour ce qui est des lignes vides éventuelles que tu aurais en fin de doc et qui voudraient s'imprimer, il te suffit d'aller à la dernière ligne après les totaux, d'appuyer sur Ctrl+ Maj+FIN et de supprimer les lignes entières de la sélection puis d'enregistrer, évent mm de fermer.

en rouvrant le classeur, fait Ctrl+fin, et tu verras que tu vas seulemnt à lla dernière ligne de données. CQFD [file name=imprim retour OK_20050516072343.zip size=44623]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/imprim retour OK_20050516072343.zip[/file]
 

Pièces jointes

  • imprim retour OK_20050516072343.zip
    43.6 KB · Affichages: 20

Discussions similaires

Réponses
5
Affichages
157

Statistiques des forums

Discussions
312 389
Messages
2 087 935
Membres
103 678
dernier inscrit
bibitm