Avoir les N° et dates automatiquement après une saisie

Bonjour,

D'abord expliqué un peu mon projet.

J'ai un fichier Excel dans lequel je saisie les données (recettes) dans un tableau en utilisant un style de tableau Excel. Les données sont disposées comme suit:

1ère colonne = N° (1, 2, 3, 4,.....,n)

2ème colonne = Date (date de l'opération)

3ème colonne = compte

4ème colonne = libellé

5ème colonne = Montant

Alors ce que je souhaiterais :

1) Pouvoir avoir les N° automatiquement à chaque changement de ligne (qui se fait avec la touche tabulation)

2) Pouvoir avoir automatiquement la date du jour (qui ne change pas après) sans être obligé de la saisie (j'ai déjà essayé avec la formule "Aujourd'hui()" sans succès étant donné qu'avec cette formule, les dates sont mise à jour à la réouverture du fichier).

Merci d'avance pour vos contributions

Cordialement

Bonjour

Pourquoi joindre un fichier :

Sur la charte du Forum

https://forum.excel-pratique.com/annonces/explications-et-regles-a-respecter-t13.html

Point 6 : • Pensez à joindre un fichier pour faciliter la compréhension du problème et augmenter les chances de vous faire aider (taille limite : 300ko, n'hésitez pas à compresser vos fichiers).

Cordialement

Bonjour,

Comme il avait dit Amadeus, un fichier aurait largement faciliter la compréhension. Mais vu ce que tu demandes, ça ne se fait pas normalement par formules et surtout la date du jour. Donc, il faut une macro évènementielle comme "Double clique sur la cellule concernée" pour lequel j'ai opté.

1) N° opération => j'ai supposé que le premier numéro commence à la 2ème ligne de la colonne A

2) Date du jour => dans la colonne B

3) il faut double cliquer à chaque cellule de saisie (colonne A ou B) pour que la macro fonctionne.

Partant de là, mets le code suivant dans le module de la feuille concernée et teste.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
        Target = Target.Row - 1
    End If
    If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
        Target = Date
    End If
End Sub

Si ça ne marche pas, c'est que les données du problème ne se trouve pas à l'endroit supposé. Il faut adapter la macro.

Bonjour,

Merci beaucoup pour votre réponse et désolé pour ma réaction tardive.

Comme suggéré, je joint mon fichier à ma question pour que vous m'aidiez car je ne maitrise pas le vba.

Aussi une autre question : j'ai constaté que quand de protège une feuille Excel, la touche tabulation ne fonctionne plus.

Existe-t-il une méthode pour permettre d'utiliser la touche tabulation même si la feuille est protégée.

Merci d'avance pour votre contribution

Cordialement

8gesfico-recette.rar (281.44 Ko)

Bonjour,

Une proposition à étudier.

J'ai modifié un peu le fichier (voir gestionnaire de noms) et surtout redéfini la plage de données du tableau !?

On ne peut pas insérer ou supprimer des lignes d'un tableau dans une feuille protégée (problème connu).

Donc un double-clic en colonne Date ôte la protection de la feuille, insère une ligne, inscrit le numéro de ligne et la date, puis on remet la protection de feuille.

A te relire.

Cdlt.

15gesfico-recette.xlsm (165.00 Ko)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim lr As ListRow

    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Me.ListObjects(1).ListColumns(2).DataBodyRange) Is Nothing Then
        Cancel = True
        Me.Unprotect
        Set lr = Me.ListObjects(1).ListRows.Add
        With lr.Range
            .Columns(1).Value = Me.ListObjects(1).ListRows.Count
            .Columns(2).Value = Date
        End With
        Me.Protect
    End If

    Set lr = Nothing

End Sub
Jean-Eric a écrit :

Bonjour,

Une proposition à étudier.

J'ai modifié un peu le fichier (voir gestionnaire de noms) et surtout redéfini la plage de données du tableau !?

On ne peut pas insérer ou supprimer des lignes d'un tableau dans une feuille protégée (problème connu).

Donc un double-clic en colonne Date ôte la protection de la feuille, insère une ligne, inscrit le numéro de ligne et la date, puis on remet la protection de feuille.

A te relire.

Cdlt.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim lr As ListRow

    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Me.ListObjects(1).ListColumns(2).DataBodyRange) Is Nothing Then
        Cancel = True
        Me.Unprotect
        Set lr = Me.ListObjects(1).ListRows.Add
        With lr.Range
            .Columns(1).Value = Me.ListObjects(1).ListRows.Count
            .Columns(2).Value = Date
        End With
        Me.Protect
    End If

    Set lr = Nothing

End Sub

Merci Jean-Eric pour votre apport.

Toutefois, j'arrives plus à insérer de nouveaux enregistrement dans le fichier que vous m'avez proposer. L'idéal est d'obtenir le N° et la date automatiquement après avoir insérer le compte. Et aussi pouvoir utiliser la touche tab pour changer de cellule et aussi changer de ligne dans le tableau, ce qui devrait créer une nouvelle ligne pour un nouvel enregistrement.


Jean-Eric a écrit :

Bonjour,

Une proposition à étudier.

J'ai modifié un peu le fichier (voir gestionnaire de noms) et surtout redéfini la plage de données du tableau !?

On ne peut pas insérer ou supprimer des lignes d'un tableau dans une feuille protégée (problème connu).

Donc un double-clic en colonne Date ôte la protection de la feuille, insère une ligne, inscrit le numéro de ligne et la date, puis on remet la protection de feuille.

A te relire.

Cdlt.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim lr As ListRow

    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Me.ListObjects(1).ListColumns(2).DataBodyRange) Is Nothing Then
        Cancel = True
        Me.Unprotect
        Set lr = Me.ListObjects(1).ListRows.Add
        With lr.Range
            .Columns(1).Value = Me.ListObjects(1).ListRows.Count
            .Columns(2).Value = Date
        End With
        Me.Protect
    End If

    Set lr = Nothing

End Sub

Merci Jean-Eric pour votre apport.

Toutefois, j'arrives plus à insérer de nouveaux enregistrement dans le fichier que vous m'avez proposer. L'idéal est d'obtenir le N° et la date automatiquement après avoir insérer le compte. Et aussi pouvoir utiliser la touche tab pour changer de cellule et aussi changer de ligne dans le tableau, ce qui devrait créer une nouvelle ligne pour un nouvel enregistrement.

Re,

Je reprends mes explications après modifications.

1 - la feuille est protégée (sans mot de passe). la protection fait que l'on ne peut pas insérer ou supprimer une ligne ou une colonne dans le tableau (d'où l'utilisation de VBA).

2 - Le déplacement dans le tableau est en fonction des cellules non verrouillées (les formules sont protégées).

3 - un clic-droit en colonne 3 insère une nouvelle ligne en fin de tableau.

4 - la sélection d'un cpte. affiche le numéro de ligne et la date du jour en colonnes 1 et 2.

A te relire.

Cdlt.

Merci Jean-Eric.

Au premier essai je suis satisfait. Sinon, je reviendrai vers vous.

Merci beaucoup

Cordialement

Re,

Merci d'avoir clos le sujet.

Cdlt.

Rechercher des sujets similaires à "dates automatiquement saisie"