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:

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 Barbatruc
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
 

Discussions similaires

Réponses
8
Affichages
1 K

Statistiques des forums

Discussions
311 541
Messages
2 080 546
Membres
101 240
dernier inscrit
Zaki