Action sur plusieurs plage fixe

L

LAURA15

Guest
Bonjour
J'ai un classeur de 12 onglets un onglets par moi et sur chaque onglet, j'ai vingt 28 plages de 30 lignes séparer par 5 lignes auxquelles je ne veut pas toucher
Le problemes c'est que j'ai besoin de faire certaines operations sur ces plages et les nommer est très fastidieux

par exemple rien que pour une feuille il faut que je fasse ca qu'il fautdrait que je renouvelle pour chaque onglet janvier février etc
Un peu fastidieux je pense qu'il doit y avoir une autre methode

Sub HautZeroSiCvide()

For Each c In Range
('A3:O32,A38:O67,A73:O102,A108:O137,A143:O172,A178:O207,A213:O242,A248:O277,A283:O312,A318:O347,A353:O382,A388:O417,A423:O452,A458:O487,A493:O522,A528:O557,A563:O592,A598:O627,A633:O662,A668:O697,A703:O732,A738:O767,A773:O802,A808:O837,A843:O872,A878:O907,A913:O942,A948:O977')

If Application.CountA(c.EntireRow) = 0 Then Rows(c.Row).RowHeight = 0
Next c

End Sub

Merci
 

Hervé

XLDnaute Barbatruc
bonsoir laura

d'apres tes plages, tu as 29 lignes séparer de 6 lignes :eek:

Je suis vraiment pas sur d'avoir compris ce que tu voulais faire, mais les codes suivants masquent les lignes par série de 29 lignes toutes les 35 lignes. (c'est clair ce que je dis là :sick: ?)

le deuxième code affiche toutes le lignes.


Sub Feuil2_Bouton1_QuandClic()
'pour masquer
Dim i As Integer
Dim ws As Worksheet

For Each ws In Worksheets
       
For i = 3 To 977 Step 35
                ws.Rows(i & ':' & i + 29).Hidden =
True
       
Next i
Next ws
End Sub
'______________________________________________________
Sub Feuil2_Bouton2_QuandClic()
'pour afficher
For Each ws In Worksheets
        ws.Rows.Hidden =
False
Next ws
End Sub


salut
 
L

LAURA15

Guest
Oui hervé pas facile a expliquer en fait j'ai bien 30 lignes puis 5 lignes qui me servent pour les 3 pour les totaux et 2 pour les entetes
car si je compte mes plage a3 vers A 32 a bein 30 libnes

Enfait j'ai besoin de faire ces sauts sur les 12 onglets pour 3 raisons
a des moemnts differents j'ai donc besoin de 3 macro qui exprime ces avec des actiosn differentes

1) faire un clear des données sur ces plages avnt chaque importation
sur celles c'est sur les lignes non vierges

2) a contrario j'ai besoin d'une marcro avnt impression qui mets les lignes vierges a hauteur zero

3) ensuite la meme mais qui remet les lignes vierges a 12.75 après impression

J'ai joint le tableau

merci
 
L

LAURA15

Guest
il était trop gros j'ai juste mis un onglet janvier [file name=tableau_step.zip size=42680]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/tableau_step.zip[/file]
 

Pièces jointes

  • tableau_step.zip
    41.7 KB · Affichages: 19

Hervé

XLDnaute Barbatruc
Salut laura

Tu as pas du tester le code que je t'ai donné, car apparement il fait ce que tu demandes. :)

Pour cacher des lignes, on ne met pas la hauteur à zéro, on les masques tout simplement (hidden).

J'ai ajouté un code pour le clear des plages.

salut


[file name=tableaustep.zip size=37266]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/tableaustep.zip[/file]
 

Pièces jointes

  • tableaustep.zip
    36.4 KB · Affichages: 15
L

LAURA15

Guest
Super herve pour le clear ca fonctionne impec
Mais Si j'ai bien compris ca fonctionne pour effacer ou intervenir sur toutes les lignes
Par contre pour le cas de l'impression c'est vrai que c'est mieux cacher que 0 mais je pense qu'il faut rajouter un if pour dire que c'est juste les lignes vides que je veux cacher
Par deduction avec ma précédente macro j'ai fait ca mais ca ne fonctionne pas

Sub Bouton2_QuandClic()
Dim i As Integer
Dim ws As Worksheet

For Each ws In Worksheets
If ws.Name <> 'BASE_RECETTES' Then
For i = 3 To 977 Step 35
If Application.CountA(i.EntireRow) = 0 Then ws.Rows(i & ':' & i + 29).Hidden = True
Next i
End If
End If

Next ws
End Sub
 
L

LAURA15

Guest
Un phenomene aussi que je ne comprends pas pour le clear par contre
Apparement cela m'enleve le format date de la colonne B
Alors que si je les enlève a la main ca ne le fait pas
Y a t'il un moyen de ne pas enlever ce format date ou doit t'on faire une macro pour le remttre après le clear

Merci
 

Hervé

XLDnaute Barbatruc
re laura

Si tu ne veux masquer que les lignes vides, il va te falloir tester toutes les lignes entre les lignes 3 et 977, cette macro le fait :

Sub Bouton1_QuandClic()
Dim ws As Worksheet
Dim i As Integer

For Each ws In Worksheets
&nbsp; &nbsp;
If ws.Name <> 'BASE_RECETTES' Then
&nbsp; &nbsp; &nbsp; &nbsp;
For i = 3 To 977
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
If Application.WorksheetFunction.CountA(ws.Rows(i)) = 0 Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ws.Rows(i).Hidden =
True
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp; &nbsp; &nbsp;
Next i
&nbsp; &nbsp;
End If
Next ws
End Sub

Par contre, le traitement risque d'etre très long (plus de 11000 lignes sur les douzes onglets) ca va prendre un moment.

On peut peu être raccourcir ce traitement en ne testant que la ligne se trouvant sous les entetes, si celle ci est vide, on considere que tout le bloc de ligne est vide et on masque le bloc en entier.

Par contre si celle-ci n'est pas vide alors on traite ligne par ligne à l'interieur du bloc.

Cette deuxième macro fait ca :

Sub Bouton2_QuandClic()
Dim i As Integer
Dim j As Integer
Dim ws As Worksheet

For Each ws In Worksheets
&nbsp; &nbsp;
If ws.Name <> 'BASE_RECETTES' Then
&nbsp; &nbsp; &nbsp; &nbsp;
For i = 3 To 977 Step 35
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
If Application.WorksheetFunction.CountA(ws.Rows(i)) <> 0 Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
For j = i To i + 29
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
If Application.WorksheetFunction.CountA(ws.Rows(j)) = 0 Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ws.Rows(j).Hidden =
True
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Next j
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Else
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ws.Rows(i & ':' & i + 29).Hidden =
True
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp; &nbsp; &nbsp;
Next i
&nbsp; &nbsp;
End If
Next ws
End Sub


Je te laisse le soin de tester ces deux méthodes (pour la première méthode, ne teste que sur une feuille d'abord, ou alors tu va avoir le temps de te faire un thé :) )

salut
 
L

LAURA15

Guest
Encore merci vraiment , ca m'aides beaucoup j'aurais fait une véritable usine a gaz sans toi,
Ca merites au minimum une boite de chocolat a la fin de l'année :)
Faudra me donner l'adresse sans rire ....
Sinon la 2eme macro non c en'est pas long du tout quelques secondes
meme pas le temps de faire un thé snif :)
Pour Clearcontents c Ok
Si j'ai bien compris il y a plusieurs clear
Encore beaucoup beaucoup de finesses a apprendre mais vraiment j'ai avancé a grand pas avec tout ca j'ai plein de cas de figure
a explorer

J'attends l'adresse si si c vrai
Laura
 

Hervé

XLDnaute Barbatruc
bonsoir laura :)

désolé pour le thé ;)

Je ne suis pas très chocolat et ma femme m'a mis au régime, mais c'est super sympa.

Les seules récompenses que l'on recoient sur XLD c'est un merci et un sourire, ceci me convient tout à fait.

au plaisir de te recroiser.

salut
 

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87