Microsoft 365 Mémoriser la valeur d'une cellule qui change sous condition

LAETITII

XLDnaute Nouveau
Bonjour,

je cherche un script VBA qui me permetra de mémoriser la valeur d'une cellule qui change.

je vous explique : j'ai deux cellules A1 et A2.
L'écriture sur A2 est autorisée si A1 est non-nulle
mais la valeur de la cellule A2 s'éfface si A1 est nulle.
je cherche une formule ou VBA qui me permettra de mémoriser la dernière valeur de A2 après suppresion.

petit exemple:
lorsque A1 = 1, A2 affiche "5"
lorsque A1= ""; A2 s'efface
j'aimerai qu'en remettant la valeur 1 à A1, A2 affiche automatiquement la dernière valeur qu'elle avait c-a-d "5" sans que j'ai à le resaisir moi même.

Merci d'avvance pour votre aide.
 

Jacky67

XLDnaute Barbatruc
Bonjour,

je cherche un script VBA qui me permetra de mémoriser la valeur d'une cellule qui change.

je vous explique : j'ai deux cellules A1 et A2.
L'écriture sur A2 est autorisée si A1 est non-nulle
mais la valeur de la cellule A2 s'éfface si A1 est nulle.
je cherche une formule ou VBA qui me permettra de mémoriser la dernière valeur de A2 après suppresion.

petit exemple:
lorsque A1 = 1, A2 affiche "5"
lorsque A1= ""; A2 s'efface
j'aimerai qu'en remettant la valeur 1 à A1, A2 affiche automatiquement la dernière valeur qu'elle avait c-a-d "5" sans que j'ai à le resaisir moi même.

Merci d'avvance pour votre aide.
Bonjour,
Essaye ceci, à placer dans le module de la feuille en question.
VB:
Option Explicit
Dim tmp

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Address = "$A$2" Then tmp = [A2]
    If Target(1).Address = "$A$1" Then [A2] = IIf([A1] = 1, tmp, "")
    Application.EnableEvents = True
End Sub
 
Dernière édition:

LAETITII

XLDnaute Nouveau
Bonjour,
Essaye ceci, à placer dans le module de la feuille en question.
VB:
Option Explicit
Dim tmp

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Address = "$A$2" Then tmp = [A2]
    If Target(1).Address = "$A$1" Then [A2] = IIf([A1] = 1, tmp, "")
    Application.EnableEvents = True
End Sub
Bonjour,

Merci pour ta réponse.
mais quand je teste le code il ne fonctionne pas de mon côté.

je vais essayer d'être plus explicite :
lorsque A1 = "oui", l'écriture est autorisée sur A2 donc je peux marquer 5
lorsque A1= "non"; l'écriture est bloquée sur A2 et la cellule s'efface automatiquement
j'aimerai qu'en remettant "oui" sur A1, A2 affiche automatiquement la dernière valeur qu'elle avait c-a-d "5" sans que j'ai à la resaisir moi même.

merci d'avance pour ton aide.
 

Jacky67

XLDnaute Barbatruc
Bonjour,

Merci pour ta réponse.
mais quand je teste le code il ne fonctionne pas de mon côté.

je vais essayer d'être plus explicite :
lorsque A1 = "oui", l'écriture est autorisée sur A2 donc je peux marquer 5
lorsque A1= "non"; l'écriture est bloquée sur A2 et la cellule s'efface automatiquement
j'aimerai qu'en remettant "oui" sur A1, A2 affiche automatiquement la dernière valeur qu'elle avait c-a-d "5" sans que j'ai à la resaisir moi même.

merci d'avance pour ton aide.
Re..
Pour bloquer une cellule à l'écriture, il faudra protéger la feuille
Une proposition en pj avec ce code
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Unprotect
    [A2].Locked = UCase([A1]) = "NON"
    If Target.Address = "$A$2" Then tmp = [A2]
    If Target(1).Address = "$A$1" Then [A2] = IIf(UCase([A1]) = "OUI", tmp, "")
    Protect
    Application.EnableEvents = True
End Sub

** La version V2 garde en mémoire la cellule A2 même après fermeture du classeur.
 

Pièces jointes

  • memoriseA2.xlsm
    26.4 KB · Affichages: 3
  • memoriseB1v2.xlsm
    27.5 KB · Affichages: 4
Dernière édition:

Discussions similaires

Réponses
7
Affichages
778
Compte Supprimé 979
C

Membres actuellement en ligne

Statistiques des forums

Discussions
313 322
Messages
2 097 141
Membres
106 850
dernier inscrit
benbeckman