Message d'erreur : "Nombre de formats de cellule trop élevé"

Bonjour à tous,

Je suis en train de programmer une macro à but uniquement esthétique, qui va probablement vous paraitre idiote.

Je n'utilise que les 100 cellules des ligne 1 à 10 et des colonnes 1à 10.

Je ne fais qu'une chose : changer les couleurs de ces cellules (avec la fonction "interior.color").

Le résultat est très joli, mais malheureusement au bout de quelques dizaines de secondes ça plante et j'ai le message d'erreur '1004' : "Nombre de formats de cellule trop élevé".

Je me suis donc dit qu'il suffisait de supprimer régulièrement la feuille de calcul et de passer sur une vierge nouvellement créée pour l'occasion pour remettre le compteur du "Nombre de formats de cellule" à zéro, mais cela ne résout pas du tout le problème !

Je suppose qu'il faudrait trouver une façon de "vider l'historique" qui doit exister et qui permet de revenir en arrière en faisant Ctrl Z, pour résoudre ce problème ?

Comment faire ?

Merci de vos aides.

Au plaisir de lire vos propositions.

Bonsoir,
Un petit fichier avec la procédure VBA ?
Cdlt.

Bonsoir,

voici un lien vers le fil de discussion de mon application Mosïque : Ici

et un autre lien vers la page de l'application : Ici

Ce qui me chiffonne c'est que j'ai trouvé des limites aux alentours de 64000 (Microsoft), mais sinon mon test de faisabilité tourne plutôt autour des 16000 couleurs différentes de fond de cellule, alors vous avec 100 cellules, cela devrait passer, à moins que ce soit un effet visuel et que durant cet effet vous changiez la couleur de ces 100 cellules pour faire comme une vague... Excel garde peut-être en mémoire ces différents états et sature au niveau mémoire...

En effet, Mosaïc utilisé plusieurs fois de suite bloque avec des valeurs de couleur de plus en plus petite il me semble.

@ bientôt

LouReeD

Merci pour vos réponses.

Malheureusement je ne peux pas joindre le fichier car l'ordi qui a Excel ne va par sur le net.

En effet je change les couleurs de chacune des 100 cellules à de très nombreuses reprise ce qui fait que j'atteint très vite la limite apparemment de 64000.

Je n'ai pas le choix car tout l'effet artistique est basé sur cela et quand bien même la limite serait 64 000 000 000 cela finirait rapidement par me bloquer.

Donc la seule solution serait me semble-t-il de purger régulièrement ce qui garde en mémoire ces formats de cellules...

Mais cela dépasse mes compétences !

En espérant que quelqu'un trouve la solution.

Bonjour,

met au moins le code utilisé.
Un test de mise de 300000 couleurs n'a produit aucune erreur chez moi.

Il te parle bien de formats et non de styles ?
eric

Bonsoir,

eriiic, à vous également de déposer le code, car cela m'intéresse afin de faire "sauter" les limites de Mosaïc... Mais ce que je crain c'est que votre machine doit être une bête de course... Avec de la mémoire à gogo, non ?

@ bientôt

LouReeD

Voici un petit code :

Sub test()
    Dim cpt As Long
    cpt = 0
    Do
        If cpt >= 10000000 Then Exit Do
        DoEvents
        For i = 1 To 10
            For j = 1 To 10
                Cells(i, j).Interior.Color = cpt
                cpt = cpt + 1
            Next j
        Next i
    Loop
End Sub

le programme bloque à 65429 sur ma machine... ce qui revient à la valeur indiqué dans le message mis en lien un peu plus haut...comment avez vous fait pour les 300000 ?

@ bientôt

LouReeD

et même en mettant Application.ScreenUpdating = False en début de code cela bloque à 65429 alors même que la couleur n'est pas affichée sur la feuille...

@ bientôt

LouReeD

Bonjour

Ce matin j'ai eu l'idée d'ajouter ClearFormats sur la cellule dont j'allais modifier la couleur afin de n'avoir qu'un format en mémoire sur cette dernière... Et ben non, ça ne marche pas, toujours bloqué à 65428 donc une erreur annoncée pour la 65429 ieme modification.

@ bientôt

LouReeD

Salut loureed,

Oui, une bête de course à son époque. Elle a 13 ans et serait en retraite s'il n'y avait pénurie de composants depuis 2 ans Avec 16 Go

Alors ce qui est amusant, c'est que mon code diffère très peu du tien.
Fait rapidement hier, je tirais la couleur de 1 à 16000 pensant que c'était le nombre de changements qui importait.
En fait c'est le nombre de couleurs différentes qui compte. Si je fais de 1 à 65000, je plante enfin.

Limites depuis excel 2007 :

Nombre maximal de formats/styles de cellule uniques : 64 000

La solution serait donc de choisir 64000 couleurs et de s'y limiter.
Je n'ai aucune idée de où il stocke ça et si c'est accessible. J'ai tendance à pense que non
Ca laisse quand même le choix...
eric

Bonjour

Vous me rassurez ! Je ne raconte pas que des bêtises ! C'est bien dommage qu'Excel n'initialise pas les mise en forme suite à leur suppression...

64000 pour une utilisation standard d'excel c'est bien suffisant mais lors de détournent de celle-ci ça peut bloquer...

@ bientôt

LouReeD

LouReeD et Eriiic,

Si je résume, je pourrais modifier autant de cases que souhaité mais en n'utilisant que 64000 couleurs différentes, c'est bien cela ?

Si c'est le cas je peux m'adapter et c'est presque parfait !

Concrètement, voici ce que cela donne :

2 puissance 16 donne 65536 (la limite à ne pas dépasser)

Chaque couleur étant une combinaison de Red Green Blue.

La racine cubique de 65536 est 40,30... donc il ne faut pas utiliser plus de 40 variantes de chaque paramètre R, G ou B.

R, G et B sont codés de 0 à 255.

256 divisé par 40,30... donne 6, 35...

Première solution, pour R, G et B il faut par exemple prendre les valeur de 7 en 7 !

0, 7, 14, 21... 252 !

Seconde solution n'utiliser que deux des trois paramètre, R et G ou G et B ou R et B.

Dans ce cas 256 x 256 étant égal à 65536, cela permet de prendre pour chaque paramètre les 256 valeurs !

Et si la limite est en fait 65428 comme vous le constatez, alors avec 255 valeurs cela passera car 255 x 255 donne 65025...

Voilà, voilà !

Je vous confirmerai si ça marche dès que j'aurais le temps d'adapter mon programme.

Un grand merci à tous.

Bonjour

En effet en ajoutant dans mon code BA : If Cpt > 65428 Then Cpt = 0

Après le Cpt = Cpt + 1, il n'y a plus d'erreur.

@ bientôt

LouReeD

Re,

j'ai complété mes tests aussi et je trouve 64526 (plantage à 64527) comme limite et non 64000 comme annoncé par MS (et non plus 65535 comme tu as envisagé)
(pourquoi 2 de moins quez vous ? bizarre...)
Attention aussi que c'est pour le classeur !
Si qq'un a utilisé une autre couleur que celles retenues dans une autre feuille, ça compte dans le total.
Peut-être se prévoir une marge de sécurité.
eric

Donc tout ceci est en accord avec ce que j'indiquais dans mes liens de ma première réponse...

Et ben il en faut du temps pour se faire entendre !

@ bientôt

LouReeD

On a affiné les réactions d'excel quand même

J'ai bogué en rapportant mes nombres.
C'est bien 65xxx et non 64xxx
En repartant sur un classeur neuf j'ai obtenu le plantage à 65430.
eric

Bonjour…

Des jeux de couleurs ? Pour le Fun …

Affiné ?

Juillet 2019, prrmier lien, j'indiquais Microsoft sur le net = 64000, sur ma machine 65428... Une bécane de 2013 avec Excel 2016.

Aujourd'hui avec Excel 365 et un i5 pareil...

Ordonc, je ne peux voir le fichier avant ce soir...

@ bientôt

LouReeD

Bonjour,

Je viens de finir la mise en œuvre de ma première solution avec les couleurs codées de 7 en 7 et effectivement cela ne plante jamais mais c'est vraiment très laid !

Donc je vais me mettre à tester ma seconde solution...

Affaire à suivre.

Bonjour

Ma seconde solution fonctionne parfaitement.

Le problème est donc "résolu".

Cependant si un jour quelqu'un trouve comment remettre à zéro le compteur qui bloque vers les 65 000, cela ouvrirait de nouvelles opportunités !

Merci à tous

Rechercher des sujets similaires à "message erreur nombre formats trop eleve"