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

Microsoft 365 supprimer le @ en début de formule

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
Je vous souhaite une belle journée

De bon matin, j'ai déjà besoin d'aide.
J'ai fait ce petit code :
VB:
Sub Macro1()
    ActiveCell = "=IF(ISNUMBER(ActiveCell)=FALSE,"""",ActiveCell)"
    'ActiveCell.Offset(0, -1) = "=IF(ISNUMBER(ActiveCell.Offset(0, -1))=FALSE,"""",ActiveCell.Offset(0, -1))"
    [R3].Copy
    [R4:R11].Select
    ActiveSheet.Paste
    [R3].Select
    Application.CutCopyMode = False
End Sub
La formule qui s'affiche dans ma cellule est la suivante : =@SI(ESTNUM(@ActiveCell)=FAUX;"";ActiveCell)
J'essaie de faire en sorte qu'il ne mette pas ces @ intempestifs.

Je n'ai pas trouvé comment m'en débarrasser.
Auriez-vous la solution ?
Je vous remercie

Je continue à chercher,
lionel
 

patricktoulon

XLDnaute Barbatruc
bonjour lionel
ou tu a vu qu'une fonction activecell existe toi dans excel ?
activecell n'existe qu'en VBA elle désigne la cellule active
en formule ça n'existe pas

VB:
ActiveCell.formula= "=IF(ISNUMBER(" & ActiveCell.address(0,0) & ")=FALSE,""""," & ActiveCell.address(0,0) & ")"
est en plus là tu remet en cause le problème de référence circulaire
on ne peut pas mettre une formule dans une cellule qui ferait une operation sur la cellule elle même donc c'est tout ton raisonnement qui est à revoir
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Patrick et merci d'être là
Merci pour le code qui fonctionne mais qui ne calcul pas sur la bonne cellule (S au lieu de J).

Je vais mieux expliquer ma problématique :
Le code que je voudrais écrire doit me renvoyer en colonne S la formule suivante
J'ai :

en J3 : "13.11.202100:00" le code doit me renvoyer en colonne "S"
la formule : =SI(ESTNUM(J3)=FAUX;"";J3) résultat affiché = 13.11.202100:00"

en j4 : "RdV Fait" le code doit me renvoyer en colonne "S"
la formule : =SI(ESTNUM(J4)=FAUX;"";J4) résultat affiché = ""

je tente de modifier ton code mais je n'y arrive pas
lionel
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re
Je l'ai fait comme ça :
VB:
Sub Macro2()
    Range("s3").Select
    ActiveCell.Formula = "=IF(ISNUMBER(RC[-9])=FALSE,"""",RC[-9])"
    [s3].Copy
    [s4:s11].Select
    ActiveSheet.Paste
    [s3:s11].Copy
    [s3].PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("s3").Select
    Application.CutCopyMode = False
End Sub
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re
Je l'ai fait comme ça :

VB:
Sub soussou()
    [s3:s11] = ""
    ActiveSheet.Range("s3:s11").Formula = "=IF(ISNUMBER(RC[-9])=FALSE,"""",RC[-9])"
    ActiveSheet.Range("s3:s11").Copy: Range("s3:s10").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    Range("s3").Select
End Sub
lionel
 

sousou

XLDnaute Barbatruc
Pas compris tu ne veux pas les formules en colonne S?
Si oui alors le calcul ne se fera plus dans la feuille!
Si non tu n'as pas besoin de formule pour rappeler les valeur de J, mais d'un autre code
 

sousou

XLDnaute Barbatruc
Cà c'est pas possible, si tu supprimes la formule par les valeurs, lorsque la colonne j sera modifier la colonne s ne le sera plus.

Pour copier les valeur, fait ceci
For n = 3 To 11
If IsNumeric(Cells(n, 10)) = True Then Cells(n, 19) = Cells(n, 10) Else Cells(n, 19) = ""
Next
 

patricktoulon

XLDnaute Barbatruc
Si, je veux que les calculs se fassent mais en finalité que ce soit les valeurs qui restent dans la cellule
des fois je te jure Lionel je me demande si tu disjoncte pas un peu
pourquoi ne le fait tu pas en vba directement avec résultat en dur alors
au pire tu fait un evaluate de ta formule si tu sais pas la traduire en VBA et ça t'enverra le résultat en dur dans les cells
là tu change les cells donc un calculate ensuite la formule elle même génère un calculate et ensuite tu durci les valeurs avec .value=.value et encore un calculate
si ça peut te calmer je veux bien t'offrir une calculette

a ben @sousou a tout dit on c'est croisé
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
et ben alors sert toi du change et fait tes calcul en vba ou evaluate en vba si tu sais pas traduire une formule en code VBA
c'est tout
et même(facultatif) au pire histoire d’économiser tu peut shunter le calculate puisque tout ce fait par VBA
c'est pas tres pratique ton principe et même dangereux qui sait si tu a 10000 ligne qui se calcule ton copy paste(qui pourrait être simplement remplacé par ".value=.value") peut être fait avant les calculs

tu fait des trucs toi des fois
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Code VBA
Réponses
7
Affichages
757
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…