XL 2010 Formule dans cellule -> formule VBA

tchi456

XLDnaute Occasionnel
Bonjour,

J'ai une formule dans la cellule C4 pour pouvoir convertir une date en un numéro et je souhaiterais l'utiliser en VBA pour pouvoir double cliquer dans cette même cellule et faire la même opération. La cellule B4 contient la date du jour et la formule donne 22256 (pour la date du 13.09.2022).

Voici la formule en question: TEXTE(B4;"aa")&TEXTE(B4-DATE(ANNEE(B4);1;0);"000")

J'ai essayé ceci mais ça ne fonctionne pas:

Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

ActiveSheet.Unprotect Password:="."
If Not Intersect(Target, [C4]) Is Nothing Then
Cancel = True
If Target = "" Then
Target.Formula = TEXTE(B4;"aa")&TEXTE(B4-DATE(ANNEE(B4);1;0);"000")
Else
Target = ""
End If
End If
ActiveSheet.Protect Password:="."

End Sub

Pouvez-vous m'aider?

Mes meilleures salutations,

Thierry
 
Solution
bon. alors. la subtilité est apparemment
quand tu veux ecrire la fonction texte DANS une formule, c'est pas "Format", mais "TEXT"

VB:
Sub test()
Dim formuletest As String
formuletest = "=text(B4,""aa"")&text(B4-DATE(year(B4),1,0),""000"")"
Range("E2").Formula = formuletest
End Sub

tchi456

XLDnaute Occasionnel
Bonjour vgendron,

Merci pour vos conseils mais je n'y arrive toujours pas; ça bloque sur le "yy":

Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

ActiveSheet.Unprotect Password:="."
If Not Intersect(Target, [C5]) Is Nothing Then
Cancel = True
If Target = "" Then
Dim formule As String
Target.Formula = "=TEXT(C5,"yy")&TEXT(C5-DATE(YEAR(C5),1,0),"000")"
Target.Formula = formule
Else
Target = ""
End If
End If
ActiveSheet.Protect Password:="."

End Sub

Meilleures salutations,

Thierry
 

vgendron

XLDnaute Barbatruc
oui pardon. autre subtilité que j'ai oubliée: les " doivent etre doublés ""

pour anticiper un autre problème
la fonction TEXTE en vba s'appelle FORMAT
MAIS j'ignore pourquoi, ca ne passe pas: le résulat est "#NOM ?"

encore une subtilité que je n'ai pas encore identifiée
 

vgendron

XLDnaute Barbatruc
bon. alors. la subtilité est apparemment
quand tu veux ecrire la fonction texte DANS une formule, c'est pas "Format", mais "TEXT"

VB:
Sub test()
Dim formuletest As String
formuletest = "=text(B4,""aa"")&text(B4-DATE(year(B4),1,0),""000"")"
Range("E2").Formula = formuletest
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 719
Messages
2 112 179
Membres
111 452
dernier inscrit
christine64