IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Remplacement de noms de cellules [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut Remplacement de noms de cellules
    Bonjour le Forum,

    J'ai dupliqué un classeur Class1.xls en Class2.xls (enregistrer sous)

    Class1.xls contient des noms de certaines cellules comportant la chaîne de caractères "TOTO".

    Je souhaiterais que :
    1 - dans Class2.xls, le nom de la même cellule ait sa chaîne de caractères "TOTO" remplacée par "PANPAN".
    Exemple : Si une cellule est nommée "truc_TOTO" dans Class1, cette mëme cellule sera nommée "truc_PANPAN" dans Class2.xls

    2 - supprimer dans Class2.xls tous les noms comportant "TOTO"

    Je suis arrivé à coder la partie 2 ci dessous dans Class2.xls

    Si cela peut intéresser, (sans prétention de ma part)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each nom In ActiveWorkbook.Names
        If InStr(1, nom.Name, "TOTO") > 0 Then nom.Delete
    Next
    Par contre, je n'arrive pas à coder la 1ère partie, toujours dans Class2.xls
    (50 noms sur 60)

    Si quelqu'un a une idée,
    Merci d'avance.

    Cordialement.

    Marcel.

  2. #2
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    Bonsoir,

    1 - dans Class2.xls, le nom de la même cellule ait sa chaîne de caractères "TOTO" remplacée par "PANPAN".
    Exemple : Si une cellule est nommée "truc_TOTO" dans Class1, cette mëme cellule sera nommée "truc_PANPAN" dans Class2.xls
    La réponse est en quelque sorte dans la question que tu as posé.
    Ton problème est de remplacé une chaine de caractère par une autre ---> VBA répond à cette question par le biais d'une fonction simple d'utilisation en l'occurrence la fonction : Replace.

    Il y a plusieurs manières de procèder. voici, entre autres, un exemple simple à adapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub RenomPlage(ByVal nFeuil As String)
     
    Dim pRange As Range
    Dim nNom As Name
     
     
    On Error Resume Next
    'Boucle sur les noms du classeur
    For Each nNom In ThisWorkbook.Names
     
        Set pRange = nNom.RefersToRange
     
        If Not pRange Is Nothing Then
            'Vérifie si le nom appartient à la feuille -- 
            If Worksheets(nFeuil).Name = pRange.Worksheet.Name Then _
                nNom.Name = Replace(nNom.Name, "TOTO", "PANPAN")
        End If
     
        Set pRange = Nothing
     
    Next nNom
     
    End Sub
    Tu remarqueras dans ce code, qu'en premier lieu, j'ai listé tous les plages nommées du classeur et puis je me suis intéressé à une feuille spécifique pour remplacer dans chaque nom de plage de cette feuille l'occurence "ToTo" par "PANPAN".

    J'espère que ceci répondra à ta question.


    NB: pour lancer le code il faut l'appeler à partir d'une procèdure, comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Test()
     
    RenomPlage ("feuil1")  ' avec Feuil1 : Feuille cible où on va renommer 
     
    End Sub
    Bonne soirée

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut OK
    Merci casavba,

    Juste une remarque :
    -> la présence de la chaîne "TOTO" dans le nom doit être testée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Worksheets(nFeuil).Name = pRange.Worksheet.Name _
                            And InStr(1, nNom.Name, "TOTO") > 0 Then _
                             nNom.Name = Replace(nNom.Name, "TOTO", "PANPAN")
    sans quoi, les noms qui ne comportent pas cette chaîne sont supprimés.

    D'autre part, et c'est logique puisque tu écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub RenomPlage(ByVal nFeuil As String)


    si l'on veut balayer toutes les feuilles du claseur, on doit utiliser l'argument FEUIL.name

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Test2()
     
    Dim FEUIL As Worksheet
    For Each FEUIL In ThisWorkbook.Worksheets
        RenomPlage (FEUIL.Name)
    End Sub
    Conclusion : Résolu et merci pour ce précieux concours.

    Cordialement.

    Marcel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Remplacer nom de cellule par sa position absolue dans une formule par vba
    Par dar06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/01/2014, 13h51
  2. Réponses: 2
    Dernier message: 08/01/2014, 11h47
  3. [XL-2007] Remplacé le nom d'un pivotfiels par la référence d'une cellule
    Par PASQUI62 dans le forum Excel
    Réponses: 0
    Dernier message: 09/10/2013, 18h29
  4. [XL-2003] Remplacer des références par des noms de cellules dans des formules existantes
    Par Daejung dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/04/2010, 19h28
  5. Réponses: 4
    Dernier message: 30/05/2006, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo