Microsoft 365 code renvoie formule dans ma cellule avec des @

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,
Je vous souhaite un beau dimanche :)

En voilà une nouvelle pour moi que je n'avais pas encore rencontrée :
en partant de la cellule de ma formule, je l'ai enregistré pour en faire un code.

J'ai adapté ce code pour qu'il soit fonctionnel dans ma macro comme ceci :
ActiveCell.Offset(0, 3).FormulaR1C1 = "=IF(OR(LEFT(ActiveCell.Offset(0, 3) ,3)=336,LEFT(ActiveCell.Offset(0, 3) ,3)=337),""OK"",1)"

Quand le code renvoie le code dans ma cellule il ajoute des @
SI(OU(GAUCHE(@ActiveCell.Offset(0; 3);3)=336;GAUCHE(@ActiveCell.Offset(0; 3);3)=337);"OK";1)

Evidemment, la formule n'est plus fonctionnelle.

Je n'ai pas trouvé ce qui ce passe et c'est la 1ère fois que cela m'arrive.
Auriez-vous la solution ?

Un grand merci :)
Je continue mes recherches,
lionel :)
 

Usine à gaz

XLDnaute Barbatruc
Re :)
J'ai refait le code :
Cells(ActiveCell.Row, 14).FormulaR1C1="=IF(OR(LEFT(Cells(ActiveCell.Row,14),3)=336,LEFT(Cells(ActiveCell.Row,14),3)=337),""OK"",""1"")"

= même résultat :
il ajoute des @ dans la formule de la cellule
SI(OU(GAUCHE(@ActiveCell.Offset(0; 3);3)=336;GAUCHE(@ActiveCell.Offset(0; 3);3)=337);"OK";1)

lol, je vire au violet :mad::mad::mad:
 

job75

XLDnaute Barbatruc
Bonjour Lionel, le forum,

1) ActiveCell.Offset(0, 3) mis tel quel dans la formule => Excel ne peut pas savoir ce que c'est..

2) Tu cherches à entrer en ActiveCell.Offset(0, 3) une formule qui ferait référence à ActiveCell.Offset(0, 3)..

Il y a risque de référence circulaire.

La cellule active étant A1 quelle formule veux tu obtenir et dans quelle cellule ?

A+
 

Usine à gaz

XLDnaute Barbatruc
Bonjour Lionel, le forum,

1) ActiveCell.Offset(0, 3) mis tel quel dans la formule => Excel ne peut pas savoir ce que c'est..

2) Tu cherches à entrer en ActiveCell.Offset(0, 3) une formule qui ferait référence à ActiveCell.Offset(0, 3)..

Il y a risque de référence circulaire.

La cellule active étant A1 quelle formule veux tu obtenir et dans quelle cellule ?

A+
Bonjour Gérard,
Merci pour le retour :)
Cellule N6 formule voulue : =SI(OU(GAUCHE(F6;3)=336;GAUCHE(F6;3)=337);"OK";"1")
 

Usine à gaz

XLDnaute Barbatruc
Re Gérard, Re Laurent950,

Mon besoin est que cette formule "[N6] = "=IF(OR(LEFT(F6,3)=""336"",LEFT(F6,3)=""337""),""OK"",1)""
soit codée en vba pour quelle puisse s'appliquer qu'elle que soit la ligne active :
ActiveCell.Offset(0, 3) = "=IF(OR(LEFT(ActiveCell.Offset(0, -5),3)=""336"",LEFT(ActiveCell.Offset(0, -5),3)=""337""),""OK"",1)"
Si ligne 6 active "cellule F6" d'ou
- "ActiveCell.Offset(0, 3)" correspondant à N6
- "ActiveCell.Offset(0, -5),3)" correspondant à F6
:)
 

laurent950

XLDnaute Barbatruc
Bonjour @Usine à gaz, @job75

=SI(OU(GAUCHE(F6;3)="336";GAUCHE(F6;3)="337");"OK";"1")

336 cela doit être interprété comme du texte soit "336" et "337"
il faut ajouter les guillemets a 336 et 337

Avec l'utilisation des Cells pour le résultat de la formule dans la cellule il ne faut pas utiliser FormulaR1C1 mais Formula

ActiveCell.Formula = "=IF(OR(LEFT(" & Cells(ActiveCell.Row, ActiveCell.Column + 3).Address(0, 0) & ",3)=""336"",LEFT(" & Cells(ActiveCell.Row, ActiveCell.Column + 3).Address(0, 0) & ",3)=""337""),""OK"",""1"")"

Exemple en Q6 écrire 336tr
En N6 la cellule active = ActiveCell.Formula

et donc la formule en (N6)
En N6 = Coller la formule ci-dessus / "=IF(OR(LEFT("..............
Test pour Q6 (Les valeurs) puis Le résultat de la formule en N6 (La Formule ci-dessus)
(Q6) 336tr = OK (Résultat en N6 la formule)
(Q6) 337tr = OK (Résultat en N6 la formule)
(Q6) 338tr = 1 (Résultat en N6 la formule)

Mon besoin est que cette formule "[N6] = "=IF(OR(LEFT(F6,3)=""336"",LEFT(F6,3)=""337""),""OK"",1)""
VB:
Sub test()
    Cells(6, 14).Formula = _
        "=IF(OR(LEFT(" & Cells(6, 6).Address(0, 0) & ",3)=""336"",LEFT(" & Cells(6, 6).Address(0, 0) & ",3)=""337""),""OK"",""1"")"
End Sub
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Re Gérard, Re Laurent950,

J'ai réussi à m'en sortir avec le code de Gérard "Cells(ActiveCell.Row, "N") = "=IF(OR(LEFT(RC[-8],3)=""336"",LEFT(RC[-8],3)=""337""),""OK"",1)""
Merci, super ça fonctionne.

Mais j'ai planché sur le code de Laurent950 et je n'ai pas réussi.

Merci pour votre aide précieuse :)
 

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 192
Membres
112 679
dernier inscrit
Yupanki