Rapport de message :*
 

Re: cacher des lignes automatiquement selon des critéres

Titre du sujet : Re: cacher des lignes automatiquement selon des critéres
par myDearFriend! le 21/03/2009 01:00:42

Bonsoir inspecteur, Mth, JCGL, le Forum,

Citation :
Mth a écrit :
Un peu gênée d'écrire du VBA car je n'y connais rien, mais en attendant mieux voici le même fichier pour n'effacer qu'une seule colonne correspondant à l'impôt choisi.


Bravo Mireille pour quelqu'un qui "n'y connait rien à VBA", tu te débrouilles plutôt bien !

Pour ma part, je trouve ton approche du problème assez intéressante et je te propose juste une amélioration de ta procédure :
Comme en VBA, les Activate et autres Select sont quasi toujours inutiles (et souvent même sources de problèmes), tu peux modifier ton code :
Sub vider2()

Application.ScreenUpdating = False 'pour figer l'affichage

Dim X As Variant
X = Range("V20").Value 'X = la valeur de la cellule V20

Sheets("BASE").Activate 'sélectionne l'onglet Base

Columns(X).Select 'Sélectionne la colonne correspondant à l'impot choisi en cellule S20
    Selection.Replace What:="d", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False 'remplace les lettres d par rien

Sheets("Synthese").Activate 'sélectionne l'onglet Synthese

Application.ScreenUpdating = True 'pour réactiver l'affichage

End Sub
... et le remplacer par celui-ci :
Sub vider2()
Dim X As String
    X = Range("V20").Value 'X = la valeur de la cellule V20
    Sheets("BASE").Columns(X).Replace What:="d", Replacement:="", LookAt:=xlPart, _
                SearchOrder:=xlByRows, MatchCase:=False 'remplace les lettres d par rien
End Sub
En te débarrassant des Select, du coup, tu peux te séparer également du Application.ScreenUpdating qui n'a plus lieu d'être.

Cela dit, je suis de ton avis également : la procédure manuelle reste la façon la plus sûre puisqu'elle responsabilise l'utilisateur et permet un retour arrière (annulation de l'action). Par ailleurs, on peut la simplifier d'avantage en nommant les zones à effacer par exemple : ZoneI1, ZoneI2, ZoneI3, etc... Ensuite, un rapide choix dans la Zone de Nom et l'appui sur la touche Suppr suffisent.

Cordialement,