Besoin d'un coup de pouce pr une macro Excel

Résolu/Fermé
plastickman Messages postés 64 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 8 février 2012 - 5 déc. 2007 à 13:05
plastickman Messages postés 64 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 8 février 2012 - 7 déc. 2007 à 09:50
Bonjour,
Je débute en VBA, et je crois que c'est encore un bien grand mot vu que j'en suis seulement au stade de déchiffrer les macro les plus simples...
...et j'ai besoin d'aide sur Excel.

Je voudrais masquer les lignes 40:85 de ma feuille 1et les lignes 10:20 de ma feuille 2, lorsque les cellules C23, C24 et C25 de ma feuille 1 sont vides. J'ai déjà créé le bouton pour une autre macro et je souhaite simplement la ralonger.

Merci d'avance,
A voir également:

4 réponses

Utilisateur anonyme
5 déc. 2007 à 16:04
Bonjour,

Exemple type :

Option Explicit

Sub MasquerLignes()

    Dim Feuille As String

    Application.ScreenUpdating = False
    Feuille = ActiveSheet.Name
    Sheets("Feuil1").Select
    If (IsEmpty(Range("C23").Value) And _
            IsEmpty(Range("C24").Value) And _
                IsEmpty(Range("C25").Value)) Then
        
        Rows("40:85").Hidden = True
        Sheets("Feuil2").Select
        Rows("10:20").Hidden = True
    End If
    Sheets(Feuille).Select
    Application.ScreenUpdating = True
    
End Sub
'

Sub AfficherLignes()
    
    Dim Feuille As String

    Feuille = ActiveSheet.Name
    Sheets("Feuil1").Select
    Rows("40:85").Hidden = False
    Sheets("Feuil2").Select
    Rows("10:20").Hidden = False
    Sheets(Feuille).Select

End Sub
'


Lupin
0
plastickman Messages postés 64 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 8 février 2012 6
6 déc. 2007 à 09:46
Merci beaucoup pour ta rapidité, ça marche bien. je pense d'ailleurs que j'aurai d'autre questions d'ici peu...
Par contre , est ce que ce serait exagérer de te demander quelques explications sur les différentes lignes:



" Dim Feuille As String

Application.ScreenUpdating = False
Feuille = ActiveSheet.Name "

et

" End If
Sheets(Feuille).Select
Application.ScreenUpdating = True "

Pour le dernier cas , je comprends encore moins pourquoi "Sheets..." est situé après "End if"

merci pour ton aide !
0
Bonjour,

Lupin.A est un perfectionniste !

Application.ScreenUpdating = true/false c'est pour dire si l'écran est remis à jour ou pas. En le mettant à false pendant la macro, tu gagnes beaucoup de temps si tu as des boucles, et tu évites des scintilements désagréables. Ne pas oublier de remettre à true à la fin !

Feuille = ActiveSheet.Name et Sheets(Feuille).Select, c'est pour mémoriser la feuille active au départ et la remettre à la fin de la macro. Si on a besoin de changer de feuille pendant l'éxécution, on revient quand même à la feuille de départ
Comme on a changé de feuille avant le if, c'est normal de restituer après le endif. Evidemment, si la feuille courante était Feuil1 ça ne change rien.
0
plastickman Messages postés 64 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 8 février 2012 6
7 déc. 2007 à 09:50
Merci bien, Le Père, j'aime bien comprendre ce que je tape, enfin tant que c'est compréhensible...

A+
0