VBA Excel

Résolu
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. Contributeur
    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. 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. Bonjour,

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

      Merci encore!
      0
  2. Modérateur
    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. 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. Modérateur
      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. 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. Modérateur
      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. 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
    1. 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