XL 2016 Figer les Volets

KTM

XLDnaute Impliqué
Bonjour chers tous
je voudrais par macro figer les volets dans cinquante feuilles .
j'ai utilisé le code ci-dessous mais une erreur me revient sur la ligne: .Range("F11").Select

VB:
Sub FigerVolet()
Dim T
Dim i As Long
Application.EnableEvents = False
Application.ScreenUpdating = False
    T = Array(51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, _
    70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100)
    For i = LBound(T) To UBound(T)
       With Worksheets(T(i))
    .Range("F11").Select
    ActiveWindow.FreezePanes = True
    End With
    Next i
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub
 

patricktoulon

XLDnaute Barbatruc
Bonjours a tout les deux
tu pourrais ajouter le retour au sheet de départ(celui sur le quel tu étais)
VB:
Sub FigerVolet()
    Dim T, i As Long, actifSheet As Worksheet
    Set actifSheet = ActiveSheet
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    T = Array(51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, _
     70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100)
     For i = LBound(T) To UBound(T)
        With Worksheets(T(i))
            .Activate
            .Range("F11").Select
            ActiveWindow.FreezePanes = True
        End With
    Next i
    actifSheet.Activate
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub
attention tout de même à fonctionner avec un array ,il faut etre sur que les sheets 51 et 100 existent
ou alors ajouter un test d'existence
 

patricktoulon

XLDnaute Barbatruc
re
@sylvanu ou tout simplement un test ( sheet.count VS i )

et en gardant l'array c'est pareil
if thisworkbook.sheets.count<=T(i )then
ou sans array
if thisworkbook.sheets.count<=i then


VB:
Sub FigerVolet()

    Dim T, i As Long, actifSheet As Worksheet
    Set actifSheet = ActiveSheet
    Application.EnableEvents = False
    Application.ScreenUpdating = False
   ' T = Array(51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, _
     70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100)
 'For i = LBound(T) To UBound(T)
 For i = 51 to 100
       if thisworkbook.sheets.count<=i then     
        With Worksheets(T(i))
            .Activate
            .Range("F11").Select
            ActiveWindow.FreezePanes = True
        End With
     end if   
 Next i
    actifSheet.Activate
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub
 

Statistiques des forums

Discussions
311 730
Messages
2 081 981
Membres
101 855
dernier inscrit
alexis345