XL 2021 Création et adaptation barre de progression

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Bonjour à tous,
Je finalise mon projet,
Comment créer et adapter une barre de progression sur l'exécution d'un code,
exemple:

VB:
Sub CompterLignesMasquees()
    Dim ws As Worksheet
    Dim ligne As Range
    Dim compteur As Long
  
    ' Définir la feuille de calcul active
    Set ws = ActiveSheet
  
    ' Initialiser le compteur
    compteur = 0
  
    ' Parcourir chaque ligne de la feuille de calcul
    For Each ligne In ws.Rows
        ' Vérifier si la ligne est masquée
        If ligne.Hidden Then
            compteur = compteur + 1
        End If
    Next ligne
  
    ' Afficher le nombre de lignes masquées
    MsgBox "Nombre de lignes masquées : " & compteur
End Sub

et

Code:
Sub CompterColonnesMasquees()
    Dim ws As Worksheet
    Dim col As Range
    Dim compteur As Integer
  
    ' Initialisation
    Set ws = ActiveSheet
    compteur = 0
  
    ' Parcourir chaque colonne de la feuille active
    For Each col In ws.UsedRange.Columns
        ' Vérifier si la colonne est masquée
        If col.EntireColumn.Hidden Then
            compteur = compteur + 1
        End If
    Next col
  
    ' Afficher le nombre de colonnes masquées
    MsgBox "Nombre de colonnes masquées : " & compteur
End Sub

J'ai vu plusieurs choses mais ne sais pas du tout comment adapter, et si le code est le même selon la macro.

Merci à tous
Nicolas
 

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Bonjour Dranreb,
Merci du retour mais ça ne répond pas à ma question,
en gros quand j'ouvre mon userform, ça compte le nombre de ligne et le nombre de colonne,
ce que j'aimerai c'est que selon chaque phase j'ai la barre de progression qui s'affiche, sachant que le nombre de ligne et colonne ne sera jamais identique.
je suis tombé la dessus et je trouvais sympa le style, mais ne sais pas du tout comment adapter à mon projet.
Merci
 

Pièces jointes

  • barre-de-progression.xlsm
    20.9 KB · Affichages: 6

Cousinhub

XLDnaute Barbatruc
Inactif
Bonsoir,
[Totalement hors sujet/]
J'ai cru entrevoir la finalité de ton projet (Déplomber les fichiers Excel) (Codes/Feuilles/...)
Penses-tu que si je mets un mdp de 26 caractères (alpha, num, spéciaux...), tu pourrais "estimer" le temps de déplombage?
[\Peut-être me trompé-je]
Bonne soirée
 

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
c'est quoi l'utilité de la chose ??,perso là tu m'a perdu 🤣
dis moi à quoi te servirais de voir une barre avance pour compter les col ou lig masquée alors qu'avec speciallcells tu l'a d'un coup

le but est que dès fois, je sais c'est sans doute con, mais sur certains fichier tu as une vintaine de ligne ou colonne visible, et le but est de justement compter ce qui est masqué, et la ça à t'endance à ramer, d'ou la demande de la barre de progression.
 

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
C'était pour adapter à ça, c'est pour ça que j'avais réduit la recherche à 500 colonnes et 5000 lignes.
Merci

VB:
Private Sub UserForm_Initialize()
    Dim fc As Worksheet, wb As Workbook, ws As Worksheet, nb As Long, VPC As Object, vbProj As Object
    Dim listeFeuillesProtegees As String
Set Wbk = ActiveWorkbook

If colonne >= 1 Then
Lbt11.BackColor = vbRed
Label18.Caption = IIf(colonne >= 2, "Colonnes masquées", "Colonne masquée")
Bbt11.Caption = "(" & colonne & ")"
Else
Label18.Caption = "Toutes les colonnes visibles"
Lbt11.BackColor = vbGreen
Bbt11.Caption = "Ok"
End If

If ligne >= 1 Then
Lbt12.BackColor = vbRed
Label17.Caption = IIf(colonne >= 2, "Lignes masquées", "Ligne masquée")
Bbt12.Caption = "(" & ligne & ")"
Else
Label17.Caption = "Toutes les lignes visibles"
Lbt12.BackColor = vbGreen
Bbt12.Caption = "Ok"
End If

End Sub

Public Function colonne()
Dim ws As Worksheet
Dim i As Long
Dim MaxColumns As Long
MaxColumns = 500
colonne = 0
For Each ws In Wbk.Worksheets
For i = 1 To MaxColumns
If ws.Columns(i).Hidden Then
colonne = colonne + 1
End If
Next i
Next ws
End Function

Public Function ligne()
Dim ws As Worksheet
Dim i As Long
Dim MaxRows As Long
MaxRows = 5000
ligne = 0
For Each ws In Wbk.Worksheets
For i = 1 To MaxRows
If ws.Rows(i).Hidden Then
ligne = ligne + 1
End If
Next i
Next ws
End Function
 

Dranreb

XLDnaute Barbatruc
Testez ça :
VB:
Sub Test()
   Dim Rng As Range, RngVis As Range
   Set Rng = ActiveSheet.UsedRange
   Set RngVis = Rng.SpecialCells(Type:=xlCellTypeVisible)
   MsgBox Rng.Rows.Count - RngVis.Rows.Count & " ligne(s) masquée(s), " _
      & Rng.Columns.Count - RngVis.Columns.Count & " colonne(s) masquée(s).", _
      vbInformation, "Test"
   End Sub
 

Discussions similaires

Réponses
7
Affichages
550

Statistiques des forums

Discussions
313 769
Messages
2 102 234
Membres
108 181
dernier inscrit
Chr1sD