Rennoyer une valeur sous condition

bardesun

XLDnaute Nouveau
bonjour,

je souhaite pouvoir renvoyer la date du jour dans les cellules de la colonne A si les cellules de la colonne B ne sont pas vides, mais uniquement la première fois où la cellule B à eu une valeur

cad aprés enregistrement de la feuille, si je l'ouvre de nouveau le lendemain, les dates existantes ne doivent plus changer

merci d'avance

bardesun
:)
 

Gorfael

XLDnaute Barbatruc
Re : Rennoyer une valeur sous condition

Salut bardesun et le forum
Tu ne peux pas le faire par formule !
Méthode pour une version Excel < 2007
Clic-droit sur nom de l'onglet => Menu contextuel>>Visualiser le code
Ou
<Alt>+<F11> et double-clic sur le module lié à la feuille concernée.

Tu colles la macro suivante :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range, Plage As Range
Set Plage = Intersect(Target, Columns(2))
If Plage Is Nothing Then Exit Sub
For Each Cel In Plage
    If Cel <> "" And Cel.Offset(0, -1) = "" Then Cel.Offset(0, -1) = Date
    If Cel = "" Then Cel.Offset(0, -1).ClearContents
Next Cel
End Sub
Pour chaque cellule modifiées de la colonne B :
si B est vide, effacer A
Si B n'est pas vide, mais que A l'est, inscrire la date en A
A+
 

job75

XLDnaute Barbatruc
Re : Rennoyer une valeur sous condition

Bonsoir bardesun, Gorfael,

Menu Outils-Options => onglet Calcul et cocher Itération (sur Excel 2003).

Formule en A1 à tirer vers le bas :

Code:
=SI(B1="";"";SI(A1="";AUJOURDHUI();A1))

Edit : pour tester remplacer AUJOURDHUI par MAINTENANT et mettre A1 au format jj/mm/aaaa hh:mm:ss

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Rennoyer une valeur sous condition

Bonjour le fil, le forum,

Toujours avec Itération cochée, on peut aussi utiliser cette formule plus légère en A1 (les SI prennent de nombreux octets) :

Code:
=(B1<>"")*(A1+NON(A1)*AUJOURDHUI())

Mettre A1 au format personnalisé jj/mm/aaaa;; pour masquer une date nulle.

A+
 

bardesun

XLDnaute Nouveau
Re : Rennoyer une valeur sous condition

bonjour garfael job75 et le forum,

pour garfael : j'ai pratiqué comme indiqué mais rien ne se passe; "self made man" ;-) en vba, je ne comprend pas pourquoi et j'aimerai bien savoir ! si tu as un idée sur la "non" manip que je n'aurais pas faite...

pour job75 : le première solution marche parfaitement; la seconde laisse un date avec des zéros si B n'est pas renseigné

cette feuille sera partagé entre plusieurs utilisateurs en réseau qui n'auront pas forcément leurs postes avec l'itération coché
c'est moi qui exploite les résultats avec le bon paramètrage; est-ce que les résultats seront corrects à l'arrivée sur mon poste ?

merci à vous

@+
 

job75

XLDnaute Barbatruc
Re : Rennoyer une valeur sous condition

Re,

pour job75 : le première solution marche parfaitement; la seconde laisse un date avec des zéros si B n'est pas renseigné

Lisez bien la 2ème solution avec le format personnalisé en A1 pour cacher la valeur 0...

cette feuille sera partagé entre plusieurs utilisateurs en réseau qui n'auront pas forcément leurs postes avec l'itération coché
c'est moi qui exploite les résultats avec le bon paramètrage; est-ce que les résultats seront corrects à l'arrivée sur mon poste ?

Il faut que le fichier donné aux utilisateurs soit avec la case Itération cochée. Elle le restera si l'utilisateur ne la modifie pas (et si le fichier est ouvert seul).

On peut empêcher sa modification avec cette macro à placer dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Calculate()
With Application
  .EnableEvents = False
  .Iteration = True
  .EnableEvents = True
End With
End Sub

Bien sûr, il faut que les macros soient activées quand on ouvre le fichier...

A+
 
Dernière édition:

bardesun

XLDnaute Nouveau
Re : Rennoyer une valeur sous condition

bonjour job75

je n'avais pas bien lu la fin de la 2ème formule ..... j'ignorais que faire suivre la mise en forme d'une date par deux ";;"permettait de masquer les valeurs nulles; merci

la macro pour forcer l'itération va me rendre service; j'ai toujours beaucoup de mal avec la syntaxe vba :(

les utilisateurs ont Office 2003 ou 2007 ; cette macro est-elle bien supportée par les deux versions ?

merci

@+
 

job75

XLDnaute Barbatruc
Re : Rennoyer une valeur sous condition

Bonjour bardesun,

Ma macro ainsi que celle de Gorfael devraient fonctionner sous toute version Excel.

Mais il faut bien sûr que les macros aient été préalablement activées.

Et dans ce cas, il vaut mieux utiliser la solution de Gorfael, ça évite les formules.

J'ai donné la solution par formule avec Itération car elle est intéressante en soi, mais pas vraiment pour un fichier multi-utilisateurs.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 098
Membres
104 031
dernier inscrit
RimeF