Résolu Macro N.delete qui renvoie une erreur

citizenbaban

XLDnaute Junior
Bonjour à tous,

Petit problème avec une macro qui tournait très bien pendant une semaine et qui me renvoie une erreur 1004 avec erreur de syntaxe sur le N.delete depuis hier soir, depuis que j'ai copié le fichier dans un autre dossier.

VB:
Sub Suppression_Noms_Plages()

Dim N As Name
For Each N In Names
If N.Name <> "Mode_1" Then N.Delete
Next

End Sub

Je ne m'explique pas vraiment pourquoi ce changement, je compte sur vous pour éclairer ma lanterne :)

Citizen
 

citizenbaban

XLDnaute Junior
Bonjour
Peut être qu'avec le contexte du fichier , on pourrait comprendre ?
Bonjour Hervé62,

En fait j'ai une macro qui me permet de créer des onglets à partir d'une trame et de créer des noms de plage en fonction de ces noms d'onglets. Le nombre d'onglets peut varier de 1 à 10 en fonction des besoins et donc le nombre de plages créés entre 2 et 20 :

VB:
    Range("K2", Range("K2").End(xlDown)).Select
    Names.Add Name:="Valeurs_" & ActiveSheet.Name, RefersTo:="=" & ActiveSheet.Name & "!" & Selection.Address

    Range("L2", Range("L2").End(xlDown)).Select
    Names.Add Name:="Concatener_" & ActiveSheet.Name, RefersTo:="=" & ActiveSheet.Name & "!" & Selection.Address
Je souhaiterai pouvoir supprimer tous les noms de plage en fin de manip pour remettre le fichier dans son état initial en conservant uniquement le nom de plage "Mode_1", donc en supprimant les 2 à 20 autres noms créés précédemment.

J'ai vu sur le forum que pas mal de monde avait des soucis avec les actions de .Delete mais sans trouver de solution pour autant :(
 
Dernière édition:

citizenbaban

XLDnaute Junior
Bonjour tout le monde,
Dans votre macro Suppression_Noms_Plages, à quoi correspond Names ?
Bonjour Sylvanu,

Names correspond à ActiveWorkbook.Names, je pourrais en effet le remplacer dans le code mais le problème porte vraiment sur le N.delete qui est surligné dans le débogueur et me renvoie ce message d'erreur :

Erreur d'exécution '1004':

Le nom entré n'est pas valide.

Raisons possibles :

- le nom ne commence pas par une lettre ou un trait de soulignement

- le nom contient un espace ou un autre caractère invalide

- le nom est en conflit avec un nom prédéfinit dans Excel ou le.... (le reste n'est accessible)
 
Dernière édition:

sylvanu

XLDnaute Accro
Supporter XLD
Je tenterais ça :
VB:
Sub Suppression_Noms_Plages()

Dim N As Name, DernierNom as string
For Each N In Names
   DernierNom=N.name
   If N.Name <> "Mode_1" Then N.Delete
Next

End Sub
Lorsque le bug apparait on a la valeur qui pose problème dans DernierNom. Ca donne au moins une piste.
 

citizenbaban

XLDnaute Junior
Je tenterais ça :
VB:
Sub Suppression_Noms_Plages()

Dim N As Name, DernierNom as string
For Each N In Names
   DernierNom=N.name
   If N.Name <> "Mode_1" Then N.Delete
Next

End Sub
Lorsque le bug apparait on a la valeur qui pose problème dans DernierNom. Ca donne au moins une piste.
Je n'ai rien qui s'affiche excepté le message d'erreur cité au dessus :confused: et dans le gestionnaire de noms, tous mes noms de plage sont présents, ça plante dès le 1er nom
 

sylvanu

XLDnaute Accro
Supporter XLD
Oui, mais dans la fenetre des variables locales, que vaut DernierNom ?
D'autre part, avez vous remis votre fichier dans l'ancien amplacement et vérifiez qu'il fonctionne toujours ?

Et surtout apprenez à répondre aux questions, comme celle d'Hervé : "C'est compliqué de joindre le fichier , ou juste un bout ? "
Avec un fichier c'est toujours plus simple, ça permettrait par ex de voir si sur nos PC on reproduit le problème.
 

citizenbaban

XLDnaute Junior
Oui, mais dans la fenetre des variables locales, que vaut DernierNom ?
D'autre part, avez vous remis votre fichier dans l'ancien amplacement et vérifiez qu'il fonctionne toujours ?

Et surtout apprenez à répondre aux questions, comme celle d'Hervé : "C'est compliqué de joindre le fichier , ou juste un bout ? "
Avec un fichier c'est toujours plus simple, ça permettrait par ex de voir si sur nos PC on reproduit le problème.
Le fichier à son ancien emplacement ne marche plus non plus. Dernier_nom renvoie "_xlfn.MODE.SNGL".
Concernant la réponse à Hervé, il fallait que je retire ce qui pouvait être confidentiel donc c'était un peu long.
 

citizenbaban

XLDnaute Junior
:confused: ça semble cohérent avec le fait qu'elle tournait bien la semaine dernière...
Est-ce qu'en faisant une copie du fichier et en testant sur la copie ça marche aussi ? je ne vois pas pourquoi une copie aurait mis le bouzin mais pourquoi pas.

J'ai bien une fonction mode.simple dans une feuille mais qui renvoie à une autre plage qui n'est pas nommée. Dans le doute je viens de la supprimer mais sans plus de réussite
 

citizenbaban

XLDnaute Junior
En l'occurence à la cellule F10 de CQxx, on a : =_xlfn.MODE.SNGL($B$2:$B$217) qui d'ailleurs donne #NOM? si on clique dessus.
Oui c'est cette formule que j'ai supprimé (mais qui pourtant marchait bien chez moi en me renvoyant une valeur).
C'est bizarre, ça fait comme si Excel était bien en version 2016 mais le VBA en version 2007 ou 2003
 

sylvanu

XLDnaute Accro
Supporter XLD
Avant Après
avant.jpg après.jpg
Avez vous changez de version XL entre temps ?
Il semblerait qu'il y ait un lien :
 

sylvanu

XLDnaute Accro
Supporter XLD
Alors vous pouvez relancer la macro, DernierNom ne peut plus valoir cette valeur. Sur quelle valeur DernierNom la macro s'arrete ?
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas