Saisie d'une date automatique

Bonjour,

Je souhaiterai obtenir la saisie automatique en D11 et d'une manière définitive, la date du jour sous le format JJ/mm/aaaa après la saisie (texte) de la cellule D8

par avance je vous remercie

cordialement

mibri

Bonjour mibri

Par formule... ce n'est pas possible... le formule =AUJOURDUI() donne bien la date du jour mais elle n'est pas définitive au sens où (je suppose) tu l'entends... elle est volatile. C'est à dire qu'elle va varier à chaque ouverture du fichier

Il faut passer par VBA et appliquer une affectation de la date du jour de la modification...

cependant sans fichier exemple, difficile de répondre plus précisément

Bonjour mibri et le forum,

Pour ma part, je mettrai simplement cette formule en D11

=SI(D8<>"";AUJOURDHUI();"")

cdt

henri

Bonjour et merci pour vos réponse rapide.

Je ne souhaite pas en effet "aujourdhui()" car cette date devra être définitive. Je pense effectivement qu'il faudrait du VBA. Je joins un fichier cela sera plus clair

cordialement

mibri

43exemple.xlsm (40.75 Ko)

(re)

Je ne suis pas d'accord avec toi

AFEH a écrit :

Pour ma part, je mettrai simplement cette formule en D11

=SI(D8<>"";AUJOURDHUI();"")
cette formule se mettra à jour à chaque ouverture du classeur or je crois avoir compris que mibri souhaite une date définitive...

bonjour

pour saisir definitivement une date

1) on va (helas pour toi) sur la cel

2) raccourci clavier avec les touches Ctrl et ;

c'est pas de l'automatique ;mais presque

cordialement

merci à vous deux.

effectivement je dois avoir une date définitive.

N'y a t il pas un code vba qui me permettra d'obtenir ce que je cherche ???

Si je n'ai d'autre moyen Tulipe4 veux tu me préciser alors quel sera le Ctrl ??, est ; ??

cordialement

mibri

(re) Mibri, bonjour tous, Tulipe_4

Sinon une solution à intégrer dans le module de "Feuil10" selon ton exemple

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lig, col
    lig = Target.Row
    col = Target.Column
    Application.EnableEvents = False
    If (lig = 11) And (col = 4) Then
        If Not (Cells(8, 4) = "") Then ' si la cellule [BANQUE] n'est pas VIDE !!!
              ' ALORS si la cellule {CONSTAT ERREUR] n'est pas vide Alors date Sinon ancienne Valeur            
              Cells(11, 4) = IIf(Cells(11, 4) = "", Date, Cells(11, 4)) 
        End If
    End If
    Application.EnableEvents = True
End Sub

(re) Tous

andrea73 a écrit :

Si je n'ai d'autre moyen Tulipe4 veux tu me préciser alors quel sera le Ctrl ??, est ; ??

tulipe_4 a écrit :

2) raccourci clavier avec les touches Ctrl et ; (point-virgule)

merci Andrea73, tu as du constater que ma feuille comportait déjà deux codes. Est ce que j'intègre ton code dans "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" ???

cdt

(re)

Si je ne me trompes pas... ton code ne possède pas de code "Selection_Change"

Donc tu intègres mon code tel quel...

La procédure évènementielle Selection_Change contrôle les "changements de cellule" (autrement dit les positionnements) alors que celle qui est déjà utilisée dans ton code "Change" contrôle quant à elle les "Changements" tout court (autrement dit les modifications de contenu mais de positionnement)...

J'ai appliqué ce code en attendant ta réponse mais la date n'apparait pas ???

je te transmet mon fichier exemple avec cette application

merci


C'EST PARFAIT CA MARCHE ET JE TE REMERCIE POUR TON AIDE JE TE SOUHAITE UNE BONNE SOIREE

CORDIALEMENT

MIBRI

33exemple.xlsm (41.92 Ko)

(re)

Voir mon post précédent où je répondais pendant que tu intégrais nos pots ce sont croisés quelque part dans les tuyaux

PS/ Je viens d'essayer ton dernier PJ... ça fonctionne sauf que ta cellule [CONSTAT ERREUR] n'est pas vide... si tu frappes [SUPPR] pour corriger "l'erreur" ça fonctionne !!

Ceci fonctionne très bien sauf que comme prévu dans le deuxième code je ne passe plus d'une manière automatique de D11 vers I15, est ce que tuas une idée pourquoi ???

merci

Bonjour mibri

Oui... je n'avais pas vu ton code "Change"

Donc il intégrer "le changement de date" dans "Change" et non dans Selection_Change... comme ceci

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i&, deb, pass As Boolean, C
    mem = Target.Address(0, 0)
    On Error Resume Next
    For Each C In Array("D2", "D5", "D8", "D11", "I15", "I17", "I19", "I27", "I29", "G33", "H33", "I33", "J33", "N33", "G35", "H35", "I35", "J35", "N35", "G37", "H37", "I37", "J37", "N37", "G39", "H39", "I39", "J39", "N39", "G41", "H41", "I41", "J41", "N41")
        If pass Then
            Range(C).Select
            pass = 0

            ' Insérer ICI le "nouveau code" Pour forcer la date à la date du jour une seule fois
            If C = "D11" Then
                ' Si (IIf) la cellule de la date est vide (Range("D11"))
                '   Alors "mise à la date"              Date
                '   Sinon "la date existante reste"     Range("D11")
                Range("D11") = IIf(Range("D11") = "", Date, Range("D11"))
            End If

            Exit Sub
        End If
        i = i + 1
        If mem = C Then: pass = 1: GoTo 1
1   Next C
End Sub

Bonjour Andrea73

Je suis désolé mais je n'arrive pas à finaliser cette fonction, j'ai (je pense) fait ce que tu m'as indiqué mais j'ai un message d'erreur

Est ce que tu veux bien vérifier......

je te remercie

cdt

mibri

capture

Bonjour mibri

Non tu n'as pas (tout à fait) fait ce que j'ai dit

andrea73 a écrit :

Oui... je n'avais pas vu ton code "Change" Donc il intégrer "le changement de date" dans "Change" et non dans "Selection_Change"... comme ceci

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i&, deb, pass As Boolean, C
    mem = Target.Address(0, 0)
    On Error Resume Next
    For Each C In Array("D2", "D5", "D8", "D11", "I15", "I17", "I19", "I27", "I29", "G33", "H33", "I33", "J33", "N33", "G35", "H35", "I35", "J35", "N35", "G37", "H37", "I37", "J37", "N37", "G39", "H39", "I39", "J39", "N39", "G41", "H41", "I41", "J41", "N41")
        If pass Then
            Range(C).Select
            pass = 0

            ' Insérer ICI le "nouveau code" Pour forcer la date à la date du jour une seule fois
            If C = "D11" Then
                ' Si (IIf) la cellule de la date est vide (Range("D11"))
                '   Alors "mise à la date"              Date
                '   Sinon "la date existante reste"     Range("D11")
                Range("D11") = IIf(Range("D11") = "", Date, Range("D11"))
            End If

            Exit Sub
        End If
        i = i + 1
        If mem = C Then: pass = 1: GoTo 1
1   Next C
End Sub

 

Il faut donc supprimer mon ancienne procédure "Selection_Change" et modifier ta procédure "Change" comme indiquer dans le code ci-dessus !

bonjour Andrea73,

ça y est, c'est "nickel" merci beaucoup. Est ce que je peux te présenter un autre projet si tu as le temps ???

Bonjour mibri

Propose toujours... pour le temps je te dirais en fonction de la tâche à effectuer

Par contre je te conseille d'ouvrir un nouveau fil/ une nouvelle question...

Et fais moi un MP pour me prévenir (si tu veux) lorsqu'il est prêt à être consulté...

Très bien c'est gentil

Rechercher des sujets similaires à "saisie date automatique"