Date auto en B1 quand A1 renseignée
RésoluJ'ai un tableau Excel tout simple à 2 colonnes.
J'aimerais rentrer en colonne B une formule qui permette de renseigner la date du jour LORSQUE la colonne A est saisie et que cette date soit ensuite figée.
ex : je renseigne A1 le 02/03/15, alors B1 m'indiquera donc automatiquement cette date, même lorsque je réouvivrai ce tableau plusieurs jours plus tard.
Je renseigne A2 le 18/06/15, alors B2 etc etc
Merci d'avance à ceux qui pourront m'aider (la fonction AUJOURDHUI fait que B s'actualise à la date du jour à chaque fois que j'ouvre le tableau.. et CTRL + ; ne convient pas car cette fonction n'est pas automatique).
Merci!
29 réponses
La problématique centrale est d’inscrire automatiquement la date dans la colonne B lorsque la colonne A est remplie, puis de figer cette date pour qu’elle ne se mette pas à jour. Plusieurs solutions préconisent une macro Worksheet_Change qui place Date dans B lorsque A est modifiée, tout en prévoyant la gestion de la protection de feuille pour autoriser l’écriture. Les exemples typiques placent Target.Offset(0,1) = Date et prévoient un unprotect/protect avec mot de passe lorsque la feuille est protégée, ou bien laisser déverrouillée une plage limitée. En pratique, la question demeure si la date doit se figer après la première saisie ou se mettre à jour selon les besoins futurs, selon le niveau de protection et les droits des utilisateurs.
-
Bonjour,
Et non il va s'actualiser, si tu veux fixer ta date il faut compléter ton code,
en regroupant les posts de la discussion surtout au niveau de la protection, les cellules de la colonne A sont déverrouillées sinon le code plantera.
remplace le code existant par et saisir entre les guillemets ton mot de passe
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
If Target(1, 2) <> "" Then
Exit Sub
Else
ActiveSheet.Unprotect Password:="mot de passe"
Target(1, 2) = Date
ActiveSheet.Protect Password:="mot de passe"
End If
End If
End Sub
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir. -
Re,
J'ai essayé la première solution car je ne sais pas comment faire pour créer un bouton et ça fonctionne bien. Le message d'erreur s'affiche mais la copie et le collage fonctionnent tout de même!
Merci beaucoup! -
Re,
alors deux solutions,
1/ tu déverrouilles un nombre de cellules correspondant à la copie du tableau et tu protèges la feuille, si la copie est inférieure ou égale à la zone déprotégée pas de problème
2/ tu crées un bouton pour automatiser la déprotection, la copie et la reprotection
-
Re Mike-31,
Merci de ta patience et de prendre le temps de me répondre.
Je souhaite que les personnes à qui je transmet le fichier puissent faire ce copier coller manuellement si cela est possible. -
Re,
ce Copier et Coller se fait comment manuellement ou à l'aide d'une macro !
-
Re,
comme le collage du tableau se fait par macro, il faut ôter la protection en début de code et reprotèger en fin de code comme nous te l'avons expliqué et définir la première cellule du collage
-
Il est donc impossible qu'une personne qui ne puisse pas ôter la protection puisse effectuer ce copier coller? Les personnes à qui je vais transmettre ce tableau ne pourront donc pas copier coller leurs données sans le mot de passe qui permet d'ôter la protection de la feuille (ce que je cherche à faire)?
Désolé mais je ne comprends pas toutes les subtilités de vos réponses, je manque vraiment de maîtrise et de connaissances..
-
-
En effet B est verrouillée et ma feuille est protégée par un mot de passe.
Si j'ôte la protection, ça fonctionne.
Le problème est que je souhaite diffuser cette feuille à certaines personnes. Je souhaite donc que la feuille soit toujours protégée pour que ces personnes ne puissent pas avoir accès au code.
Mais j'aimerais que ces personnes puissent copier coller les valeurs de ce tableau dans un nouveau tableau vierge, au même format, qui contiendra une plage de données plus grande.
En fait, lorsque ces personnes auront rempli le tableau pour une année, ils ne pourront pas continuer à utiliser le tableau.
Je leur transmettrai alors un nouveau tableau, vierge et au même format, pour une année supplémentaire. Et j'aimerais qu'ils puissent copier coller les données de leur premier tableau (pour un an) vers le nouveau tableau (pour deux ans), sans que j'intervienne pour ôter la protection.. -
Re,
B est verrouillée et la feuille est protégée non !
si c'est le cas déprotège ta feuille et active le code voir si le problème persiste
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir. -
Je sais pas comment savoir quel code est en erreur.
En fait, j'ai un tableau vierge au même format que mon tableau d'origine.
Lorsque je copie les données de la colonne A vers mon tableau vierge, ce message apparaît. Les données se copient malgré tout.
En revanche, vu que les données en B (les dates) sont vérouillées et que la page est protégée par un mot de passe, impossible de les copier coller..
C'est normal, mais y a-t-il un moyen de les copier coller quand même? -
Je ne sais pas comment savoir quel code est en erreur.
En fait, lorsque je copie colle mes données en A vers un tableau identique mais vierge, excel m'indique ça. Ms les données se collent quand même.
Par contre, vu que les données en B sont verrouillées, impossible de les copier coller.. -
Re,
erreur d'exécution 13 incompatibilité de type est provoqué par une erreur de déclaration de variable ou erreur de code.
quel code est en erreur et quelle ligne s'il te plait
-
J'ai une autre question svp.
J'aimerais pouvoir copier coller ce tableau dans un autre, vierge mais au même format. En effet, j'aimerais que mon premier tableau me donne les données pour une année (soit 365 données) puis copier coller ces données dans un nouveau tableau qui me donnera les données pour 2 ans (730 données)etc etc.
Copier les données en colonne A ne pose aucun problème mais excel m'indique alors : erreur d'exécution "13" : incompatibilité de type, puisque les données en B sont vérouillées en donc impossible à copier coller.
Y a-t-il une solution ou est ce que j'en demande trop?
Merci -
C'est parfait, c'est exactement ce qu'il me fallait, merci beaucoup!
-
Re,
si tu as collé ce code et modifié le mot de passe de protection, la date en B ne s'imprimera que si tu saisis une donnée en A et si la cellule contigue en B est vide, tu peux faire des essais
je remets le code avec la dernière modif
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
If Target = "" Or Target(1, 2) <> "" Then
Exit Sub
Else
ActiveSheet.Unprotect Password:="mot de passe"
Target(1, 2) = Date
ActiveSheet.Protect Password:="mot de passe"
End If
End If
End Sub
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir. -
Merci beaucoup Mike-31, ton code fonctionne également, en espérant que la date en B soit irremplaçable maintenant!
-
Une dernière question toutefois svp.
Si je remplis A1 aujourd'hui (30 juillet 2015), la date du jour est donc renseignée en B1 (30/07/15).
Parfait.
Mais si je modifie A1 dans un mois, B1 va-t-il s'actualiser et devenir 30/08/15 ou restera-t-il au 30/07/15 (ce que je souhaite)?
Merci -
Impeccable Vaucluse, ça fonctionne parfaitement!
Je vous remercie beaucoup pour votre aide et votre efficacité!
Bonne continuation,
Cordialement. -
ContributeurBonjour
Private Sub Worksheet_Change(ByVal Target As Range)
Activesheet.unprotect "xxx"
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Target.Offset(0, 1) = Date
End If
Activesheet.protect "xxx"
End Sub
xxx étant le mot de passe à placer entre guillemets
crdlmnt
-
En essayant de nouveau, j'ai obtenu le message : "erreur de compilation : instruction incorrecte à l'extérieur d'une procédure" ..
Merci encore de votre aide, je suis complètement perdu.. -
Désolé pour cette réponse tardive mais je n'avais plus accès à mon pc.
J'ai essayé ta solution Vaucluse mais ça ne donne rien..
En tant que noob, je ne sais pas si j'ai bien fait les choses, mais en tout cas je n'ai rien obtenu.. en rajoutant, Activesheet.unprotect etc etc, la date ne s'inscrit plus..
- 1
- 2