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

XL 2019 Changer le texte dans une cellule (par formule ou macro)

netparty

XLDnaute Occasionnel
Bonjour à tous

Je cherche une formule ou macro pour changer le texte qui se trouve dans la colonne F.

Si il y a une valeur dans la cellule O alors le texte de la cellule F devient BONUS,
Si O est vide alors F = OK, mais si il y a déjà stop dans la cellule F on ne change rien.

Merci d'avance

Bonne journée à tous
 

Pièces jointes

  • Changer nom cellule.xlsm
    11.8 KB · Affichages: 12
Solution
re,

voila une macro pour test, à lancer sur la feuille active

Bien cordialement, @+
VB:
Sub Modif_Netparty()
Dim Range_Ref As Range, Range_Val, Compteur&
Set Range_Ref = Range("F1:O" & Range("F" & Rows.Count).End(xlUp).Row)
Range_Val = Range_Ref.Value
For Compteur = LBound(Range_Val, 1) To UBound(Range_Val, 1)
    If Not Range_Val(Compteur, 1) = "stop" Then
        If Range_Val(Compteur, 10) = "" Or Range_Val(Compteur, 10) = 0 Then Range_Val(Compteur, 1) = "OK" Else Range_Val(Compteur, 1) = "BONUS"
    End If
Next Compteur
Range_Ref.Value = Range_Val
End Sub
Bonjour netparty, le forum

dans ce que vous demandez, la cellule F fait référence à son propre contenu avec stop, en formule, c'est une référence circulaire et ce n'est pas possible, il faut que vous définissiez ce qui fait passer F à stop pour que cette condition soit utilisée à la place.

Bien cordialement, @+
 

netparty

XLDnaute Occasionnel
Bonjour Yeahou

En fait quand je reçoit le fichier, la colonne F est soit OK ou Stop et ensuite si O n'est pas vide cela devient un bonus sauf si F = Stop.

Ou une macro qui écrit la formule dans toute la colonne sauf les cellule qui contient stop ?
Donc je ne sais pas si cela est possible a part le faire manuellement.

Bonne journée
 
re,

voila une macro pour test, à lancer sur la feuille active

Bien cordialement, @+
VB:
Sub Modif_Netparty()
Dim Range_Ref As Range, Range_Val, Compteur&
Set Range_Ref = Range("F1:O" & Range("F" & Rows.Count).End(xlUp).Row)
Range_Val = Range_Ref.Value
For Compteur = LBound(Range_Val, 1) To UBound(Range_Val, 1)
    If Not Range_Val(Compteur, 1) = "stop" Then
        If Range_Val(Compteur, 10) = "" Or Range_Val(Compteur, 10) = 0 Then Range_Val(Compteur, 1) = "OK" Else Range_Val(Compteur, 1) = "BONUS"
    End If
Next Compteur
Range_Ref.Value = Range_Val
End Sub
 
re,

je ne sais plus comment vous l'expliquer, en formule dans F, impossible de gérer le stop en F, il faut, soit qu'il soit stocké ailleurs, soit connaitre la condition de stop pour remplacer la valeur par la condition. Les références circulaires sont impossibles, la formule ne peut pas se modifier en fonction de son propre résultat.
J'espère avoir été assez clair pour que vous compreniez que votre demande initiale est impossible à satisfaire par formule en l'état.

Bien cordialement, @+
 

netparty

XLDnaute Occasionnel
Et si on oublie le stop est-il possible d'écrire une valeur pour remplacer le OK ?
 
Re,

vous avez demandé une solution macro, avez vous au moins essayé celle du post 7 ?
 

Discussions similaires

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