IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

sélectionner la feuille active


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut sélectionner la feuille active
    Bonjour,

    Je souhaiterais qu'une macro s'applique à la feuille actuelle ouverte, sans que cette macro spécifie le nom de la feuille, la macro étant commandée par 'Ctl + Maj + a'
    Je ne trouve pas l'instruction souhaitée.

    Merci si vous pouvez m'aider.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    le feuille active est Activesheet

  3. #3
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    Merci.
    mais ça ne veut pas marcher !

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    mets ton code

  5. #5
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    Voici un essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     x = ActiveSheet.Name
     MsgBox x
     Sheets(x).Select
    Msgbox ne m'affiche pas la feuille qui était au premier plan et m'en renvoi une autre.

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Si tu mets ton code entier et pas ce test
    Tu peux toujours travailler sans sélectionner les feuilles ou les cellules

  7. #7
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    Voici le code entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Public Sub voirCacherLignes()
    initialisation
    Dim x As String
     
     x = ActiveSheet.Name
     MsgBox x
     Sheets(x).Select
    Application.ScreenUpdating = False
     
         x = Rows(nEnTete + 1 + nHaut + 1).RowHeight
        If x = 0 Then
            For iLin = 1 To 20
           Rows(nEnTete + 1 + ((nHaut + nInterLin) * (iLin - 1) + nHaut) + 1 & ":" & nEnTete + 1 + ((nHaut + nInterLin) * iLin) - 2).RowHeight = 10
            Next iLin
        Else
            For iLin = 1 To 20
           Rows(nEnTete + 1 + ((nHaut + nInterLin) * (iLin - 1) + nHaut) + 1 & ":" & nEnTete + 1 + ((nHaut + nInterLin) * iLin) - 2).RowHeight = 0
            Next iLin
        End If
    End Sub
    Il s'agit de rendre visible et invisible certaines lignes avec la commande 'Ctl+Maj+a'
    Ça marche bien quand le nom d'une feuille est indiqué, mais je voudrais que ça s'applique à la feuille ouverte.

  8. #8
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    Merci de corriger le précédent code, car j'avai rajouté hâtivement la même variable (x) à deux endroits. Mais ce n'est pas ce qui bloque.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Public Sub voirCacherLignes()
    initialisation
    Dim x As String
    Dim y As Integer
     
     x = ActiveSheet.Name
     MsgBox x
     Sheets(x).Select
    Application.ScreenUpdating = False
     
         y = Rows(nEnTete + 1 + nHaut + 1).RowHeight
        If y = 0 Then
            For iLin = 1 To 20
           Rows(nEnTete + 1 + ((nHaut + nInterLin) * (iLin - 1) + nHaut) + 1 & ":" & nEnTete + 1 + ((nHaut + nInterLin) * iLin) - 2).RowHeight = 10
            Next iLin
        Else
            For iLin = 1 To 20
           Rows(nEnTete + 1 + ((nHaut + nInterLin) * (iLin - 1) + nHaut) + 1 & ":" & nEnTete + 1 + ((nHaut + nInterLin) * iLin) - 2).RowHeight = 0
            Next iLin
        End If
    End Sub

  9. #9
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,

    je serais curieux de savoir ce que valent toutes tes variables n... et i...

  10. #10
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Pourquoi tu as besoin de sélectionner ta feuille (d'autant plus qu'elle la feuille active)!
    J'ai ajouté un test pour contrôler s'il s'agit d'une feuille excel ou d'un graphique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Public Sub voirCacherLignes()
    Dim x As Integer, iLin As Integer
     
    Application.ScreenUpdating = False
    If ActiveSheet.Type = xlWorksheet Then
       x = Rows(nEnTete + 1 + nHaut + 1).RowHeight
       If x = 0 Then
          For iLin = 1 To 20
             Rows(nEnTete + 1 + ((nHaut + nInterLin) * (iLin - 1) + nHaut) + 1 & ":" & nEnTete + 1 + ((nHaut + nInterLin) * iLin) - 2).Interior.ColorIndex = 6
             Rows(nEnTete + 1 + ((nHaut + nInterLin) * (iLin - 1) + nHaut) + 1 & ":" & nEnTete + 1 + ((nHaut + nInterLin) * iLin) - 2).RowHeight = 10
          Next iLin
       Else
          For iLin = 1 To 20
             Rows(nEnTete + 1 + ((nHaut + nInterLin) * (iLin - 1) + nHaut) + 1 & ":" & nEnTete + 1 + ((nHaut + nInterLin) * iLin) - 2).Interior.ColorIndex = 6
             Rows(nEnTete + 1 + ((nHaut + nInterLin) * (iLin - 1) + nHaut) + 1 & ":" & nEnTete + 1 + ((nHaut + nInterLin) * iLin) - 2).RowHeight = 0
          Next iLin
       End If
    End If
    End Sub
    Edit: Peut être nEnTete... sont des variables publiques déclarées et initialisées quelque part.
    Et pour bien te former, les cours et tutoriels pour apprendre Excel : https://excel.developpez.com/cours/

  11. #11
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    Voici de quoi il s'agit.
    J'ai plusieurs feuilles avec des dessins et, en dessous de chacun, des commentaires.
    Je voudrais rendre invisibles ces commentaires pour rapprocher les dessins.
    Ce qui explique toutes ces variables.
    Autrement dit, on rend invisibles ou visibles10 lignes toutes les 50 lignes.
    La même commande les rend visibles et invisibles alternativement par le if.. else.
    La même macro doit donc servir quelque soit la feuille affichée.

    Je précise que ces dessins sont constitués par les cellules de la feuille Excel.
    Ce ne sont pas des graphiques

  12. #12
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Je me répète, tu n'as pas besoin de sélectionner la feuille pour y travailler. Et d'autant plus, la feuille en question EST la feuille active.

  13. #13
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    Ça fonctionne bien.
    Je viens de me rendre compte qu'un initialisation intempestive passait chaque fois la main à une autre feuille.
    Merci mercatog pour ton aide.
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Excel] - former une chaîne avec valeur de la feuille active ?
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/02/2007, 15h54
  2. effacer le contenu d'une feuille active en préservant des cellules
    Par Jerez62 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/11/2006, 19h24
  3. Keydown sans la feuille active
    Par ShortcutZ dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 26/10/2006, 15h02
  4. Rapidité Macro lié à la feuille active
    Par conconbrr dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/08/2006, 17h40
  5. Demander de sélectionner une feuille par clic
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/07/2006, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo