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

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
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 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, @+
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
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
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
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
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
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, @+
Et si on oublie le stop est-il possible d'écrire une valeur pour remplacer le OK ?
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re,

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

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

Bien cordialement, @+
VB:
Code:
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
 

Discussions similaires

Réponses
2
Affichages
125

Membres actuellement en ligne

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35