Ajouter texte dans une cellule sans modifier la formule

Bonjour,

Est-ce possible de mettre du texte dans la même cellule qui contient déjà une formule sans toutefois effacé la formule ? Ex. Si je mets =AUJOURDHUI() La cellule va indiquer une date. Si je veux utiliser cette date par défaut comme une suggestion et que, si je décide de la changer cela va effacer automatiquement la formule. Est-ce possible de le faire tout en gardant la formule ? Merci a l'avance pour votre aide.

Bonjour,

En "formule" avec trois cellules :

La première A1 par exemple =AUJOURHUI()

La deuxième A2 pas remplie ou alors un date "utilisateur"

La troisième A3 =SI(A2>0;A2;A1)

Si en A1 vous mettez une fonction SI : =SI(A2>0;"";AUJOURDHUI())

alors sans date de l'utilisateur c'est aujourd'hui qui est proposé, sinon elle est masquée et c'est la date utilisateur qui est visible.

Dans vos formules qui découle de cette date vous prenez la valeur de A3.

C'est une des solutions, après il y a VBA.

@ bientôt

LouReeD

Un petit fichier :

@ bientôt

LouReeD

Salut Robert,
Salut LouReed,

Il a bien raison, LouReed, de recommander VBA : pas besoin de cellules annexes pour rattraper le coup.

Target.FormulaLocal = IIf(IsDate(Target) = True, Target, "=AUJOURDHUI()")
11rcleroux.xlsm (13.76 Ko)

A+

Merci de votre aide tout fonctionne .

Bonsoir Robert, LouReed,

tant mieux!
Dans le cas d'une résolution de la demande, l'usage est de clôturer le sujet en cliquant sur le "V" du post qui l'a résolu au mieux.

image

A+

Désolé pour le VBA quel serait la formule en francais ?

?
Déso, Robert, que veux-tu dire par là?

Bien que j ai copié votre formule VBA mais mon Excel est Francais donc le If deviens un Si non ?

image
image

Salut Robert,

Que Office soit en anglais ou français, VBA est toujours écrit en anglais, contrairement aux formules!
Reprends la macro telle quelle et cela ira très bien.

Si le problème persiste..

A+

Voici le fichier en question

je dois mettre dans la section date (dans saisie) la date du jour

par défaut et pour la modifier si besoin. si je supprime la date que j ai mis

elle doit donc revenir automatiquement a la date du jour.. Mais la même avec la VBA

rien n'apparait.

Ah désolé mon fichier dépasse la limite permise

Bonjour,

Je suspecte que vous ayez planté en milieu de macro et que les events ne soient pas réactivés. Dans a fenetre d'exécution immédiate de l'éditeur VBA (en bas par défaut), entrez

Application.EnableEvents = True

Puis validez avec entrée.

Ensuite pour moi la macro proposée devrait faire exactement ce que vous voulez.

Pour joindre votre fichier, supprimez les infos inutiles et toutes vos images. Sinon mettez-le sur un cloud/transfert.

Bonsoir,

un "If Not Intersect(Target" en dehors d'une procédure événementielle de feuille donne une erreur du fait que Target est vide...

@ bientôt

LouReeD

Re bonsoir,

alors mon code n'est peut-être pas optimisé mais il est au bon endroit sur mon fichier joint...

Clic droit sur le nom de l'onglet sur lequel vous voulez que cette procédure fonctionne, puis "visualiser le code" alors VBA éditeur s'ouvre directement sur la feuille de code de l'onglet sur lequel vous avez fait le clic droit. C'est "ici" qu'il faut coller le code ci-dessous :

Private Sub Worksheet_Change(ByVal Target As Range)
    ' en cas d'erreur d'exécution du code on va directement à l'étiquette Fin de la procédure
    On Error GoTo Fin
    ' s'il y a plus d'une cellule concerné par le "Change" on quitte la procédure
    If Target.Count > 1 Then Exit Sub
    ' on teste si l'unique cellule modifiée représentée par Target est en intersection avec la cellule B13, celle que l'on surveille
    If Not Intersect(Target, Range("B13")) Is Nothing Then
        ' si c'est le cas alors on arrête la surveillance événementielle de la feuille afin de pouvoir appliquer
        ' des changements sans déclencher "en boucle" la procédure actuelle
        Application.EnableEvents = False
        ' si la cellule représentée par Target est égale à 0 c'est que l'on vient d'effacer la valeur
        ' dans ce cas on inscrit la date du jour, ici par l'inscription de la fonction AUJOURDHUI() dans cette cellule
        If Target = "" Then Target.Formula2Local = "=AUJOURDHUI()"
    End If
' étiquette fin
Fin:
    ' en cas d'erreur ou en fonctionnement normal on réactive la surveillance événementielle
    Application.EnableEvents = True
End Sub

Là on voit bien qu'on est sur une procédure événementielle de feuille c'est une worksheet avec la surveillance "Change", cela détecte tout les changements "manuels" de valeurs dans les cellules de la feuille.

Toutes les procédures événementielle sont à coder sur la feuille de code de l'onglet concerné, les autres procédures on va dire celles qui sont standards sont à écrire dans un modules standard...

Contrairement à la ligne de code de curulis57, je ne test pas si la valeur entrée est une date... Il suffit alors de remplacer :

If Target = "" Then Target.Formula2Local = "=AUJOURDHUI()"

par :

Target.Formula2Local = IIf(IsDate(Target) = True, Target, "=AUJOURDHUI()")

Evidemment le B13 est à modifier par E8 si je comprends bien !

@ bientôt

LouReeD

Rechercher des sujets similaires à "ajouter texte modifier formule"