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

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
 

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

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