XL 2021 VBA Alternative à SpecialCells(xlCellTypeVisible)

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Dudu2

XLDnaute Barbatruc
Bonjour

SpecialCells ne fonctionne pas sur une feuille protégée (erreur 1004).
J'ai besoin de connaître le Range des cellules visibles d'une feuille protégée.
Auriez-vous une fonction performante qui fait ça ?

VB:
Sub a()
    Dim R As Range
 
    On Error Resume Next
    Set R = ActiveSheet.Cells.SpecialCells(xlCellTypeVisible)
    MsgBox "Err.Number = " & Err.Number & IIf(Err.Number = 0, ", Range = " & R.Address(0, 0), "")
End Sub
 
Dernière édition:
Solution
Bonsoir à tous ,

Une petite dernière fonction très simple (pas forcément la plus rapide sans doute) qui utilise un classeur auxiliaire:
Le mot de passe de chaque feuille est "toto".
VB:
Function RangeVisibleCells(MyWorksheet As Worksheet) As Range
Dim wkb As Workbook, wks As Worksheet, xarea As Range, x As Range, res As Range
    Application.ScreenUpdating = False                ' blocage affichage
    Set wkb = Workbooks.Add: Set wks = wkb.Sheets(1)  ' nouveau classeur
    On Error GoTo Menage                              ' si erreur
    MyWorksheet.Rows.Copy: wks.Rows.PasteSpecial xlPasteFormats         ' copie des lignes de la feuille vers le nouveau classeur
    For Each xarea In...
@mapomme, merci bon à savoir pour quoi je ne sais pas.
Sinon on peut encore gratter un chouilla quand le ThisWorkbook.IsAddin (classeur en général non protégé en Structure) en ne créant la feuille pour copier dans l'AddIn qu'à la première exécution de l'AddIn lorsqu'il est chargé par l'ouverture d'un fichier Excel.
 

Pièces jointes

Dernière édition:
Bonjour,
grâce à usine a gaz je suis passé a xls 2024. tu as 2021 j'ai don supposé que ça fonctionnait mais effectivement il semble que ce ne soit pas disponible sur 2021
1766251353685.png


correction du code lambda pour ceux que ça intéresse!


Code:
=LAMBDA(tableau;
    FILTRE(tableau; SOUS.TOTAL(103; DECALER(INDEX(tableau;1;1); SEQUENCE(LIGNES(tableau))-1; 0; 1; 1)))
)

ceci dit il semblerait que lambda soit pris en compte à partir de 2021
 
Dernière édition:
Pour info les 3 fonctions (GetVisibleRange + GetVisibleRangeCopy + GetVisibleRangescan) du fichier en Post #62 (récemment mis à jour) donnent de bons résultats dans une application où chaque SelectionChange() sur un feuille protégée donne lieu à une détermination des Ranges visibles.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
774
Réponses
2
Affichages
699
Réponses
5
Affichages
508
Réponses
4
Affichages
637
Retour