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 :

maj de chaine de texte dans une formule [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
    Inscrit en
    Juin 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 29
    Par défaut maj de chaine de texte dans une formule
    bonjour,

    Question basique je vous l'accorde, mais un tant que débutant ça permet d'avancer:
    Comment mettre à jour par macro une chaine de texte pouvant se trouver dans les formules de mes classeurs.

    merci pour vos suggestions.

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour
    Je te conseille d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("Tacellule").formulalocal="Taformule"
    Quelque remarque formulalocal permet d'utiliser la même syntaxe que dans la barre de formule.
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("A1").formulalocal="=SOMME(B1:B10)"
    pour y inclure des variable (c'est récurent comme question)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var1=10
    range("A1").formulalocal="=SOMME(B1:B" & var1 & ")"
    Tu peux également utiliser .formula qui demande une syntaxe en anglais "=SUM(..."
    Ou formulaR1C1 qui permet des référence relative

    Je te laisse consulter l'aide la dessus

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bonjour Taratata,
    Un exemple pourrait nous aider à comprendre ta demande...
    Tu ne parles pas de F9 ?
    Tu ne parles pas de Formula ? Si ?
    Dis-nous tout
    A+

    Edit
    Un inconvénient de FormulaLocal par rapport à formula : Ne fonctionne pas sur les versions anglaises de VBA (bonjour Krovax)
    Il existe aussi FormulaR1C1...
    Tout ça se trouve dans l'aide en ligne pour de plus amples explications
    Si c'est bien ça ta question...

  4. #4
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 29
    Par défaut maj des formules
    A la demande de ouskel'n'or, je précise ma demande.

    voila un exemple de formule contenu dans une de mes cellule:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI('\\serveur01\vol23\dossier1\DONNEES\[INFOS.XLS]justifier opérat° ABCD'!$I$11=0;"-";'\\serveur01\vol23\dossier1DONNEES\[INFOS.XLS]justifier opérat° ABCD'!$I$11)
    j'ai besoin de mettre à jour uniquement la partie "\\serveur01\vol23".
    je souhaite le faire sur un ensemble de classeur contenu dans un dossier c'est pourquoi j'ai besoin de vba.

    cordialement

  5. #5
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    bonjour Ouskel'n'or
    Merci pour l'info sur le formulalocal, je pensé que cela permettait d'utiliser le langage de la config excel et était disponible sur toutes les versions, visiblement le concept de "local" n'a pas cours chez les nos amis anglo-saxons

    Et oui la demande avait besoin de précision
    Tu doit récupérer la formule dans réaliser la modification et mettre la nouvelle formule
    Essaye quelque chose comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dim formu as string
     
    formu=range("a1").formula
    formu=replace(formu,"\\serveur01\vol23","\\Nouveauchemin") 'cette ligne te permettra de remplacer le contenue
    range("a1").formula=formu
    On aurait pu le faire un une ligne mais cela devrais te permettre de mieux comprendre ce qui se passe en avançant en mode pas a pas

    Après il te faudra boucler sur les cellule qui contienne une formule, il y a une commande pour cela mais sur le coup elle m'échappe (cela utilisai la commande specialcell mais je n'ai plus la syntaxe)

    Je vais essayer de retrouver ca, sauf si une bonne âme veut bien m'épargner cette peine

    Edit voila le code pour boucler sur les cellule d'une feuille ayant une formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim cel As Range
    For Each cel In Worksheets("Feuil1").Cells.SpecialCells(xlCellTypeFormulas)
    MsgBox cel.Address
    'enlève la ligne du dessus et insert le code pour mettre a jour la formule en remplacant range("a1") par cel
    Next cel
    Il ne te reste plus qu'a boucler sur les onglets, ou si tu ne compte pas lancer souvent ta macro la lancer une fois pour chaque onglet

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Par défaut
    Bonjour
    Si c'est un lien qui a changé, on ne pourrait pas utiliser simplement le menu Edition/Liaisons ?

  7. #7
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    été juste un teste pour moi, le commentaire en dessous te disais de supprimer la ligne
    Sauf si tu veux t'amuser a visualiser toutes tes cellules
    Tu n'a pas a récupérer les référence tu met directement
    Par contre le menue Edition/liaison serait peut être plus pratique, mais la c'est hors de mes compétences (en fait dès que ca touche excel et non le VBA je suis totalement incompétent )

  8. #8
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 29
    Par défaut maj des formules
    merci Krovax et Ouskel'n'or

    j'ai quand même un pb pour récuperer la référence des cellules(a1, d5,..) où se trouvent mes formules à mettre à jour.

    j'avais pensé à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For Each sh In ActiveWorkbook.Sheets
    For Each rng1 In sh.Cells.SpecialCells(xlCellTypeFormulas)
    mais en fait ça me donne la valeur de la cellule quand je fais ?

    comment récuperer la reference de la cellule?

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par taratata_69
    j'avais pensé à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For Each sh In ActiveWorkbook.Sheets
    For Each rng1 In sh.Cells.SpecialCells(xlCellTypeFormulas)
    mais en fait ça me donne la valeur de la cellule quand je fais ?

    comment récuperer la reference de la cellule?
    Dans la boucle, avec sh :
    et avec rng1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AdresseCellule = rng1.address

  10. #10
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 29
    Par défaut maj des liaisons suite
    merci beaucoup à ouskel'n'or et Krovax

    Vous m'avez permis d'avancer sur mon probléme et je vous en suis reconnaissant.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/01/2012, 14h50
  2. Réponses: 3
    Dernier message: 02/06/2010, 04h46
  3. [XL-2003] Mettre du texte dans une formule
    Par Eric26 dans le forum Excel
    Réponses: 3
    Dernier message: 07/01/2010, 11h02
  4. Des valeurs texte dans une formule
    Par Christophe D. dans le forum Excel
    Réponses: 5
    Dernier message: 15/12/2007, 16h25
  5. recherche d'une chaine de caractère dans une données text
    Par jdeheul dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 17/06/2004, 16h35

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