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 SubSi ç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
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 SubJean-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.