Astuce: Les autres langues sont Google-Traduction. Vous pouvez visiter le English version de ce lien.
Se connecter
x
or
x
x
S'enregistrer
x

or

Comment verrouiller ou geler l'onglet de feuille de calcul dans Excel?

Supposons que vous avez un classeur qui contient plusieurs feuilles de calcul, il existe une feuille de calcul appelée feuille principale en tant que premier onglet dans le classeur. Et maintenant, vous voulez essayer de verrouiller ou de geler cet onglet de feuille pour le rendre toujours visible même lorsque vous faites défiler un certain nombre de feuilles de calcul. En fait, il n'existe aucun moyen direct pour figer l'onglet, mais vous pouvez utiliser une solution de contournement pour résoudre ce problème.

Verrouiller ou geler un onglet de feuille de calcul spécifique avec le code VBA


Figer / Dégeler les volets de plusieurs feuilles de calcul:
Kutools pour Excel 's Figer / Dégeler les volets de plusieurs feuilles de calcul peut vous aider à figer ou dégeler toutes les feuilles de calcul dans votre classeur en un seul clic.
doc geler plusieurs feuilles 1

flèche bleue droite bulle Verrouiller ou geler un onglet de feuille de calcul spécifique avec le code VBA


Dans Excel, nous pouvons appliquer le code VBA suivant pour que la feuille de calcul spécifique soit toujours devant l'onglet de feuille de calcul cliqué en cours, de sorte que vous puissiez toujours voir cette feuille de calcul lorsque vous faites défiler d'autres onglets de feuille. S'il vous plaît faites comme suit:

1. Maintenez le ALT + F11 clés, et il ouvre la Microsoft Visual Basic pour Applications fenêtre.

2. Alors choisi ThisWorkbook à partir de la gauche Project Explorer volet, double-cliquez dessus pour ouvrir le Module, puis copiez et collez le code VBA suivant dans le module vide:

Code VBA: geler ou verrouiller un onglet de feuille de calcul spécifique

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'Update 20150306
Application.EnableEvents = False
Application.ScreenUpdating = False
If Application.ActiveSheet.Index <> Application.Sheets("Main-sheet").Index Then
    Application.Sheets("Main-sheet").Move Before:=Application.Sheets(Application.ActiveSheet.Index)
    Application.Sheets("Main-sheet").Activate
    Sh.Activate
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

doc-freeze-feuille-tab-1

3. Et puis enregistrez et fermez ce code, maintenant, lorsque vous cliquez sur l'un des onglets de votre feuille de calcul, cette feuille de calcul spécifique sera toujours au début de l'onglet de votre feuille cliquée, voir les captures d'écran:

doc-freeze-feuille-tab-2
-1
doc-freeze-feuille-tab-3

Note: Dans le code ci-dessus, la feuille principale est le nom de la feuille que vous souhaitez geler, vous pouvez le modifier selon vos besoins.


Articles Liés:

Comment figer les volets dans Excel 2010?

Comment appliquer des volets freeze / unfreeze à plusieurs feuilles de calcul à la fois?



Outils de productivité recommandés

Office Tab

étoile d&#39;or1 Apportez des onglets pratiques à Excel et à d'autres logiciels Office, tout comme Chrome, Firefox et Internet Explorer.

Kutools for Excel

étoile d&#39;or1 Incroyable! Augmentez votre productivité dans les minutes 5. Ne nécessite pas de compétences particulières, économisez deux heures par jour!

étoile d&#39;or1 300 Nouvelles fonctionnalités pour Excel, rendent Excel facile et puissant:

  • Fusionner des cellules / lignes / colonnes sans perdre de données.
  • Combiner et consolider plusieurs feuilles et classeurs.
  • Comparez les gammes, copiez plusieurs gammes, convertissez le texte en date, l'unité et la conversion de devise.
  • Compter par couleurs, sous-totaux de recherche, tri avancé et super filtre,
  • Plus Sélectionner / Insérer / Supprimer / Texte / Format / Lier / Commenter / Classeurs / Feuilles de calcul Outils ...

Capture d&#39;écran de Kutools pour Excel

Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Xuan · 7 months ago
    chăng đc gi cả
  • To post as a guest, your comment is unpublished.
    Jesse · 10 months ago
    As Thuyen pointed out 2 years ago, you can't copy data between sheets while this code is active. Furthermore, the code is needlessly complicated. The sheet that you activate is passed to the procedure as the parameter "Sh". This makes the frequent calls to "ActiveSheet" unnecessary, and could cause problems for someone who's trying to modify the code but isn't very experienced.

    Here's my versions that corrects those issues, and even shows how to add a 2nd "Main" sheet (similar to what Dzingai posted):
    -----------------------------------------------------------------

    'These 2 lines aren't necessary if you use the sheets' codenames, which I recommend.
    Set shtMain1 = Worksheets("Main-Sheet-1")
    Set shtMain2 = Worksheets("Main-Sheet-2")

    If Application.CutCopyMode = False Then
    If Sh.Index <> shtMain1.Index And Sh.Index <> shtMain2.Index Then
    shtMain1.Move before:=Sh
    shtMain2.Move before:=Sh
    Sh.Activate
    End If
    End If
  • To post as a guest, your comment is unpublished.
    Sangs · 1 years ago
    This code worked well. Only problem is...if we close the file & open it again it goes off.
    • To post as a guest, your comment is unpublished.
      Dzingai · 1 years ago
      [quote name="Sangs"]This code worked well. Only problem is...if we close the file & open it again it goes off.[/quote]
      Try saving document as Macro-Enabled Workbook. I think it should work well that way.
  • To post as a guest, your comment is unpublished.
    Pablo · 2 years ago
    Is it possible to create one with multiple arguments? Like instead of just moving the one main sheet to the front of where you are working, is it possible to move three tabs in front of what you are working on?
    • To post as a guest, your comment is unpublished.
      dzingai · 1 years ago
      Yes, it is possible, you just have to add more arguments to the if clause using the "AND" like this

      IF Application.ActiveSheet.Index Application.Sheets("Main-sheet").Index AND Application.ActiveSheet.Index Application.Sheets("Other-Main-sheet").Index and so on...
      Then
      Application.Sheets("Main-sheet").Move Before:=Application.Sheets(Application.Sheets("Other-Main-sheet").Index)
      Application.Sheets("Main-sheet").Activate
      Application.Sheets("Other-Main-sheet").Move Before:=Application.Sheets(Application.ActiveSheet.Index)
      Application.Sheets("Other-Main-sheet").Activate
      Sh.Activate
      This will place the Main-Sheet, then the Other-Main-Sheet in front of your active sheet.
  • To post as a guest, your comment is unpublished.
    MEESHA · 2 years ago
    Could not get your code to work, but this one did :)

    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim sc As Long ' count of sheets
    Dim NewPos As Long ' index of serlected sheet

    Application.EnableEvents = False
    Application.ScreenUpdating = False

    If ActiveSheet.Index 1 Then
    sc = Sheets.Count
    NewPos = ActiveSheet.Index
    For i = 2 To NewPos - 1
    Sheets(2).Move After:=Sheets(sc)
    Next i
    Sheets(1).Activate
    Sheets(2).Activate
    End If

    Application.ScreenUpdating = True
    Application.EnableEvents = True
    End Sub