Besoin d'un coup de pouce pr une macro Excel

Résolu
plastickman Messages postés 66 Statut Membre -  
plastickman Messages postés 66 Statut Membre -
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,
Configuration: Windows XP
Internet Explorer 6.0

4 réponses

  1. Utilisateur anonyme
     
    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
  2. plastickman Messages postés 66 Statut Membre 6
     
    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
  3. le père
     
    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
  4. plastickman Messages postés 66 Statut Membre 6
     
    Merci bien, Le Père, j'aime bien comprendre ce que je tape, enfin tant que c'est compréhensible...

    A+
    0