Comment effacer tous les noms d'une feuille en VBA?

Le
Emile
Bonjour à tous,
Je cherche à effacer tous les noms (Names) d'une feuille Excel, mais pas
tous ceux du classeur.
Je brode lamentablement autour de l'exemple ci-dessous, mais c'est pas ça !!
:-(
Est-ce que quelqu'un peut me donner la solution?
Je vous remercie d'avance,
Cordialement.

Sub Macro1()

Dim n As Name
For Each n In Sheets("Personnel").Names
' MsgBox "Nom =" & n.Name & vbCr & "Zone = " & n.Value
n.Delete
Next n

End Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Tatanka
Le #5079441
Salut Émile,

Pour qu'un nom ne soit disponible que pour une
certaine feuille, il faut qu'il soit précédé du nom
de la feuille et de !
Si tu veux effacer tous les noms commençant par Personnel,
la macro suivante me semble appropriée :

Sub Efface_Noms_Dans_Feuille()
For Each n In ActiveWorkbook.Names
If InStr(1, n.Name, "Personnel") <> 0 Then n.Delete
Next n
End Sub

Est-ce que ça te convient ?

Serge


"Emile"
Bonjour à tous,
Je cherche à effacer tous les noms (Names) d'une feuille Excel, mais pas tous ceux du classeur.
Je brode lamentablement autour de l'exemple ci-dessous, mais c'est pas ça !! :-(
Est-ce que quelqu'un peut me donner la solution?
Je vous remercie d'avance,
Cordialement.
---------------------------------------------------------
Sub Macro1()

Dim n As Name
For Each n In Sheets("Personnel").Names
' MsgBox "Nom =" & n.Name & vbCr & "Zone = " & n.Value
n.Delete
Next n

End Sub
---------------------------------------------------------





Tatanka
Le #5079401
Et pour effacer tous les noms qui se réfèrent à
des cellules de la feuille Personnel :

Sub Efface_Noms_Définis_Dans_Feuille_Personnel()
For Each n In ActiveWorkbook.Names
v = n.RefersTo
If InStr(1, v, "Personnel") <> 0 Then n.Delete
Next n
End Sub

Serge


"Tatanka"
Salut Émile,

Pour qu'un nom ne soit disponible que pour une
certaine feuille, il faut qu'il soit précédé du nom
de la feuille et de !
Si tu veux effacer tous les noms commençant par Personnel,
la macro suivante me semble appropriée :

Sub Efface_Noms_Dans_Feuille()
For Each n In ActiveWorkbook.Names
If InStr(1, n.Name, "Personnel") <> 0 Then n.Delete
Next n
End Sub

Est-ce que ça te convient ?

Serge


"Emile"
Bonjour à tous,
Je cherche à effacer tous les noms (Names) d'une feuille Excel, mais pas tous ceux du classeur.
Je brode lamentablement autour de l'exemple ci-dessous, mais c'est pas ça !! :-(
Est-ce que quelqu'un peut me donner la solution?
Je vous remercie d'avance,
Cordialement.
---------------------------------------------------------
Sub Macro1()

Dim n As Name
For Each n In Sheets("Personnel").Names
' MsgBox "Nom =" & n.Name & vbCr & "Zone = " & n.Value
n.Delete
Next n

End Sub
---------------------------------------------------------









Tatanka
Le #5079371
Plus sûr ainsi :

Sub Efface_Noms_Définis_Dans_Feuille_Personnel()
For Each n In ActiveWorkbook.Names
v = n.RefersTo
If Mid(v, 2, 10) = "Personnel!" Then n.Delete
Next n
End Sub

Serge



"Tatanka"

Et pour effacer tous les noms qui se réfèrent à
des cellules de la feuille Personnel :

Sub Efface_Noms_Définis_Dans_Feuille_Personnel()
For Each n In ActiveWorkbook.Names
v = n.RefersTo
If InStr(1, v, "Personnel") <> 0 Then n.Delete
Next n
End Sub

Serge


"Tatanka"
Salut Émile,

Pour qu'un nom ne soit disponible que pour une
certaine feuille, il faut qu'il soit précédé du nom
de la feuille et de !
Si tu veux effacer tous les noms commençant par Personnel,
la macro suivante me semble appropriée :

Sub Efface_Noms_Dans_Feuille()
For Each n In ActiveWorkbook.Names
If InStr(1, n.Name, "Personnel") <> 0 Then n.Delete
Next n
End Sub

Est-ce que ça te convient ?

Serge


"Emile"
Bonjour à tous,
Je cherche à effacer tous les noms (Names) d'une feuille Excel, mais pas tous ceux du classeur.
Je brode lamentablement autour de l'exemple ci-dessous, mais c'est pas ça !! :-(
Est-ce que quelqu'un peut me donner la solution?
Je vous remercie d'avance,
Cordialement.
---------------------------------------------------------
Sub Macro1()

Dim n As Name
For Each n In Sheets("Personnel").Names
' MsgBox "Nom =" & n.Name & vbCr & "Zone = " & n.Value
n.Delete
Next n

End Sub
---------------------------------------------------------













MichDenis
Le #5079361
Pour supprimer tous les noms appartenants à la feuille "Feuil1!
ceci n'est pas suffisant ?

Sub test()
Dim N As Name
With Worksheets("Feuil1")
For Each N In .Names
N.Delete
Next
End With
End Sub




"Tatanka"
Plus sûr ainsi :

Sub Efface_Noms_Définis_Dans_Feuille_Personnel()
For Each n In ActiveWorkbook.Names
v = n.RefersTo
If Mid(v, 2, 10) = "Personnel!" Then n.Delete
Next n
End Sub

Serge



"Tatanka"

Et pour effacer tous les noms qui se réfèrent à
des cellules de la feuille Personnel :

Sub Efface_Noms_Définis_Dans_Feuille_Personnel()
For Each n In ActiveWorkbook.Names
v = n.RefersTo
If InStr(1, v, "Personnel") <> 0 Then n.Delete
Next n
End Sub

Serge


"Tatanka"
Salut Émile,

Pour qu'un nom ne soit disponible que pour une
certaine feuille, il faut qu'il soit précédé du nom
de la feuille et de !
Si tu veux effacer tous les noms commençant par Personnel,
la macro suivante me semble appropriée :

Sub Efface_Noms_Dans_Feuille()
For Each n In ActiveWorkbook.Names
If InStr(1, n.Name, "Personnel") <> 0 Then n.Delete
Next n
End Sub

Est-ce que ça te convient ?

Serge


"Emile"
Bonjour à tous,
Je cherche à effacer tous les noms (Names) d'une feuille Excel, mais pas tous ceux du classeur.
Je brode lamentablement autour de l'exemple ci-dessous, mais c'est pas ça !! :-(
Est-ce que quelqu'un peut me donner la solution?
Je vous remercie d'avance,
Cordialement.
---------------------------------------------------------
Sub Macro1()

Dim n As Name
For Each n In Sheets("Personnel").Names
' MsgBox "Nom =" & n.Name & vbCr & "Zone = " & n.Value
n.Delete
Next n

End Sub
---------------------------------------------------------













Emile63
Le #5079301
Merci Serge et Michel pour votre aide! :-)

La solution de Michel m'a paru la plus simple (pour mon niveau) ,
mais pour je ne sais quelle raison, elle ne fonctionne pas !
Alors que celle de Serge, Oui.
ayant une quinzaine d'onglets à mon classeur, sur quelques uns
j'éfface les noms, mais d'autres pas,
j'aurais souhaiter améliorer ce code, afin de passer les paramètres
(Nom de l'activeSheet) à cette sous-routine, afin que l'effacement des
noms ne s'appliquent qu'à la feuille concernée. Sans répéter la mè me
routine 10 fois.
Du coup écrire en dur son nom avec la fonction MID (les onglets ont
des noms différents et plus ou moins longs),
ça complique un peu... :-(
- Est-ce que vous avez une possibilité d'amélioration ? ;.-)

Merci d'avance, cordialement,



On 29 nov, 04:42, "MichDenis"
Pour supprimer tous les noms appartenants à la feuille "Feuil1!
ceci n'est pas suffisant ?

Sub test()
Dim N As Name
With Worksheets("Feuil1")
For Each N In .Names
N.Delete
Next
End With
End Sub

"Tatanka"
Plus sûr ainsi :

Sub Efface_Noms_Définis_Dans_Feuille_Personnel()
For Each n In ActiveWorkbook.Names
v = n.RefersTo
If Mid(v, 2, 10) = "Personnel!" Then n.Delete
Next n
End Sub

Serge


Tatanka
Le #5079251
Alors essaie ceci :

Sub Efface_Noms_Définis_Dans_Feuille_Active()
Dim nom As String
nom = ActiveSheet.Name
nc = Len(nom)
For Each N In ActiveWorkbook.Names
v = N.RefersTo
If Mid(v, 2, nc + 1) = nom & "!" Then N.Delete
Next N
End Sub

Serge


"Emile63"
Merci Serge et Michel pour votre aide! :-)

La solution de Michel m'a paru la plus simple (pour mon niveau) ,
mais pour je ne sais quelle raison, elle ne fonctionne pas !
Alors que celle de Serge, Oui.
ayant une quinzaine d'onglets à mon classeur, sur quelques uns
j'éfface les noms, mais d'autres pas,
j'aurais souhaiter améliorer ce code, afin de passer les paramètres
(Nom de l'activeSheet) à cette sous-routine, afin que l'effacement des
noms ne s'appliquent qu'à la feuille concernée. Sans répéter la mème
routine 10 fois.
Du coup écrire en dur son nom avec la fonction MID (les onglets ont
des noms différents et plus ou moins longs),
ça complique un peu... :-(
- Est-ce que vous avez une possibilité d'amélioration ? ;.-)

Merci d'avance, cordialement,



On 29 nov, 04:42, "MichDenis"
Pour supprimer tous les noms appartenants à la feuille "Feuil1!
ceci n'est pas suffisant ?

Sub test()
Dim N As Name
With Worksheets("Feuil1")
For Each N In .Names
N.Delete
Next
End With
End Sub

"Tatanka"
Plus sûr ainsi :

Sub Efface_Noms_Définis_Dans_Feuille_Personnel()
For Each n In ActiveWorkbook.Names
v = n.RefersTo
If Mid(v, 2, 10) = "Personnel!" Then n.Delete
Next n
End Sub

Serge


MichDenis
Le #5079201
| Je cherche à effacer tous les noms (Names) d'une feuille Excel, mais pas

La procédure soumise supprime seulement les NOMS LOCAUX
sur une feuille donnée.

Ces NOMS ont la particularité d'avoir le nom de la feuille devant le nom défini
comme ceci : Feuil1!toto et fait référence à : .....

Si ta demande réfère à tous les noms qu'il soit locaux ou nom, ça c'est un autre problème !



"Emile63"
Merci Serge et Michel pour votre aide! :-)

La solution de Michel m'a paru la plus simple (pour mon niveau) ,
mais pour je ne sais quelle raison, elle ne fonctionne pas !
Alors que celle de Serge, Oui.
ayant une quinzaine d'onglets à mon classeur, sur quelques uns
j'éfface les noms, mais d'autres pas,
j'aurais souhaiter améliorer ce code, afin de passer les paramètres
(Nom de l'activeSheet) à cette sous-routine, afin que l'effacement des
noms ne s'appliquent qu'à la feuille concernée. Sans répéter la mème
routine 10 fois.
Du coup écrire en dur son nom avec la fonction MID (les onglets ont
des noms différents et plus ou moins longs),
ça complique un peu... :-(
- Est-ce que vous avez une possibilité d'amélioration ? ;.-)

Merci d'avance, cordialement,



On 29 nov, 04:42, "MichDenis"
Pour supprimer tous les noms appartenants à la feuille "Feuil1!
ceci n'est pas suffisant ?

Sub test()
Dim N As Name
With Worksheets("Feuil1")
For Each N In .Names
N.Delete
Next
End With
End Sub

"Tatanka"
Plus sûr ainsi :

Sub Efface_Noms_Définis_Dans_Feuille_Personnel()
For Each n In ActiveWorkbook.Names
v = n.RefersTo
If Mid(v, 2, 10) = "Personnel!" Then n.Delete
Next n
End Sub

Serge


Tatanka
Le #5079191
Salut Émile,

Trois cas peuvent se présenter :

1) Tu veux effacer les noms se référant à une plage
de la feuille active définis par NomFeuilleActive!NomPlage
2) Tu veux effacer les noms se référant à une plage
de la feuille active définis par NomPlage
3) Tu veux effacer les noms se référant à une plage
de la feuille active définis par NomPlage et NomFeuilleActive!NomPlage

A) La macro de Denis efface les noms du cas 1 :

Sub test()
Dim N As Name
With ActiveSheet
For Each N In .Names
N.Delete
Next
End With
End Sub

B) La mienne efface les noms du cas 3 :

Sub Efface_Noms()
Dim nom As String
nom = ActiveSheet.Name
nc = Len(nom)
For Each N In ActiveWorkbook.Names
v = N.RefersTo
If Mid(v, 2, nc + 1) = nom & "!" Then N.Delete
Next N
End Sub

Reste à trouver une manière d'effacer les noms du cas 2.

Serge



"Emile63"
Merci Serge et Michel pour votre aide! :-)

La solution de Michel m'a paru la plus simple (pour mon niveau) ,
mais pour je ne sais quelle raison, elle ne fonctionne pas !
Alors que celle de Serge, Oui.
ayant une quinzaine d'onglets à mon classeur, sur quelques uns
j'éfface les noms, mais d'autres pas,
j'aurais souhaiter améliorer ce code, afin de passer les paramètres
(Nom de l'activeSheet) à cette sous-routine, afin que l'effacement des
noms ne s'appliquent qu'à la feuille concernée. Sans répéter la mème
routine 10 fois.
Du coup écrire en dur son nom avec la fonction MID (les onglets ont
des noms différents et plus ou moins longs),
ça complique un peu... :-(
- Est-ce que vous avez une possibilité d'amélioration ? ;.-)

Merci d'avance, cordialement,



On 29 nov, 04:42, "MichDenis"
Pour supprimer tous les noms appartenants à la feuille "Feuil1!
ceci n'est pas suffisant ?

Sub test()
Dim N As Name
With Worksheets("Feuil1")
For Each N In .Names
N.Delete
Next
End With
End Sub

"Tatanka"
Plus sûr ainsi :

Sub Efface_Noms_Définis_Dans_Feuille_Personnel()
For Each n In ActiveWorkbook.Names
v = n.RefersTo
If Mid(v, 2, 10) = "Personnel!" Then n.Delete
Next n
End Sub

Serge


MichDenis
Le #5079171
Dans la mesure où il y a au moins UNE cellule faisant parti de
la plage nommée et et de la plage de cellules à tester, il y a
ceci :

Range("A1:C25") -> à remplacer par la plage de ton choix

Sub test()
With Worksheets("Feuil1")
For Each n In .Parent.Names
If TypeName(Evaluate(n.Name)) = "Range" Then
If Not Intersect(.Range("A1:C25"), Range(n.Name)) Is Nothing Then
n.Delete
End If
End If
Next
End With
End Sub




"Tatanka"
Salut Émile,

Trois cas peuvent se présenter :

1) Tu veux effacer les noms se référant à une plage
de la feuille active définis par NomFeuilleActive!NomPlage
2) Tu veux effacer les noms se référant à une plage
de la feuille active définis par NomPlage
3) Tu veux effacer les noms se référant à une plage
de la feuille active définis par NomPlage et NomFeuilleActive!NomPlage

A) La macro de Denis efface les noms du cas 1 :

Sub test()
Dim N As Name
With ActiveSheet
For Each N In .Names
N.Delete
Next
End With
End Sub

B) La mienne efface les noms du cas 3 :

Sub Efface_Noms()
Dim nom As String
nom = ActiveSheet.Name
nc = Len(nom)
For Each N In ActiveWorkbook.Names
v = N.RefersTo
If Mid(v, 2, nc + 1) = nom & "!" Then N.Delete
Next N
End Sub

Reste à trouver une manière d'effacer les noms du cas 2.

Serge



"Emile63"
Merci Serge et Michel pour votre aide! :-)

La solution de Michel m'a paru la plus simple (pour mon niveau) ,
mais pour je ne sais quelle raison, elle ne fonctionne pas !
Alors que celle de Serge, Oui.
ayant une quinzaine d'onglets à mon classeur, sur quelques uns
j'éfface les noms, mais d'autres pas,
j'aurais souhaiter améliorer ce code, afin de passer les paramètres
(Nom de l'activeSheet) à cette sous-routine, afin que l'effacement des
noms ne s'appliquent qu'à la feuille concernée. Sans répéter la mème
routine 10 fois.
Du coup écrire en dur son nom avec la fonction MID (les onglets ont
des noms différents et plus ou moins longs),
ça complique un peu... :-(
- Est-ce que vous avez une possibilité d'amélioration ? ;.-)

Merci d'avance, cordialement,



On 29 nov, 04:42, "MichDenis"
Pour supprimer tous les noms appartenants à la feuille "Feuil1!
ceci n'est pas suffisant ?

Sub test()
Dim N As Name
With Worksheets("Feuil1")
For Each N In .Names
N.Delete
Next
End With
End Sub

"Tatanka"
Plus sûr ainsi :

Sub Efface_Noms_Définis_Dans_Feuille_Personnel()
For Each n In ActiveWorkbook.Names
v = n.RefersTo
If Mid(v, 2, 10) = "Personnel!" Then n.Delete
Next n
End Sub

Serge


MichDenis
Le #5079151
Et si tu désires supprimer seulement les noms dont l'étendue est au moins
totalement couvert par la plage de cellules à tester, il y a ceci :

la Range("c1:C4") doit être totalement comprise dans la plage définie
par le "NOM.

'-----------------------
Sub test1()

With Worksheets("Feuil1")
For Each n In .Parent.Names
If TypeName(Evaluate(n.Name)) = "Range" Then
If Union(.Range("c1:C4"), Range(n.Name)).Address = Range(n.Name).Address Then
n.Delete
End If
End If
Next
End With

End Sub
'-----------------------

Et si les 2 plages doivent être identiques, tu ajoutes un test comme ceci :
'------------------------
Sub test1()

With Worksheets("Feuil1")
For Each n In .Parent.Names
If TypeName(Evaluate(n.Name)) = "Range" Then
If Union(.Range("c1:C4"), Range(n.Name)).Address = Range(n.Name).Address And _
Union(.Range("c1:C4"), Range(n.Name)).Address = .Range("c1:C4").Address Then
n.Delete
End If
End If
Next
End With

End Sub
'------------------------




"Tatanka"
Salut Émile,

Trois cas peuvent se présenter :

1) Tu veux effacer les noms se référant à une plage
de la feuille active définis par NomFeuilleActive!NomPlage
2) Tu veux effacer les noms se référant à une plage
de la feuille active définis par NomPlage
3) Tu veux effacer les noms se référant à une plage
de la feuille active définis par NomPlage et NomFeuilleActive!NomPlage

A) La macro de Denis efface les noms du cas 1 :

Sub test()
Dim N As Name
With ActiveSheet
For Each N In .Names
N.Delete
Next
End With
End Sub

B) La mienne efface les noms du cas 3 :

Sub Efface_Noms()
Dim nom As String
nom = ActiveSheet.Name
nc = Len(nom)
For Each N In ActiveWorkbook.Names
v = N.RefersTo
If Mid(v, 2, nc + 1) = nom & "!" Then N.Delete
Next N
End Sub

Reste à trouver une manière d'effacer les noms du cas 2.

Serge



"Emile63"
Merci Serge et Michel pour votre aide! :-)

La solution de Michel m'a paru la plus simple (pour mon niveau) ,
mais pour je ne sais quelle raison, elle ne fonctionne pas !
Alors que celle de Serge, Oui.
ayant une quinzaine d'onglets à mon classeur, sur quelques uns
j'éfface les noms, mais d'autres pas,
j'aurais souhaiter améliorer ce code, afin de passer les paramètres
(Nom de l'activeSheet) à cette sous-routine, afin que l'effacement des
noms ne s'appliquent qu'à la feuille concernée. Sans répéter la mème
routine 10 fois.
Du coup écrire en dur son nom avec la fonction MID (les onglets ont
des noms différents et plus ou moins longs),
ça complique un peu... :-(
- Est-ce que vous avez une possibilité d'amélioration ? ;.-)

Merci d'avance, cordialement,



On 29 nov, 04:42, "MichDenis"
Pour supprimer tous les noms appartenants à la feuille "Feuil1!
ceci n'est pas suffisant ?

Sub test()
Dim N As Name
With Worksheets("Feuil1")
For Each N In .Names
N.Delete
Next
End With
End Sub

"Tatanka"
Plus sûr ainsi :

Sub Efface_Noms_Définis_Dans_Feuille_Personnel()
For Each n In ActiveWorkbook.Names
v = n.RefersTo
If Mid(v, 2, 10) = "Personnel!" Then n.Delete
Next n
End Sub

Serge


Publicité
Poster une réponse
Anonyme