[VBA] Remplacer cellule par résultat formule qui y fait référence

Anthonymctm

XLDnaute Occasionnel
Bonjour le Forum ! :)

Je cherche à appliquer une formule à toutes les lignes d'une colonne et si possible à la place de la colonne dont elle fait référence.
Le résultat de la formule sera sous format texte (pas en formule)

La formule : =SI(GAUCHE(B1;4)="TEST";"TEST";GAUCHE(B1;9))

Dans l'exemple c'est B1 mais pour la ligne 2 ce sera B2 et ainsi de suite.
Résultat à afficher en texte en B1, puis à répéter sur toutes les lignes tant que les cellules B ne sont pas vides.

Voilà, ça parait simple mais je n'y suis pas parvenu :confused:
 
Solution
Ah !
mais puisque par vba, que viendrait alors faire la formule que tu as montrée ??

supprime-la donc de là où tu l'as mise et traite directement par VBA (non ?)

VB:
For Each c In Columns(2).SpecialCells(xlConstants)
  If Left(c.Value, 4) = "TEST" Then
    c.Value = Left(c.Value, 4)
  Else
    c.Value = Left(c.Value, 9)
  End If
Next

Anthonymctm

XLDnaute Occasionnel
Tu voudras bien m'expliquer ce "machin"-là ? (pas à pas, s'il te plait)
Bah non je sais pas justement, mais je sais que c'est possible j'ai déjà bu des choses similaires ^^
Des trucs du style je calcul la valeur de la formule et ensuite je la colle en tant que texte
La ya pas de références circulaires puisqu'à aucun moment on a collé la formule on a uniquement collé le résultat ^^'
 

jmfmarques

XLDnaute Accro
Bah non je sais pas justement, mais je sais que c'est possible j'ai déjà bu des choses similaires
et "bu" chaud ou froid ?
pour rester sérieux : impossible, sauf à accepter de perdre la formule elle-même et utiliser en plus VBA.
Tu as beaucoup de chance de ne pas savoir comment, mais de savoir que c'est possible .
Je n'ai pas cette chance-là et sais que je ne l'aurai jamais (et pour cause)
Bonne continuation
 

Anthonymctm

XLDnaute Occasionnel
et "bu" chaud ou froid ?
pour rester sérieux : impossible, sauf à accepter de perdre la formule elle-même et utiliser en plus VBA.
Tu as beaucoup de chance de ne pas savoir comment, mais de savoir que c'est possible .
Je n'ai pas cette chance-là et sais que je ne l'aurai jamais (et pour cause)
Bonne continuation
Oui, après c'est dans le titre de mon post, je ne demande une aide que sur du VBA ^^
Si tu savais, a force de persévérance j'ai imbriqué des macros qui initialement semblaient impossible.
Ce forum est une mine d'or pour réussir à faire des choses complexes, mais la pour le coup on est sur une complexité minime je pense ^^'
 

jmfmarques

XLDnaute Accro
Ah !
mais puisque par vba, que viendrait alors faire la formule que tu as montrée ??

supprime-la donc de là où tu l'as mise et traite directement par VBA (non ?)

VB:
For Each c In Columns(2).SpecialCells(xlConstants)
  If Left(c.Value, 4) = "TEST" Then
    c.Value = Left(c.Value, 4)
  Else
    c.Value = Left(c.Value, 9)
  End If
Next
 

Anthonymctm

XLDnaute Occasionnel
Ah !
mais puisque par vba, que viendrait alors faire la formule que tu as montrée ??

supprime-la donc de là où tu l'as mise et traite directement par VBA (non ?)

VB:
For Each c In Columns(2).SpecialCells(xlConstants)
  If Left(c.Value, 4) = "TEST" Then
    c.Value = Left(c.Value, 4)
  Else
    c.Value = Left(c.Value, 9)
  End If
Next
Je l'ai mise parce que je sais la faire sous format normal, je sais pas comment retranscrire ça en vba ^^
Ça fonctionne niquel !

En fait je pensais qu'on pouvait écrire en vba la formule telle qu'on l'appliquerait directement sur la feuille, peut-être la convertir en anglais mais la convertir carément en VBA
 

Discussions similaires