VBA Suppression noms

Bonjour,

Je souhaite supprimer tous les noms d'un classeur par VBA, le code que j'ai essayé :

Sub Supprimer_Nom ()

For Each Nom In ActiveWorkbook.Names

Nom.Delete

Next

End Sub

Seulement, j'ai un erreur 1004. Il me semble que c'est le Nom.delete qui pose problème.

Merci pour votre aide.

Bonjour,

Tu veux supprimer les noms de quoi ? Du fichier ? Des feuilles ? D'autre part, je pense que le nom ne peut-être vide et donc qu'il faut une valeur dans tous les cas...

Peux-tu nous en dire plus sur l'intérêt de cette manip' ?

Etant sur un mac, je n'ai pas de gestionnaire de noms : je souhaite supprimer tous les noms d'un fichier que j'ai récupéré.

Sinon quand j'ouvre le fichier, je dois rentrer un nouveau nom systématiquement (nom déjà utilisé, _FilterDatebase)

Merci

Bonjour,

J'ai testé le code sur ma machine, sans rencontrer d'erreur (et les noms sont bien supprimés )

@Pedro22: Workbook.Names représente l'ensemble des plages de cellules nommées, qu'on retrouve dans le Gestionnaire de noms

Bonjour,

J'ai testé le code sur ma machine, sans rencontrer d'erreur (et les noms sont bien supprimés )

@Pedro22: Workbook.Names représente l'ensemble des plages de cellules nommées, qu'on retrouve dans le Gestionnaire de noms

Merci pour la précision, je me suis renseigné entre temps. Je ne manipule pas beaucoup les plages nommées...

Le code ne marche toujours pas.

Capture d’écran 2018-07-27 à 10.36.35.png

Je l'ai mis dans un module et dans mes macros personnels.

capture d ecran 2018 07 27 a 10 36 35

Si tu mets MsgBox Nom à la place de Nom.Delete, il t'affiche quoi ?

capture d ecran 2018 07 27 a 10 45 04

La commande Nom.Delete ne me pose pas de problème sous Windows. Peux-tu réaliser une suppression manuelle d'un nom et poster le code enregistré via l'enregistreur de macro ?

Sub TEST()

'

' TEST Macro

'

'

ActiveWorkbook.Names("__NHS20").Delete

ActiveWorkbook.Names("_000._INSTALLATIONS_ET_PRESTATIONS_GENERALES").Delete

ActiveWorkbook.Names("_100._TRAVAUX_PREPARATOIRES").Delete

End Sub

Et en procédant différemment ?

Sub Supprimer_Noms()

Dim N As Byte

For N = 1 To ActiveWorkbook.Names.Count
     ActiveWorkbook.Names(N).Delete
Next N

End Sub

Bonjour saaku, Pedro,

voici ton code VBA modifié :

Sub TEST()
  ActiveWorkbook.Names("_NHS20").Delete
  ActiveWorkbook.Names("_000_INSTALLATIONS_ET_PRESTATIONS_GENERALES").Delete
  ActiveWorkbook.Names("_100_TRAVAUX_PREPARATOIRES").Delete
End Sub

tu avais peut-être mis un point en trop après 000 et 100 ? et peut-être faut-il un seul caractère souligné avant NHS20 ?

de toute façon, tes instructions sont correctes ; faut juste vérifier l'orthographe de tes noms définis.

dhany

Et en procédant différemment ?

Sub Supprimer_Noms()

Dim N As Byte

For N = 1 To ActiveWorkbook.Names.Count
     ActiveWorkbook.Names(N).Delete
Next N

End Sub

Ce code m'indique : erreur d'exécution "6" // dépassement de capacité

Bonjour saaku, Pedro,

voici ton code VBA modifié :

Sub TEST()
  ActiveWorkbook.Names("_NHS20").Delete
  ActiveWorkbook.Names("_000_INSTALLATIONS_ET_PRESTATIONS_GENERALES").Delete
  ActiveWorkbook.Names("_100_TRAVAUX_PREPARATOIRES").Delete
End Sub

tu avais peut-être mis un point en trop après 000 et 100 ? et peut-être faut-il un seul caractère souligné avant NHS20 ?

de toute façon, tes instructions sont correctes ; faut juste vérifier l'orthographe de tes noms définis.

dhany

Le code que je vous ai transmis est par l'enregistreur de macro, j'ai sélectionné le nom définis puis supprimé.

Je souhaite un code qui me supprime en une seule manipulation tous les noms du classeurs (j'en ai beaucoup sur le fichier sur lequel je travaille)

Merci

Tes 2 réponses m'indiquent que j'ai sous-estimé le nombre de noms à supprimer. Remplace donc dans mon code :

Dim N As Byte 'N = 255 au max
'Par :
Dim N As Long
capture d ecran 2018 07 27 a 15 36 28

Tes 2 réponses m'indiquent que j'ai sous-estimé le nombre de noms à supprimer. Remplace donc dans mon code :

Dim N As Byte 'N = 255 au max
'Par :
Dim N As Long

Encore une fois ça, ça fonctionne de cette manière sur mon poste (à la différence que j'ai remplacé "ActiveSheet.Names(N)" par "ActiveSheet.Names(1)").

Pour ma part, je ne pourrais pas t'aider davantage, désolé.

@saaku

screen

le message d'erreur de ta copie d'écran est clair : tu as un nom défini dont le 1er caractère est ni une lettre, ni un trait de soulignement.

vérifie donc tes noms définis : il y en a peut-être un qui commence par un chiffre ? ou par une virgule ou un point ? ou par un autre caractère de ponctuation ? t'as pas mis en 1er caractère un smiley, hein ?

(# et @ sont interdits aussi ! )

dhany

Re-bonjour,

le message d'erreur de ta copie d'écran est clair : tu as un nom défini dont le 1er caractère est ni une lettre, ni un trait de soulignement.

Le question qu'on est en droit de se poser alors serait: "comment donc aurait-on pu créer ce nom?" (et je n'ai pas la réponse, j'en ai peur !)

En supprimant les noms dans un classeur, dans l'ordre de leur index, j'ai obtenu un jour, me semble-t-il, une erreur d'index. Toujours si mes souvenirs sont bons, j'avais résolu le problème en les supprimant depuis le dernier jusqu'au premier.

Quant à savoir si la chose changera quelque chose sur un Mac ... à tout hasard, essaie:

Sub essai()
For n = ThisWorkbook.Names.Count To 1 Step -1
    ThisWorkbook.Names(n).Delete
Next n
End Sub

... Et sous Mac, il n'existe pas une option qui créerait, dans une plage de cellules, la liste de tous les noms du classeur ? Sous Win et Office 2016, c'est dans le groupe Noms définis > Dans une formule > Coller une liste

Bonjour,

Copie cette procédure dans ton fichier et exécute là :

Public Sub Delete_names()
Dim nm As Name, i As Long
    Worksheets.Add
    'On Error Resume Next
    For Each nm In ActiveWorkbook.Names
        i = i + 1
        With ActiveSheet
            .Cells(i, 1).Value = nm.Name
            .Cells(i, 2).Value = nm.RefersTo
            .Cells(i, 3).Value = nm.Visible
        End With
    Next
    MsgBox "Nombre de nom(s) : " & i, 64, "Information"
End Sub

A te relire.

Cdlt.

Rechercher des sujets similaires à "vba suppression noms"