Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/12/2011, 10h25   #1
Membre régulier
 
Homme Didier
Inscription : mars 2008
Messages : 145
Détails du profil
Informations personnelles :
Nom : Homme Didier
Localisation : France

Informations forums :
Inscription : mars 2008
Messages : 145
Points : 85
Points : 85
Par défaut Trouver le nom d'une cellule

Bonjour à tous

Je voudrai nommer et renommer les cellules d'une plage spécifique à partir de leur valeur:
exemple, nommer A1:E5 avec leur nom, A1,B1... D5,E5

Facile s'il n'y a pas de nom déjà associé!
Mais si une cellule a déjà un nom, il faut au préalable faire un delete pour la renommer.

La propriété Name
donne une erreur appli sur une cellule NON nommée...

D'où ma question:
Comment peut-on savoir si une cellule particulière a un nom?
did103 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2011, 10h57   #2
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,

attention, c'est radical !

Code :
1
2
3
4
5
6
Sub EffaceTout()
Dim Nme As Name
    For Each Nme In ActiveWorkbook.Names
        Nme.Delete
    Next Nme
End Sub

Cordialement,

Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/12/2011, 10h58   #3
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Code :
1
2
3
4
5
6
On Error Resume Next
Var = Range("C2").Name.Name
If Err.Number <> 0 Then
    Err.Clear
    Range("C2").Name = "Toto"
End If
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/12/2011, 11h18   #4
Membre régulier
 
Homme Didier
Inscription : mars 2008
Messages : 145
Détails du profil
Informations personnelles :
Nom : Homme Didier
Localisation : France

Informations forums :
Inscription : mars 2008
Messages : 145
Points : 85
Points : 85
Merci Ormonth,
mais je veux être sélectif!

C'est Daniel qui a raison,
Je n'ai pas l'habitude de gérer les erreurs...
En fait, on se dit qu'avoir une erreur est anormal et on cherche autre chose!

Voici le code complet, si cela peut servir à quelqu'un.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub NomCellPlage()
    Dim Table As String
    Dim nom As String
    Dim c As Range
 
    Table = InputBox("Table à nommer :", "Nommage", "A1:B5")
    For Each c In ActiveSheet.Range(Table)
        On Error Resume Next
        nom = c.Name.Name
        If Err.Number <> 0 Then
            Err.Clear
        Else
            'Supprime le nom
            c.Name.Delete
        End If
        'Nomme la cellule
        If c.Value <> "" Then
            c.Name = "Vm." & c.Text
        End If
    Next c
End Sub
did103 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2011, 11h28   #5
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Code :
1
2
3
4
5
6
For Each c In ActiveSheet.Range(Table)
    On Error Resume Next
    c.Name.Delete
    On Error GoTo 0
    If c.Value <> "" Then c.Name = "Vm." & c.Text
Next c
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/12/2011, 12h59   #6
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Sans le gestionnaire d'erreurs et en considérant q'une plage peut avoir plusieurs noms, la macro suivante supprime tous les noms correspondant à la plage et en recrée un :

Code :
1
2
3
4
5
6
7
Dim N As Name
For Each N In ActiveWorkbook.Names
    If Right(N.RefersTo, Len(N.RefersTo) - 1) = ActiveSheet.Name & "!" & [C2].Address Then
        N.Delete
    End If
Next N
Range("C2").Name = "Toto"
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h00.


 
 
 
 
Partenaires

Hébergement Web