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 :

Remplacer segment de formule par valeur d'une cellule nommée [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Par défaut Remplacer segment de formule par valeur d'une cellule nommée
    Bonjour bonjour,

    Il s'agit comme le précise le sujet de remplacer une partie d'une formule par la valeur présente dans une cellule nommée (procédure qui sera lancée par un bouton).

    Feuille1: Information
    En E2 cellule nommée NameNewBP contenant chaine de texte

    Feuille2: Donnees
    En B1 cellule nommée NameOldDBP contenant chaine de texte

    Je souhaite remplacer dans chaque cellules de la plage A1:M180 de la feuille1 contenant dans sa formule la chaine de texte de la cellule nommée NameOldDBP, par chaine de texte de la cellule nommée NameNewBP.

    De même, remplacer dans chaque cellule de la plage A1:F200
    de la feuille2 contenant dans sa formule la chaine de texte de la cellule nommée NameOldDBP, par chaine de texte de la cellule nommée NameNewDP.

    Toutes les cellules des plages ne sont pas concernées car ne contiennent pas toutes les formules concernées.

    Ce remplacement devrait dans l'idéal, ignorer les deux cellules nommées NameNewBP et NameOldBP

    J'ai fouillé et testé des dizaines d'idées postées sur ce forum et d'autres (merci d'ailleurs à tou(te)s les contributeurs éclairé(e)s), sans succès.

    Je tourne autour du code ci-dessous depuis des heures, je sens que je ne suis pas loin, possiblement une erreur de syntaxe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cells.Replace What:="(""NameOldDBP", Replacement:="(""NameNewBP", LookAt:= _
            xlPart, SearchOrder:=xlByRows
    Merci d'avance pour vos conseils, suggestions.

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut Remplacer segment de formule par valeur d'une cellule nommée
    J'ai essayé ceci sous excel 2000


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Range("A1:F200").Replace What:="nameOldDPP", Replacement:="nameNewBP", LookAt:=xlPart _
            , SearchOrder:=xlByRows, MatchCase:=False
    pour moi c'est OK

    à adapter à chacune de tes feuilles

    bonne soirée.

    PS : J'ai utilisé l’enregistreur de macro pour obtenir le résultat.

  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 : 68
    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
    Bonjour et benvenu sur ce Forum,

    Le plus efficace, selon moi, serait de réécrire tes formules par VBA en utilisant la méthode FormulaR1C1 dont l'argument est une chaîne de caractères.
    Cette chaîne pourrait contenir une concaténation intégrant les cellules nommées.

    Il y a peut-être d'autres méthodes...

    Mais avant cela, quelles sont les difficultés rencontrées (message d'erreur, ligne en erreur surlignée en jaune,...)

  4. #4
    Membre averti
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Par défaut Remplacer segment de formule par valeur d'une cellule nommée
    Bonsoir et merci MarcelG et a_diard d'avoir porté intérêt à ma galère,

    Le problème n'est pas tant de pointer sur la bonne zone à surveiller pour faire le remplacement, à part pour la récupération de la valeur des cellules nommées. j'ai testé ta proposition a_diard mais il ne se passe absolument rien.

    Mais plutôt sur mon incapacité à créer la recherche de la valeur d'une plage nommée et le remplacement d'une partie de la formule par la valeur d'une autre plage nommée.
    Valeur à chercher dans une feuille et valeur à remplacer dans autre feuille >> pour remplacer dans les deux feuilles.

    Dans l'idéal ce serait vraiment vraiment bien que je n'ai pas à réécrire les formules par VBA... mais je vais quand même examiner cette proposition de concaténation en attendant d'autres idées et continuer à chercher de toutes façons. Je dois résoudre ça rapidement..

    Il n'y aucun message d'erreur mais pas non plus d'action sur les feuilles concernées. Il ne se passe rien de rien

    Merci d'avance...


    PS : je viens de rajouter un fichier exemple si cela peut permettre de comprendre mes explications certainement peu claires
    Fichiers attachés Fichiers attachés

  5. #5
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut Remplacer segment de formule par valeur d'une cellule nommée
    dans ton fichier la formule est :


    il est normal qu'avec le code que je t'ai proposé ça ne marche pas

    vu que je recherche

    bonne soirée.

    dans la macro remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ="NEW blabla"
     
    'par
     
    ="NEW"
    et teste à nouveau

  6. #6
    Membre averti
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Par défaut
    Merci de cette nouvelle réponse.
    Je ne cherche pas "New Blabla" en tant que chaîne de texte mais le contenu de la cellule nommée NameNewBP (dont la valeur est dans l'exemple "NEW") qui doit remplacer dans les formules des deux feuilles la chaîne de texte de la cellule nommée NameOldBP par la valeur de la cellule NameNewBP.
    Les valeurs de ces cellules nommées sont amenées à changer. Je ne peux pas rechercher la chaîne de texte.

    Je suis désolée, j'ai l'impression que je ne suis pas suffisamment clair. De plus j'ai zappé de mettre mon code problématique dans la macro du fichier que j'ai uploadé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A1:F200").Replace What:="NameOldDBP", Replacement:="NameNewBP", LookAt:=xlPart _
            , SearchOrder:=xlByRows, MatchCase:=False
    Arrrrkkk non il y a encore une erreur dans mon fichier, je corrige et je reviens avec un fichier d'aplomb !!
    Fichiers attachés Fichiers attachés

  7. #7
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Quelque chose comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Range("A3:F200").Replace What:=Range("NameOldDBP").Value, Replacement:=Range("NameNewBP").Value, LookAt:=xlPart _
            , SearchOrder:=xlByRows, MatchCase:=False
    en prenant la précaution que les cellules "sources"

    ne soient pas dans la zone modifiée.

    bonne soirée

  8. #8
    Membre averti
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Par défaut
    oh yeah !!! ça fonctionne parfaitement !!
    Avec une mini modif pour la valeur de remplacement, la cellule nommée est NameNewBP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Range("A3:F200").Replace What:=Range("NameOldDBP").Value, Replacement:=Range("NameNewBP").Value, LookAt:=xlPart _
            , SearchOrder:=xlByRows, MatchCase:=False
    Merciiii C'est top.
    Maintenant je connais la syntaxe pour récupérer la valeur d'une cellule nommé dans une formule.
    Bonne soirée. Je note le sujet comme résolu.

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

Discussions similaires

  1. [XL-2010] Utiliser la valeur d'une cellule nommée pour agir sur un onglet
    Par LeGaucherGauche dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/07/2016, 09h33
  2. [XL-2010] Appeler la valeur d'une cellule nommée d'un autre fichier ?
    Par Sandra_R dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 02/12/2015, 13h00
  3. [XL-2003] Lire la valeur d'une cellule nommée d'un classeur avec VBA ?
    Par marot_r dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/03/2011, 13h36
  4. récupérer facilement valeur d'une cellule nommée
    Par jcg23 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/03/2009, 14h05
  5. Réponses: 2
    Dernier message: 27/06/2007, 20h53

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