VBA Excel

Résolu
Anne -  
 foo -
Bonjour,

Je travaille sur Excel 2010 et je voudrais connaître le code VBA à entrer pour pouvoir figer les volets de tous les onglets de mon classeur en B6.

Merci

4 réponses

  1. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Bonjour Pijaku et Anne

    Une proposition en bouclant sur les onglets :
    For ifeuil = 1 To Sheets.Count
            Sheets(ifeuil).Activate
            Range("B6").Select
            ActiveWindow.FreezePanes = True
    Next ifeuil
    


    Cordialement,
    2
    1. Zoul67 Messages postés 2001 Statut Membre 149
       
      Bonjour à tous,

      Encore un peu de syntaxe en cadeau :
       For Each ws In ActiveWorkbook.Sheets
              ws.Activate
              Range("B6").Select
              ActiveWindow.FreezePanes = True
          Next ws 


      A+
      0
    2. Anne
       
      Bonjour,

      Merci Pilas 31, et merci Zoul67, vos codes fonctionnent parfaitement!!

      Merci encore!
      0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Apprenons ensemble si vous le voulez bien.

    1- ouvrir un classeur vide,
    2- Cliquer sur l'onglet "Développeur",
    3- Cliquer sur "Enregistrer une macro",
    4- Cliquer sur la cellule B6,
    5- Cliquer sur l'onglet "Affichage",
    6- Cliquer sur "Figer les volets", choisir l'option souhaitée,
    7- Cliquer sur l'onglet "Développeur",
    8- Cliquer sur "Arrêter l'enregistrement,
    9- Alt + F11
    10- Double clic sur Modules (dans la fenêtre VBA-Project en haut à gauche)
    11- Double clic sur "Module 1",
    12- Copiez le code obtenu et revenez le coller ici dans une réponse.

    Nous adapterons ce code à votre question dès votre retour...
    0
    1. Anne
       
      Bonjour,

      Merci. Voici le code obtenu:

      Sub Freeze()
      '
      ' Freeze Macro
      '

      '
      Range("B6").Select
      ActiveWindow.FreezePanes = True
      End Sub


      Il s'agit maintenant de l'appliquer à l'ensemble des onglets de mon classeur. Je pense que ça doit passer par une boucle, mais je suis incapable de dire laquelle et comment l'y intégrer...

      Merci!
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Comme dis plus bas par les deux comparses (que je salue au passage), il te faut une boucle.
      Pour ne pas faire de doublon, je place ici un troisième code...

      Sub ZiVa()
      'Déclaration de la variable "Feuille" :
      Dim maFeuil As Worksheet
      
      'Boucle sur tous les objets "WorkSheets" (feuilles) du classeur :
      For Each maFeuil In ThisWorkbook.Worksheets
          ' "avec" ma feuille
          With maFeuil
              'on l'active
              .Activate
              'on sélectionne la cellule B6
              .Range("B6").Select
          End With
          'on "FreezePane" la feuille en cours
          ActiveWindow.FreezePanes = True
      'Feuille suivante
      Next
      End Sub
      0
    3. Anne
       
      Merci pour la réponse Pijaku, mais ça ne fonctionne pas.
      En revanche, les codes de Pilas 31 et Zoul67 m'ont permis de figer en B6 les volets de tous mes onglets.
      Merci encore à eux!
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      J'ai du me tromper quelque part...
      Mais ou?

      ....

      Pourtant ça fonctionne.

      Attention toutefois à tenir compte de la remarque de foo, en cas de changement de cellule...
      0
  3. foo
     
    Bonjourer

    avant de Figer il faut le mettre a False
    ex:
    Sub FigeOnglet()
    ActiveWindow.FreezePanes = False
    Range("B6").Select
    ActiveWindow.FreezePanes = True
    End Sub

    A+
    Maurice
    0
  4. foo
     
    Bonjour

    et avec la boucle

    Sub Test()
    For I = 1 To Sheets.Count
    Sheets(Sheets(I).Name).Select
    ActiveWindow.FreezePanes = False
    Range("B6").Select
    ActiveWindow.FreezePanes = True
    Next
    End Sub

    A+
    Maurice
    0