afficher nombre de style de cellule utilisé

daronne

XLDnaute Nouveau
Bonjour,
je viens d'apprendre un peu malgré moi que le "nombre maximal de styles de cellules par classeur" est de 4 000. Or j'aimerais pouvoir connaitre ce nombre de style dans mon classeur afin de pouvoir :
- diminuer ce nombre (et ainsi pouvoir suivre l'évolution de ce nombre)
- alerter les utilisateurs lorsque l'on s'en approche et ainsi éviter qu'ils utilisent des formats de cellules à chaque fois différent.

Quelqu'un pourrait-il m'aider?

Merci à tous
 

Cousinhub

XLDnaute Barbatruc
Re : afficher nombre de style de cellule utilisé

Bonsoir,

trouvé sur MPFE, ce code :

Code:
Type Styles_Et_Formats
    Styles_Utilises As Long
    DeltaAvecLeStyle As Long
    MEFC As Long
End Type
Dim D As Object
Sub TestNFSC()
    Dim r As Styles_Et_Formats
    r = NbFormatsSurClasseur(ActiveWorkbook)
    MsgBox ActiveWorkbook.Name & ":" & vbNewLine & _
    "==>" & vbTab & r.DeltaAvecLeStyle & _
    " cellules avec formats particuliers" & vbNewLine & _
    "==>" & vbTab & r.Styles_Utilises & _
    " styles précis utilisés" & vbNewLine & _
    "==>" & vbTab & r.MEFC & " MEFC."
End Sub
Function NbFormatsSurClasseur(Classeur As Workbook) As Styles_Et_Formats
    Dim Feuille As Worksheet
    Dim n As Long, fc As Long, r As Styles_Et_Formats
    n = 0: fc = 0
    Set D = CreateObject("Scripting.Dictionary")

    For Each Feuille In ActiveWorkbook.Worksheets
        r = NbFormatsSurFeuille(Feuille)
        n = n + r.DeltaAvecLeStyle
        fc = fc + r.MEFC
    Next Feuille
    NbFormatsSurClasseur.DeltaAvecLeStyle = n
    NbFormatsSurClasseur.MEFC = fc
    NbFormatsSurClasseur.Styles_Utilises = D.Count
    Set D = Nothing
End Function
Function NbFormatsSurFeuille(sht As Worksheet) As Styles_Et_Formats
Dim Cell As Range, nomStyle As String, Res As Styles_Et_Formats
Res.MEFC = 0: Res.DeltaAvecLeStyle = 0
For Each Cell In sht.UsedRange
    nomStyle = Cell.Style.Name
    If Not D.exists(nomStyle) Then D.Add nomStyle, 1
    With ActiveWorkbook.Styles(nomStyle)
        If Cell.NumberFormat <> .NumberFormat Or _
           Cell.HorizontalAlignment <> .HorizontalAlignment Or _
           Cell.VerticalAlignment <> .VerticalAlignment Or _
           Cell.Borders.Value <> .Borders.Value Or _
           Cell.Locked <> .Locked Or _
           Cell.Interior.ColorIndex <> .Interior.ColorIndex Or _
           Cell.Interior.Pattern <> .Interior.Pattern Or _
           Cell.Font.Name <> .Font.Name Or _
           Cell.Font.Size <> .Font.Size Or _
           Cell.Font.Bold <> .Font.Bold Or _
           Cell.Font.Italic <> .Font.Italic Or _
           Cell.Font.ColorIndex <> .Font.ColorIndex Then
            Res.DeltaAvecLeStyle = Res.DeltaAvecLeStyle + 1
        End If
      Res.MEFC = Res.MEFC + Cell.FormatConditions.Count
    End With
Next Cell
NbFormatsSurFeuille = Res
End Function
 

daronne

XLDnaute Nouveau
Re : afficher nombre de style de cellule utilisé

Re,
j'ai testé vos codes et j'avoue que je ne sais pas à quoi correspond ce que renvoie celui de Michel. Quant à celui de bhbh, en ajoutant une opération dans le code je pense que j'arrive au nombre que je cherchais donc merci à tous les deux de m'avoir aider à résoudre mon problème.

A bientot

Rémi
 

mdorfi

XLDnaute Nouveau
Re : afficher nombre de style de cellule utilisé

Bonsoir!

Mais comment les informations affichées après le code de bhbh se comparent-elles avec le nombre de styles maximum de 4000??

Merci d'avance!
 
Dernière édition:

mdorfi

XLDnaute Nouveau
Re : afficher nombre de style de cellule utilisé

Re,
j'ai testé vos codes et j'avoue que je ne sais pas à quoi correspond ce que renvoie celui de Michel. Quant à celui de bhbh, en ajoutant une opération dans le code je pense que j'arrive au nombre que je cherchais donc merci à tous les deux de m'avoir aider à résoudre mon problème.

A bientot

Rémi
Bonjour Rémi,

peux-tu partager avec moi les chngemùents que tu as apporté au code de bhbh qui t'ont permis d'afficher le nombre de styles utilisés?

Merci d'avance,

Marc
 

Discussions similaires