"Too Many Different Cell Format" ou "Nombre de formats cellule différents trop élevé"

Nyny

XLDnaute Nouveau
Bonjour à tous,

Tout d'abord, je sais très bien que ce sujet a été traité nombre de fois. Malheureusement, aucune des solutions proposées ne sont parvenues à apporter une réponse à mon problème.

Je travaille sur Excel 2003, et comme vous l'avez compris, je fais face à une erreur qui me dit en anglais "Too many different cell format".

Au risque de paraitre irrespectueux, ne perdez pas votre temps à me répondre d'aller voir tel ou tel forum Microsoft, qui m'apporterait un utilitaire capable de nettoyer les formats inutilisés au sein de mon fichier, ou qui me dirait d'utiliser moins de format. Il ne s'agit là que d'une réponse sans aucun intérêt.

Clairement, je n'ai pas utilisé les 4000 formats differents au sein de mon fichier, et quand bien même je supprime tous les onglets et n'en laisse qu'un seul, avec une dizaine de cellules remplies, le problème est encore là. Le comble de ce problème, c'est que sur quelques onglets, il m'enverra le message d'erreur qu'à certains niveaux de la feuille excel (lorsque j'essaie d'insérer une ligne au niveau de la ligne 10, il m'enverra le message d'erreur, mais pas lorsque j'essaie au niveau de la ligne 200...).

Bref, vous l'aurez compris, cette erreur me pourrit la vie, et j'essaie de m'en débarasser !!!

Voici une macro que j'ai compilé, et qui fonctionne, mais qui n'efface pas les formats inutilisés. Si quelqu'un pouvait m'aider à l'affiner, je lui en serais grandement reconnaissant !!

Denis :eek:

Code:
Sub DeleteUnusedCustomNumberFormats()
      Dim Buffer As Object
    Dim Sh As Object
    Dim SaveFormat As Variant
    Dim fFormat As Variant
    Dim nFormat() As Variant
    Dim xFormat As Long
    Dim Counter As Long
    Dim Counter1 As Long
    Dim Counter2 As Long
    Dim StartRow As Long
    Dim EndRow As Long
    Dim pPresent As Boolean
    Dim NumberOfFormats As Long
    Dim Answer
    Dim Cell As Object
    Dim DataStart As Long
    Dim DataEnd As Long
    Dim AnswerText As String
    Dim ActWorkbookName As String
    Dim BufferWorkbookName As String

    NumberOfFormats = 4000
    StartRow = 3 ' Do not alter this value
    EndRow = 65536 ' For Excel 97 and 2000 set EndRow to 65536

ReDim nFormat(0 To NumberOfFormats)

    AnswerText = "Do you want to delete unused custom formats from the workbook?"
    AnswerText = AnswerText & Chr(10) & "To get a list of used and unused formats only, choose No."
    Answer = MsgBox(AnswerText, 259)
    If Answer = vbCancel Then GoTo Finito

    On Error GoTo Finito
    ActWorkbookName = ActiveWorkbook.Name
    Workbooks.Add
    BufferWorkbookName = ActiveWorkbook.Name

    Set Buffer = Workbooks(BufferWorkbookName).ActiveSheet.Range("A3")
    nFormat(0) = Buffer.NumberFormatLocal
    Buffer.NumberFormat = "@"
    Buffer.Value = nFormat(0)

    Workbooks(ActWorkbookName).Activate

    Counter = 1
    Do
        SaveFormat = Buffer.Value
        DoEvents
        SendKeys "{TAB 3}"
        For Counter1 = 1 To Counter
            SendKeys "{DOWN}"
        Next Counter1
        SendKeys "+{TAB}{HOME}'{HOME}+{END}^C{TAB 4}{ENTER}"
        Application.Dialogs(xlDialogFormatNumber).Show nFormat(0)
        ActiveSheet.Paste Destination:=Buffer
        Buffer.Value = Mid(Buffer.Value, 2)
        nFormat(Counter) = Buffer.Value
        Counter = Counter + 1
    Loop Until nFormat(Counter - 1) = SaveFormat

ReDim Preserve nFormat(0 To Counter - 2)

    Workbooks(BufferWorkbookName).Activate

    Range("A1").Value = "Custom formats"
    Range("B1").Value = "Formats used in workbook"
    Range("C1").Value = "Formats not used"
    Range("A1:C1").Font.Bold = True

    For Counter = 0 To UBound(nFormat)
        Cells(StartRow, 1).Offset(Counter, 0).NumberFormatLocal = nFormat(Counter)
        Cells(StartRow, 1).Offset(Counter, 0).Value = nFormat(Counter)
    Next Counter

    Counter = 0
    For Each Sh In Workbooks(ActWorkbookName).Worksheets
        For Each Cell In Sh.UsedRange.Cells
            fFormat = Cell.NumberFormatLocal
            If Application.WorksheetFunction.CountIf(Range(Cells(StartRow, 2), Cells(EndRow, 2)), fFormat) = 0 Then
                Cells(StartRow, 2).Offset(Counter, 0).NumberFormatLocal = fFormat
                Cells(StartRow, 2).Offset(Counter, 0).Value = fFormat
                Counter = Counter + 1
            End If
        Next Cell
    Next Sh

    xFormat = Range(Cells(StartRow, 2), Cells(EndRow, 2)).Find("").Row - 2
    Counter2 = 0
    For Counter = 0 To UBound(nFormat)
        pPresent = False
        For Counter1 = 1 To xFormat
            If nFormat(Counter) = Cells(StartRow, 2).Offset(Counter1, 0).NumberFormatLocal Then
                pPresent = True
            End If
        Next Counter1
        If pPresent = False Then
            Cells(StartRow, 3).Offset(Counter2, 0).NumberFormatLocal = nFormat(Counter)
            Cells(StartRow, 3).Offset(Counter2, 0).Value = nFormat(Counter)
            Counter2 = Counter2 + 1
        End If
    Next Counter
    With ActiveSheet.Columns("A:C")
        .AutoFit
        .HorizontalAlignment = xlLeft
    End With
      If Answer = vbYes Then
        DataStart = StartRow
        DataEnd = DataStart + Counter2 - 1
        On Error Resume Next
        For Each Cell In Range(Cells(DataStart, 3), Cells(DataEnd, 3)).Cells
            Workbooks(ActWorkbookName).DeleteNumberFormat Cell.NumberFormat
        Next Cell
    End If
Finito:
    Set Cell = Nothing
    Set Sh = Nothing
    Set Buffer = Nothing
End Sub
 

Modeste geedee

XLDnaute Barbatruc
Re : "Too Many Different Cell Format" ou "Nombre de formats cellule différents trop é

Bonsour®
avant d'invectiver les éventuels répondeurs ...
il manque beaucoup d'informations pour orienter les réponses.

Décrit les opérations que tu effectues sur ce classeur (format, polices, tailles, couleurs)
Utilises-tu des graphiques ?
Est-il possible que certains graphiques soient masqués ?
Quelle version EXCEL ?
As-tu un anti-virus à jour ?
As-tu essayé de ne copier que les données dans un autre classeur (copie spéciale valeur et formule, pas les formats !!!)
 

Nyny

XLDnaute Nouveau
Re : "Too Many Different Cell Format" ou "Nombre de formats cellule différents trop é

Bonjour Modeste Geedee!

Merci de ta réponse.

Pour apporter des informations à tes questions:
- Les opérations que j'effectue sur ce classeur sont des opérations relativement basique. J'ai une base de donnée, que je présente sous des formes différentes dans des onglets de présentations. Certes il y a des formats différents (Gras, polices plus petites, borders, etc...) mais je suis sur de ne pas atteindre les 4000 formats différents.
- Il n'y a pas de graphiques, et non il n'y en a pas de masqués.
- Version Excel 2003 (c'était une information que je donnais déjà :p)
- Anti-virus à jour
- J'ai essayé de copier les données dans un autre classeur, mais l'important pour moi réside justement dans le fait de garder les formats dans les onglets de présentation. J'ai déjà essayé de supprimer tous les onglets et de n'en garder qu'un. J'ai déjà essayé de refaire mon fichier à partir de zéro, et j'atteint le message critique de nouveau. Je pense qu'il s'agit surtout d'un bug d'Excel, jusqu'à la version 2007, d'apres mes recherches.

Enfin, il ne s'agissait pas d'invectiver les éventuels répondeurs, mais j'ai recherché tous les messages sur le sujet dans le forum, et généralement la première réponse renvoyait toujours vers cette discussion du forum Microsoft You receive a "Too many different cell formats" error message in Excel qui clairement n'apporte aucune solution au problème...

J'en ai cherché des solutions, et j'en suis toujours là... Arrrrgh :(

Merci en tout cas !
 

Roland_M

XLDnaute Barbatruc
Re : "Too Many Different Cell Format" ou "Nombre de formats cellule différents trop é

bonjour

voir dans ce classeur, il a un module que tu peux copier dans ton classeur
et une fois fais sur ce module tu tapes F5 pour qu'il s'exécute !
et ton fichier sera nettoyer des formats cells perso inutiles !

ce sera toujours ça de fait !
 

Pièces jointes

  • DeleteFormat CellPersol.xls
    30 KB · Affichages: 317
Dernière édition:

Nyny

XLDnaute Nouveau
Re : "Too Many Different Cell Format" ou "Nombre de formats cellule différents trop é

Bonjour Roland_M !

Déjà Merci beaucoup pour ta macro, qui à première vue fonctionne (Load, Analyse et Supprime) mais qui en fait ne permet pas de se débarrasser du message d'erreur :( J'essaie de changer le format d'une cellule juste après avoir lancé la macro, mais cela ne fonctionne toujours pas.

Je pense qu'il s'agit du fait que lorsqu'il analyse les formats, il ne fait qu'analyser les formats custom, c'est-à-dire juste la forme que prennent les chiffres à l'intérieur des cellules. Je ne sais pas s'il analyse les polices, les borders, etc, etc...

La macro que j'ai posté un peu plus haut semble faire la même chose, mais n'arrive pas à enlever le message d'erreur elle non plus.
 

chris

XLDnaute Barbatruc
Re : "Too Many Different Cell Format" ou "Nombre de formats cellule différents trop é

Bonjour

Si on élimine les graphiques, si tu repasses toutes tes cellules en style normal (sur une copie du fichier) cela résoud-il le PB ?

Sans avoir 4000 formats différents, si on met en forme cellule par cellule plutôt que d'optimiser par grandes plages, on peut atteindre cette fameuse limite donc pour être sûr que cela est bien lié au format, il faut commencer par les supprimer.
 

Nyny

XLDnaute Nouveau
Re : "Too Many Different Cell Format" ou "Nombre de formats cellule différents trop é

Bonjour Chris,

Il n'y a pas de graphiques dans mon fichier. Et au niveau des styles des cellules, je ne pense vraiment pas que cela soit du au nombre de formats différents, sachant que j'ai déjà essayé de supprimer tous les onglets sauf 1, et uniquement avec un tableau de 10 colonnes sur 10 lignes, et que le système me relancait encore le même message d'erreur. Même chose avec une insertion de ligne à des niveaux différents de la feuille (message d'erreur lorsque j'essaie d'insérer la feuille à la ligne 3, mais pas lorsque j'essaie sur la ligne 100 par exemple).

Malheureusement, sur un fichier aussi gros (au moins une Trentaine d'onglet), si je ne m'applique pas au niveau des formats, cela devient vite illisible.
 

chris

XLDnaute Barbatruc
Re : "Too Many Different Cell Format" ou "Nombre de formats cellule différents trop é

RE

J'en conclus qu'il y a un problème dans le classeur. As-tu essayé de recopier les formules dans un nouveau classeur.

Même si copier/collage spécial de nombreux onglets c'est long (encore qu'on puisse le faire par VBA) cela devrait résoudre.
Une fois cela fait tu pourras remettre tes formats.

Tu peux essayer aussi une conversion en version 2007-2010 puis depuis cette version retranscrire en xls.
Mais sans garantie le passage des classeurs par de multiples versions ayant plutôt tendance à polluer les classeurs.
 

Statistiques des forums

Discussions
312 287
Messages
2 086 827
Membres
103 397
dernier inscrit
Kilement