Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Supprimer le nom de cellules

  • Initiateur de la discussion Initiateur de la discussion David73
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

David73

XLDnaute Nouveau
Bonjour,
je souhaite créer une macro qui supprime les noms des cellules sélectionnées :
VB:
Sub Suppression()
'   Supprime le nom d'une cellule
    For Each r In Selection
        If r.Name <> "" Then
            r.Name.Delete
        End If
    Next
End Sub

Le problème est que j'ai une erreur lorsque une cellule sélectionnée n'a pas de nom :
"Erreur d'exécution 1004"

Il faudrait faire un test mais je n'y parviens pas.
Si quelqu'un aune idée.
Merci
 
Merci beaucoup, c'est ce qu'il me fallait.

Est-ce qu'il est possible d'être informé qu'il y a eu des erreurs.

Par exemple, j'aimerais qu'à la fin, la macro affiche le message : "Attention il y a eu 5 erreurs !"
 
Bonjour David

Remplace On Error Resume Next par
VB:
Dim i as integer
On Error GoTo Erreur
i = 0

Erreur :
i = i + 1


Msgbox "Il y a eu" & i & "erreurs"

La dernière ligne doit être insérée à la fin de ton programme, et pas dans la fonction Erreur.

Bonne continuation
 
VB:
Sub Suppression()
    On Error GoTo Erreur
    i = 0
'   Supprime le nom d'une cellule
    For Each r In Selection
        If r.Name <> "" Then
            r.Name.Delete
        End If
Erreur:
    i = i + 1
    Next
    MsgBox "Il y a eu" & i & " erreurs"
End Sub
 
VB:
Sub Suppression()
    On Error GoTo Erreur
    i = 0
'   Supprime le nom d'une cellule
    For Each r In Selection
        If r.Name <> "" Then
            r.Name.Delete
        End If
    Next
    MsgBox "Il y a eu" & i & " erreurs"
    
Erreur:
    i = i + 1
    
End Sub

Plutôt ça

Bonne continuation
 
Bonjour,

xUpsilon, il faudrait peut-être tester tes propositions avant de poster...
VB:
Sub test()
    Dim c As Range, nb As Long
    For Each c In Selection
        On Error Resume Next
        c.Name.Delete
        If Err Then nb = nb + 1
        On Error GoTo 0
    Next c
    MsgBox nb & " noms absents"
End Sub
eric
 
Sauf si déclarées Static, les variables sont toutes vides au lancement d'une macro, pas besoin de les vider plus.

Ca fonctionne aussi ; cette ligne a-t-elle une autre utilité ?
Il faut rétablir la gestion d'erreur dès que la partie concernée est passée.
Même si ici on pourrait s'en passer il faut garder cette bonne habitude pour des raisons de clarté, et surtout être alerté des erreurs non prévues pour les déboguer..
eric
 
Encore une petite question.
Lorsque j'ai une grande sélection (exemple 100 cellules) le décompte des erreurs (noms absents) se fait mal.
Il faut relancer une deuxième fois pour que le décompte se fasse bien.
Faut-il mettre une tempo dans la boucle ?
 
Chez moi c'est bon avec 9 noms sur 200 lignes. Quelle version d'excel ?
Se fait mal ça veut dire quoi ? Il en annonce plus ou moins ?
Un fichier de test avec cette anomalie serait le bienvenu,.
eric
 
Bonsoir le fil

Sorti de la poussière de mes archives
VB:
Sub DeleteName()
Dim nName As Name
For Each nName In Names
If Not Intersect(Selection, Range(nName.Name)) Is Nothing Then
nName.Delete
End If
Next nName
'///->D.Hawley|171105|WA///
End Sub
 
Bonsoir David73, xUpsilon, eriiiic, JM,

Oui JM on peut se passer du contrôle d'erreur mais comme ceci :
VB:
Sub a()
Dim n As Name, i
ActiveCell.Activate 'au cas où la sélection n'est pas un Range
For Each n In ThisWorkbook.Names
    If TypeName(Evaluate(n.Name)) = "Range" Then _
        If Evaluate(n.Name).Parent.Name = Selection.Parent.Name Then _
            If Evaluate(n.Name).Count = 1 Then _
                If Not Intersect(Evaluate(n.Name), Selection) Is Nothing Then n.Delete: i = i + 1
Next
MsgBox IIf(i, i, "Aucun") & " nom" & IIf(i > 1, "s", "") & " supprimé" & IIf(i > 1, "s", "") & " dans la sélection..."
End Sub
Bonne nuit.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
14
Affichages
265
Réponses
3
Affichages
687
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…