Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[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
 
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
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
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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…