Suppression de lignes sans valeur

  • Initiateur de la discussion Arno
  • Date de début
A

Arno

Guest
Bonjour,
je cherche une macro qui permette de masquer des lignes d'un tableau contenant des formules. Il faudrait masquer les lignes ne contenant pas de valeurs ''.
Merci pour votre aide
 

ThomasR

XLDnaute Occasionnel
Bonjour Arno,

voici un exemple avec un bouton qui masque puis un autre qui les affiches.

@+
Thomas® [file name=Pour_Arno.zip size=9911]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Pour_Arno.zip[/file]
 

Pièces jointes

  • Pour_Arno.zip
    9.7 KB · Affichages: 39

ChTi160

XLDnaute Barbatruc
Salut Arno
Bonjour Thomas®

Ne pas oublier de placer dans les procèdures les Fameux !!!!

(comme dirait un des maîtres de ce forum pour le confort des Yeux)
comme ci dessous:
Sub thomas()
Application.ScreenUpdating = False...en tête de procèdure

For i = 4 To Sheets(1).Range('A65000').End(xlUp).Row

If Sheets(1).Range('E' & i) = '' Then

Rows(i).EntireRow.Hidden = True 'ici on peut ainsi supprimer le Select

End If
Next i

Application.ScreenUpdating = True...en fin de procèdure

End Sub
Bonne Journée

Message édité par: chti160, à: 15/06/2005 10:52
 

ChTi160

XLDnaute Barbatruc
Salut Thomas®
tu sais moi aussi je suis un junior de 49 ans en ce qui concerne Excel et VBA Lol
je me suis même rendu compte que j'aurais pu ,supprimer dans la macro ,les Fameux Application.screenUpdating
car lorsques tu supprimes les Select ils ne sont plus nécessaires.Tu peux essayer
Arffffff je suis un bleu je ne peux pas faire deux choses à la fois
Bonne Journée
 

ThomasR

XLDnaute Occasionnel
re,

Excuse moi ChTi160, mais je comprend pas ton message ?

La macro fonctionne avec ou sans le Application.screenUpdating

j'ai cru que tu me le passait pour une question de vitesse ??

si cela a un autre but peut tu me dire quoi (je suis tres curieux d'apprendre)

D'avance merci
Thomas®
 

Hervé

XLDnaute Barbatruc
bonjour arno, thomas, chti, le forum


Thomas, le screenupdating permet de figer l'écran pendant le traitement d'une macro, ainsi on évite le scintillement des selects toujours désagréable pour l'utilisateur.

En plus tu gagnes en vitesse, mais c'est vrai que éviter les sélections de cellule, c'est quand meme mieux.

Pour afficher toutes les lignes d'une feuille on peut utiliser rows qui correspond à la collection des lignes d'une feuille.

ainsi ta macro deviendrait :

Sub thomas1()
'pour afficher
Rows.Hidden =
False
End Sub

pour masquer des feuilles on peut utiliser un double boolean, qui évite deux lignes de codes :)

Sub thomas()
Dim i As Integer
'pour masquer
For i = 4 To Sheets(1).Range('A65000').End(xlUp).Row
Rows(i).Hidden = Sheets(1).Range('E' & i) = ''
Next i
End Sub

salut
 

ChTi160

XLDnaute Barbatruc
tout d'abord Salut Hervé OK ???
Thomas

voilà l'explication la macro de départ comprenait si tu l'as toujours un select de Chaque ligne à Masquer
donc lorsque tu lances la macro sous cette forme tu vois le défilement des Lignes qui sont masquée tu essaies et tu verras l'effet.
mais lorsque j'ai eu ajouté les Application.screenUpdating
nécessaire dans ce cas de figure
je me suis aperçu que l'on pouvait simplifier et supprimer les Select ce qui est toujours mieux
mais je n'ai pas Oté les Application.ScreenUpdatingqui n'ont plus lieu d'être .mais cela ne gêne en rien mais ne sert à rien ,donc autant les supprimer Lol Excuse moi

ps Pour HERVE on dit la même chose pas mal hun !!!
par contre ton code surtout pour le Caché ,chapeau On sent qu'il y a de la recherche Lol
Merci Hervé

Message édité par: Chti160, à: 15/06/2005 15:53
 

ThomasR

XLDnaute Occasionnel
re,

Merci pour toutes ses infos

grace à ce site il ne se passe pas un jour sans que j'apprenne qquchose :)

cela fait 4 mois que j'ai commencé les macro grace à ce forum, et maintenant j'ai l'impression que ca fait 10ans B) (lol)


j'ai mis en pratique vos info et le resultat est significatif

dans ce poste d'Arno :
Lien supprimé

si vous avez l'occasion de regarder dit moi ce que vous en pensez car c'est de l'improvisation (et donc il y a plein de truck a optimiser encore ;) )

@+
Thomas®

PS : Hervé )
Rows(i).Hidden = Sheets(1).Range('E' & i) = ''

je n'avais jamais vu cette facon de faire je peux dans la même ligne lui dire la valeur sera '' et en plus la ligne sera hide ?

mais dans ce cas je n'ai plus ma condition ? elle est implicite le = serait un genre de if
:pinch:

je suis encore trop debutant pour comprendre
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 909
Membres
101 836
dernier inscrit
karmon