Changer propriété gestionnaires de noms

Anonyme
2021-04-09T20:11:39+00:00

Bonjour,

est-il possible, par macro, de changer la propriété « étendue » du gestionnaire

de noms, du genre

for each name in activeeorkbook.names

if not étendue = « classeur » then

étendue = « classeur »

end if

next

Merci

Flac

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

6 réponses

  1. DanielCo 107.7K Points de réputation
    2021-04-13T07:44:58+00:00

    Bonjour,

    Je n'arrive pas à créer un nom en erreur. Excel les transforme automatiquement. Est-ce que tu peux me fournir un classeur exemple ?

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2021-04-13T04:06:34+00:00

    Bonjour,

    Sub test()

    Avant de revenir à mon problème initial, j'aimerais

    résoudre le la macro de suppression des plages comportant des erreurs.

    Quand la macro rencontre effectivement un nom avec une erreur,

    au lieu de le supprimer, elle me renvoie une erreur

    d'exécution 1004:

    • La syntaxe de ce nom est incorrecte

    -Vérifier que le nom:

       - commence par une lettre ou par un trait de soulignement(_)

       -  ne contient pas d'espace ou de caractère non autorisé

       -   n'entre pas en conflit avec un nom existant dans le classeur

    Sub test()

      Dim N As Name, Plage As String, Nom As String

      For Each N In ActiveWorkbook.Names

         If IsError(Evaluate(N.RefersTo)) Then

          N.Delete

           End If

      Next N

    End Sub

    Or, c'est justement parce que la syntaxe n'est pas correcte que je veux

    supprimer le nom en question. La macro bloque à N.Delete

    Merci de vous intéresser à ce problème

    Flac

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. DanielCo 107.7K Points de réputation
    2021-04-10T18:49:45+00:00

    "La macro demande, à chaque addition de nom, de spécifier le fichier

    dans lequel on veut le sauvegarder. Le terme ActiveWorkbook n'est

    pas implicite. Comment faire pour que ce soit implicite."

    Je n'arrive pas à reproduire ton problème. Est-ce que tu peux me fournir un classeur exemple ? Sinon, pour supprimer aussi les noms en erreur :

    Sub test()

      Dim N As Name, Plage As String, Nom As String

      For Each N In ActiveWorkbook.Names

        If IsError(Evaluate(N.RefersTo)) Then

          N.Delete

        ElseIf UBound(Split(N.Name, "!")) > 0 Then

          Nom = Split(N.Name, "!")(1)

          Plage = N.RefersTo

          N.Delete

          ActiveWorkbook.Names.Add Nom, RefersTo:=Plage

        End If

      Next N

    End Sub

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2021-04-10T17:33:40+00:00

    Bonjour, 

    Merci de t'intéresser à ma question.

    Ta solution est prometteuse.

    Avant de discuter de la question comme telle, serait-il possible, avant

    d'exécuter la macro, de supprimer tous les noms de plage comportant

    des erreurs.

    La macro demande, à chaque addition de nom, de spécifier le fichier

    dans lequel on veut le sauvegarder. Le terme ActiveWorkbook n'est

    pas implicite. Comment faire pour que ce soit implicite.

    Bonne journée

    Flac

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. DanielCo 107.7K Points de réputation
    2021-04-10T08:25:03+00:00

    Bonjour,

    A mon avis, il faut supprimer et recréer les noms :

    Sub test()

      Dim N As Name, Plage As String, Nom As String

      For Each N In ActiveWorkbook.Names

        If UBound(Split(N.Name, "!")) > 0 Then

          Nom = Split(N.Name, "!")(1)

          Plage = N.Refersto

          N.Delete

          ActiveWorkbook.Names.Add Nom, Refersto:=Plage

        End If

      Next N

    End Sub

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire