Afficher les noms des styles utilisés

panda

XLDnaute Occasionnel
Bonjour
J'ai un gros fichier excel qui me donne un message erreur lorsque je veux faire une mise en forme. Je pense que cela vient du grand nombre de styles que j'ai dans ce classeur (j'ai déjà eu le cas sur un autre classeur).
La seule solution consiste donc à supprimer des styles mais je ne veux pas faire de bêtises. Ce qui serait bien : Obtenir dans une feuille le nom des styles utilisés ... Est ce possible ? Mon niveau en VB est -1 et pourtant je ne vois que cette possibilité...
Quelqu'un pourra-til m'aider ?

Merci et bon courage à nous qui travaillons !
 

Pierrot93

XLDnaute Barbatruc
Re : Afficher les noms des styles utilisés

Bonjour,

essaye ceci, te donnera le nom des styles du classeur actif :
Code:
Option Explicit
Sub test()
Dim s As Style, i As Integer
For Each s In ActiveWorkbook.Styles
    i = i + 1
    Cells(i, 1) = s.Name
Next s
End Sub

bon après midi
@+
 

panda

XLDnaute Occasionnel
Re : Afficher les noms des styles utilisés

Merci Pierrot93
Je viens de la tester sur un autre fichier et j'ai l'impression qu'elle me donne la liste des styles du classeur. Je pense qu' il y a eu du n'importe quoi de fait et que les styles ont pû être appliqués sur une cellule sans raison.
Dans ce cas ... Peut être que le nom des styles avec la référence de la feuille où il est utilisé serait encore mieux...
Ouh je deviens exigeante ! Mais la deuxième macro qui supprime tous les styles personnalisés, ja'i peur que ce soit trop "expéditif".

Merci pour votre aide.
 

Pierrot93

XLDnaute Barbatruc
Re : Afficher les noms des styles utilisés

Re,

faut boucler sur toutes les cellules de toutes les feuilles, risque d'être long :
Code:
Option Explicit
Sub test()
Dim ws As Worksheet, c As Range, i As Integer
Worksheets.Add
For Each ws In Worksheets
    If ws.Name <> ActiveSheet.Name Then
        For Each c In ws.UsedRange
            If Not ActiveWorkbook.Styles(c.Style.Name).BuiltIn Then
                i = i + 1
                Cells(i, 1) = c.Address(external:=True)
                Cells(i, 2) = c.Style.Name
            End If
        Next c
    End If
Next ws
End Sub
 

Discussions similaires

Réponses
16
Affichages
475
Réponses
19
Affichages
555

Statistiques des forums

Discussions
312 216
Messages
2 086 342
Membres
103 192
dernier inscrit
Corpdacier