IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Each nom delete ne fonctionne pas


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2017
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 79
    Par défaut Each nom delete ne fonctionne pas
    Bonjour

    La macro ci-dessous a pour but de supprimer toutes les noms de plage du classeur actif.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub EFFACER()
    For Each Nom In ActiveWorkbook.Names
    ActiveWorkbook.Names(Nom.Name).Delete
    Next
     
    End Sub
    Seulement, elle fonctionne avec certains classeurs, et avec d'autres elle bugge. Au débogage, elle indique "next".

    J'ai essayé d'y parer en introduisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not IsError(ActiveWorkbook.Names(Nom.Name)) Then
    ActiveWorkbook.Names(Nom.Name).Delete
    End If
    Cela ne résout pas le problème. Ci-joint le fichier excel.

    Quelqu'un voit il?

    Merci par avance

    Effacer_nom.xlsx

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    un pragmatique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub piou()
    Dim Nom As Name
    For Each Nom In ThisWorkbook.Names
        Nom.Delete
    Next
    End Sub
    fait l'affaire sur ton fichier chez moi (Excel 2010). Du coup essaie le, ce probleme n'apparait pas dans la liste des problemes connus sous Mac (source : https://www.rondebruin.nl/mac/mac027.htm)
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    j'ai rencontré une fois le cas, et par tâtonnement j'ai réalisé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each C In WB.Names
            ' _xlfn. est une donnée présente dans le gestionnaire de nom
            ' qui permet uniquement à Excel de savoir si la formule SIERREUR est supportée !
            ' on ne peut pas la supprimer, il faut la détecter pour ne pas la traiter
            If Not C.Name Like "_xlfn.*" Then C.Delete
        Next C
    il semblerait que des "noms cachés" existent parfois et qu'on ne peut pas les supprimer, ils sont utilisés pour de la compatibilité je pense.

    regarde si ça ne proviendrait pas de cela

    Dans la négative, je t'invite à :

    - lancer une première procédure qui va lister chez nom et son Range
    - lancer ensuite ta procédure de suppression des noms, en neutralisant les erreurs
    - relancer la première procédure et visualiser les noms qui n'ont pas été supprimés

  4. #4
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2017
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 79
    Par défaut
    Bonjour Jean-Philippe André et Joe Levrai

    Merci pour vos réponses, je les ai testées et elles ne fonctionnent pas.
    Il n'y pas de bug, mais la liste des noms ne s'efface pas.
    Fonctionnent-elles lorsque vous les appliquez sur le fichier que j'ai joint?

    La particularité du code que j'ai cité initialement, c'est qu'il fonctionne la plupart du temps. Seulement parfois, comme dans l'excel joint, rien à faire, cela beugue.

    Merci par avance de vos retours
    Cdt
    Guillaume

  5. #5
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    J'ai testé ton classeur, si celui-ci avait un problème, je ne l'ai pas rencontré :
    j'y ai mis ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub toto()
    Dim N As Name
        With ActiveWorkbook
            For Each N In .Names
                N.Delete
            Next
        End With
    End Sub
    Edit : Vérifie peut être les mise à jour de ton Excel …
    Edit 2 : juste une précision, je l'ai testé sur Excel 2011 version 14.7.6
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Aucun souci de mon côté également

    quand ça plante, essaye de récupérer le nom qui pose problème, et refais des tests pour voir si c'est toujours le même ou non

Discussions similaires

  1. Réponses: 9
    Dernier message: 10/08/2013, 15h17
  2. [Lazarus] Ma requête SQL DELETE ne fonctionne pas
    Par ulysse_31 dans le forum Lazarus
    Réponses: 24
    Dernier message: 17/03/2013, 20h21
  3. DELET Ne fonctionne Pas
    Par tun86 dans le forum JDBC
    Réponses: 2
    Dernier message: 26/04/2011, 23h03
  4. Ma requete DELETE ne fonctionne pas
    Par micniv dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 11/04/2008, 13h08
  5. Delete ne fonctionne pas avec mon gridview
    Par NicoNGRI dans le forum ASP.NET
    Réponses: 2
    Dernier message: 26/10/2006, 08h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo