Dégraissez le mammouth test macro

Re,

Ta proposition de barre d'outil est bien mais n'apporte rien de plus au programme,

Oui et non. Essaie ceci tout de même :

  • Ouvre le fichier sans activer les macros
  • Vas dans Fichier -> Enregistrer sous...
  • Choisis l'extension *.XLA
  • Sauve ton fichier sur le bureau par exemple
  • Ferme Excel

Pour utiliser le programme, double clique sur le fichier XLA se trouvant sur ton bureau.

Ouvre ensuite au hasard un fichier à "dégraisser".

Il te reste à cliquer sur les boutons Analyse, continuer ou annuler pour effectuer l'opération.

Pour faire disparaitre la barre d'outils, il faut ferme Excel complétement.

Amicalement

re Dan,

Non je préfère resté comme çà (pour le moment) et comme dit + haut, voir à l'usage.

C'est quand même une opération qui reste ponctuelle !

Les modifications déjà apportées n'ont pas encore été suffisamment testées, il risque d'y

avoir des surprises, j'attends les remontées.

Rien ne t'empêche de continuer sur ta lancée et de faire une version bis sous un autre nom,

tu peux récupérer et remanier les macros.

Bonne journée et merci

Claude

édit: sur ce poste, je viens de tester le fichier et la macros pour compter les noms

du gestionnaire ne fonctionne pas correctement (il y a + de 30 noms avec #REF!) et çà me signale que deux,

Ce point serait donc à revoir.

https://forum.excel-pratique.com/excel/insertion-ligne-avec-copie-formules-t18483.html#p106187

Claude

Bonjour à vous,

Claude, change alors la macro comme ceci :

Sub essai2() 'rapport Analyse Mammouth
   Dim Nms As Name, Cpt%
            '---- compte les Noms/définis erronés (#REF!) ----
          For Each Nms In Names
                If InStr(Nms.Value, "#REF") > 0 Then Cpt = Cpt + 1
           Next Nms
        Range("a1") = Names.Count & " noms" 'total noms ok
      Range("a2") = Cpt & " noms Faux"
    End Sub

J'ai enlevé le ! de #REF!

Si tu veux également compter les erreurs #NA, va aussi falloir ajouter une condition.

Bonjour vba-new ,

oui, il faudrait aussi compter les #N/A, enfin je crois ?

Je viens de tester sur le fichier en question,

sur 74 noms, de 2 erreurs comptées on passe à 10 avec ton nouveau code,

alors que si l'on ouvre le gestionnaire de noms, je vois 42 #REF! + 1 #N/A

Cela vient peut-être du fait que beaucoup de noms on des adresses d'autres fichiers fermés ??

Je me demande si c'est pas un peu dangereux cette affaire !

Ton avis ?

Claude

Bonsoir,

Cela vient peut-être du fait que beaucoup de noms on des adresses d'autres fichiers fermés ??

Non, pas de soucis...

Par contre, essaie en changeant .value par .RefersTo :

If InStr(Nms.RefersTo, "#REF") > 0 Then Cpt = Cpt + 1

Par contre, pour le N/A, j'ai pas testé, mais je pense pas que ce soit une bonne idée de supprimer, cela peut être une valeur non trouvée dans une formule

Bonne soirée

Bonjour cousinhub,

Pareil, çà donne 10 noms faux au lieu de 42

(et quels sont les critères qui font cette différence ? )

merci de nous rejoindre

Amicalement

Claude

Re-,

Attention, tu fais l'amalgame entre le résultat du nom, et la formule inscrite à l'intérieur...

Il n'y a en effet que 10 noms dont la formule contient "#REF"

Insère une feuille vierge, et déroule ce code :

Sub ee()
Dim Nms As Name
Dim DerCel As Range
For Each Nms In Names
    Set DerCel = [A65000].End(xlUp)(2)
    DerCel = "'" & Nms.RefersTo
    If InStr(Nms.RefersTo, "#REF") > 0 Then
        DerCel.Offset(, 1) = "Ici"
    End If
Next Nms
End Sub

Tu verras que seuls 10 noms contiennent cette erreur...

re,

Ok, ça me rassure !

bêtement, je regardais dans le gestionnaire la colonne "Valeur"

au lieu de "Fait référence à" (c'est quand même trompeur !)

çà veut dire que je peux supprimer sans crainte ces 10 noms avec ce code:

For Each Nms In Names
    If InStr(Nms.RefersTo, "#REF") > 0 Then Nms.Delete
Next Nms

et pour le #N/A ?

en tout cas merci

Claude

Bonjour claude,

Comme l'a dit cousinhub :

cousinhub a écrit :

Par contre, pour le N/A, j'ai pas testé, mais je pense pas que ce soit une bonne idée de supprimer, cela peut être une valeur non trouvée dans une formule

Mais si tu veux tout de même supprimer les erreurs #N/A, tu peux faire comme ceci :

For Each Nms In Names
    If InStr(Nms.RefersTo, "#REF") > 0 Or InStr(Nms.RefersTo, "#N/A") > 0 Then Nms.Delete
Next Nms

Bonsoir vba-new, à tous,

Gestionnaire de noms (suite)

Pour Info:

Détecter les #N/A, c'est Ok il compte bien

par contre pour les supprimer çà plante (quand il y en a)

'---- supprime les Noms/définis erronés (#REF! et #N/A) ----
For Each Nms In Names
    If InStr(Nms.RefersTo, "#REF") Then Nms.Delete
    'If InStr(Nms.RefersTo, "#N/A") Then Nms.Delete
Next Nms

bug ici (erreur 424 Objet requis)

    'If InStr(Nms.RefersTo, "#N/A") Then Nms.Delete

pareil avec :

    'If InStr(Nms.Value, "#N/A") Then Nms.Delete

J'avais interprété le contraire de ce qu'a dit cousinhub !

donc au final, je ne supprime pas les #N/A et ne vais même pas les compter.

On peut dire que ce point est résolu.

Amicalement

Claude.

Bonjour à tous,

Après pas mal de tests, je pense pouvoir solder ce poste,

voici la dernière version que je vais ajouter dans "Applications Excel"

Merci à tous d'avoir participer

Amicalement

Claude

Rechercher des sujets similaires à "degraissez mammouth test macro"