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 :

[VBA] Remplacer un caractére dans une formule par une variable (boucle for)


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [VBA] Remplacer un caractére dans une formule par une variable (boucle for)
    Bonjour à tous, je viens vers vous afin de trouver une solution a mon problème.

    Je m'explique, je travail sur un fichier qui doit générer un certain nombre d'onglets par copie d'un onglet existant. Mon problème est qu'il a une formule qui doit légèrement changer en fonction de l'onglet, j'ai essayer d'utiliser la fonction Replace(), mais elle n'accepte pas les variables, comme valeur de remplacement. J 'ai réussi à le coder "en dur" grâce à la fonction Instr() et Mid() mais j'aimerais quelque chose de plus dynamique, qui puisse marcher si la formule est modifié, auriez vous une solution a me proposer ?

    Merci d'avance.

    Ci-joint le code que j'utilise pour le moment, il est imbriqué dans une boucle for :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            Sheets("PF1_Global (2)").Range("D5").Select
            formule1 = Selection.Formula
            nb = InStr(1, formule1, "PF", vbTextCompare)
            nb2 = InStr(nb + 3, formule1, "PF", vbTextCompare)
            Mid(formule1, nb + 2, 1) = i + 1
            Mid(formule1, nb2 + 2, 1) = i + 1
            Sheets("PF1_Global (2)").Range("D5").Formula = formule1

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    fourni plutôt la chaine avant et après transformation en précisant les valeurs que ça peut couvrir.

    eric

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Désolé pour la réponse tardive, le week end est passé par là.

    Ma formule à modifier est celle-ci:

    =SI('PF1'!D3<>"";RECHERCHEV(A5;'PF1'!$A$2:$D$3;4);"")

    => =SI('PF2'!D3<>"";RECHERCHEV(A5;'PF2'!$A$2:$D$3;4);"")

    Ce que je veut modifier à chaque itération est le numéro du "PF", qui peut aller de 1 à 20, le code que j'utilise actuellement fonctionne, mais si on modifie la formule et qu'on rajoute des "PFX" ça ne marchera plus.

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Un peu léger en explication.
    Tu dis que tu boucles, on ne sait pas sur quoi.
    Tu dis en cas de modification de formule, c'est vague... On ne peut pas prévoir tous les cas possibles et imaginables si tu te contentes de remplacer 2 par 3.

    Un exemple qui t'inscrit la formule modifiée avec la valeur de boucle dans les lignes sous D5, tu adapteras à la réalité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
        Dim i As Long, j As Long, formule, feuille As String
        For i = 1 To 2
            formule = Split([D5].Formula, "'")
            For j = 0 To UBound(formule)
                 If Left(formule(j), 2) = "PF" Then formule(j) = "PF" & i
            Next j
            [D5].Offset(i).Formula = Join(formule, "'")
        Next i
    End Sub

Discussions similaires

  1. [XL-2013] Remplacer des données dans un tableau avec une formule
    Par capnice dans le forum Excel
    Réponses: 7
    Dernier message: 23/05/2015, 22h12
  2. [XL-2003] Remplacer une lettre de colonne d'une formule par une variable
    Par apnw7931 dans le forum Excel
    Réponses: 2
    Dernier message: 06/12/2014, 23h41
  3. Réponses: 6
    Dernier message: 16/05/2011, 15h00
  4. remplacer un mot dans la formule d'une serie d'un histogramme
    Par Chloupe dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/08/2008, 15h30
  5. [VBA] remplacer des caractères dans un .txt
    Par Frenchguy dans le forum VBA Access
    Réponses: 2
    Dernier message: 10/05/2007, 16h16

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