XL 2013 lister toutes les cellules dont la formule contient au moins une plage nommée

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Jouxte

XLDnaute Occasionnel
Bonjour à toutes et tous,

Dans un classeur aux multiples onglets et aux plages nommées qui se sont multipliées au fil du temps, je souhaite faire du ménage dans ces plages nommées.
A cette fin je souhaite lister toutes les cellules dont la formule contient au moins une plage nommée.

Merci par avance pour votre aide et bonnes fêtes de fin d'année..
 
Ah bizarre !
Reprends le code encore une fois dans les post car j'ai du mal à accoucher d'un code qui fonctionne.
En voulant faire la malin avec mes initialisations de tableaux. Je suis revenu aux bases 🙂.
J'ai ajouté .Value à l'instruction que tu signales en erreur.
 
Décidément, ce truc refuse de fonctionner.
J'ai essayé chez mois avec plus de 1000 formules, ça ne génère pas d'erreur.
Prends le code de @Staple1600, on en finira avec cette affaire.

Sinon essaie quand même de remplacer la dernière instruction par
VB:
formules = Application.Transpose(formules)
MsgBox UBound(formules, 1) & " formules listées"
[A1].Resize(UBound(formules, 1), UBound(formules, 2)).Value = formules

Ou encore de faire une déclaration explicitement Variant de formules()
Code:
Dim formules() As Variant
 
Dernière édition:
=>jouxte
Alors, on va faire dans l'empirique 😉
VB:
Sub Lister_Formules_II()
Dim ws As Worksheet, j&, formules(), rng1 As Range, rng2 As Range
j = 1
ReDim Preserve formules(1 To 50000, 1 To 3)
'si erreur remplacer 50000 par une valeur supérieure
For Each ws In ActiveWorkbook.Sheets
Set rng1 = Nothing
    On Error Resume Next
    Set rng1 = ws.Cells.SpecialCells(xlCellTypeFormulas)
    On Error GoTo 0
    If Not rng1 Is Nothing Then
        For Each rng2 In rng1
        formules(j, 1) = rng1.Parent.Name
        formules(j, 2) = rng2.Address(0, 0)
        formules(j, 3) = "'" & CStr(rng2.FormulaLocal)
         j = j + 1
        Next rng2
    End If
Next ws
Sheets.Add
[A1:C1] = Array("Nom feuille", "Adresse", "Formule")
[A2].Resize(UBound(formules, 1), UBound(formules, 2)) = formules
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour