Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Bonjour à tous,
Je viens de tester l'IA qui soit disant est le top du top...
Ce que je demande à ce génie :
Une formule qui fait que lorsque je clique sur une cellule vide A1 se mette automatiquement la date d'aujourd'hui ( en fait je ne pensais même pas que cela soit possible), bref, elle sort la formule suivante:
=SI(ESTVIDE(A1),ESTVIDE(A2)),AUJOURD'HUI (),A2).
Qui ne fonctionne pas...
La formule à été recopiée à l'identique.
Une idée svp sur la correction à apporter.
D'avance merci
Bonsoir argyronet.
Merci pour votre explication.
Comme vous l'aurez probablement remarqué je ne suis pas très doué.
Et je mettais mis à rêver qu'il existait peut être ( une formule, méthode pas trop compliquée pour un tout, tout petit utilisateur d'excel)
qui permettait lorsque je clique dans une cellule vide m'aurait insérée et figée automatiquement la date "jour, mois, année" dans la cellule concernée et dans la cellule du dessous, le lendemain , ou 2,3 jours après aurait renouvelé la même chose.
Un peu du style que la formule =MAINTENANT(), sauf que pour celle ci la date change à chaque réouverture du classeur.
Bref j'étais parti dans un truc qui me dépasse .....
Cordialement.
Bonsoir argyronet.
Merci pour votre explication.
Comme vous l'aurez probablement remarqué je ne suis pas très doué.
Et je mettais mis à rêver qu'il existait peut être ( une formule, méthode pas trop compliquée pour un tout, tout petit utilisateur d'excel)
qui permettait lorsque je clique dans une cellule vide m'aurait insérée et figée automatiquement la date "jour, mois, année" dans la cellule concernée et dans la cellule du dessous, le lendemain , ou 2,3 jours après aurait renouvelé la même chose.
Un peu du style que la formule =MAINTENANT(), sauf que pour celle ci la date change à chaque réouverture du classeur.
Bref j'étais parti dans un truc qui me dépasse .....
Cordialement.
Si vous précisiez exactement quel est votre projet et souhaits, on est là pour vous aider à y parvenir mais Excel a ses limites tout de même.
Mettre une date figée en dessous d'une cellule est tout à fait faisable avec formule mais tout dépend où et comment est structuré votre classeur : objectif, ne pas écraser une formule existante.
Si vous précisiez exactement quel est votre projet et souhaits, on est là pour vous aider à y parvenir mais Excel a ses limites tout de même.
Mettre une date figée en dessous d'une cellule est tout à fait faisable avec formule mais tout dépend où et comment est structuré votre classeur : objectif, ne pas écraser une formule existante.
Pour créer une feuille pour une nouvelle année :
1- Dupliquer la feuille "Modèle",
2- Nommer l'onglet avec l'année désirée. ( /!\ OBLIGATOIRE !!! )
3- Changer la couleur de l'onglet.
4- Ajouter une ligne au tableau (*).
5- Changer la couleur de la ligne d'en-têtes.
/!\ Si La première ligne de données prend la couleur de la ligne d'en-têtes (par exemple si les étapes 4 et 5 sont interverties), sélectionner la partie données du tableau et choisir "Aucun remplissage" dans le format de remplissage des cellules.
(*) Pour ajouter une ligne au tableau :
- Si le tableau est vide, cliquer sous l'en-tête "Date".
- Si le tableau n'est pas vide :
- soit cliquer sous la dernière cellule de la colonne "Date" du tableau,
- soit sélectionner la dernière cellule de la dernière colonne du tableau et appuyer sur <Tab>.
Déjà, pour vous désespérer , oui, vous êtes tenu de passer par des macros.
D’ailleurs, votre classeur est au format xlsm et il y a des procédures dedans...
Concernant votre formule 2L, il suffit d'écrire :
Code:
=SI(ESTNUM(B324);2;"")
puisque votre format de cellule est subséquent au fait que la cellule est potentiellement nantie d'un nombre...
Sinon, pour la date auto, voici ce que je vous propose :
Dans un module, vous écrivez ou recopiez :
VB:
Option Explicit
Public Const DATE_TITRE As String = "DATE_TITRE" 'cellule nommée du titre de la date
Public Function AjouterProchaineDate(ByRef TexteAAfficher As Variant) As Boolean
Const MSG_WZ As String = "C'est le WE, on relève pas !"
Const MSG_INVALIDE As String = "Pas de date valide en "
Dim lngDerniereLigne As Long
Dim dtmDerniereDate As Date 'Date précédente
Dim dtmProchaineDate As Date 'Date suivante
Dim strDerniereDate As String 'Cellule précédente
Dim vntValeurCellule As Variant
Dim intJourSemaine As Integer
Dim blnOnAfficheLaDate As Boolean
Dim intEcartJours As Integer
With Application
.ScreenUpdating = False
'Décalage de jours
intEcartJours = 1
'On cherche la dernière cellule
lngDerniereLigne = Range(DATE_TITRE).End(xlDown).Row
'on vérifie que c'est une date
vntValeurCellule = Cells(lngDerniereLigne, Range(DATE_TITRE).Column).Value
On_Continu:
'S'il y a bien une date à la dernière ligne
If IsDate(vntValeurCellule) Then
dtmDerniereDate = CDate(vntValeurCellule)
dtmProchaineDate = dtmDerniereDate + intEcartJours
'Quel jour on est aijourd'hui
intJourSemaine = Weekday(dtmProchaineDate)
Select Case intJourSemaine
'Lundi à vendredi
Case 2 To 6
TexteAAfficher = dtmProchaineDate
blnOnAfficheLaDate = True
Case Else
'samedi/dimanche
TexteAAfficher = MSG_WZ
blnOnAfficheLaDate = False
End Select
Else
If vntValeurCellule = MSG_WZ Then
vntValeurCellule = Cells(lngDerniereLigne - intEcartJours, Range(DATE_TITRE).Column).Value
intEcartJours = intEcartJours + 1
GoTo On_Continu
Else
TexteAAfficher = MSG_INVALIDE & Cells(lngDerniereLigne, Range(DATE_TITRE).Column).Address(0, 0, xlA1)
blnOnAfficheLaDate = False
End If
End If
AjouterProchaineDate = blnOnAfficheLaDate
.ScreenUpdating = True
End With
End Function
Dans la classe VBA de la feuille cible, vous écrivez ou recopiez :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strTexteAAfficher As String
If Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then
'si c'est une selection multiple, on fait rien
Else
If IsEmpty(Target.Value) And IsEmpty(Target.Offset(-1, 0).Value) Then
'si on est ailleur dans la même colonne mais qu'il n'y a pas de date
Else
'sinon...
Select Case Target.Column
Case Range(DATE_TITRE).Column
'on vérifie qu'on clique bien dans la colonne des dates
If IsEmpty(Target.Value) Then
'si la cellule est vide
If AjouterProchaineDate(strTexteAAfficher) Then
If IsDate(strTexteAAfficher) Then
Target.Value = CDate(strTexteAAfficher)
End If
Else
Target.Value = strTexteAAfficher
End If
End If
Case Else
End Select
End If
End If
End Sub
Ensuite, votre formule en colonne C se complexifie un peu :
Je ne sais pas si ça répond à vos attentes mais il y aura sans doute des adaptations à faire en fonction de ce que vous souhaitez.
De ma vision des choses, il faudrait rendre générique le code de tel sorte à ce qu'il s'adapte à ni'importe quel feuille 2020...2030 mais ça peut complexifier grandement les choses si vous n'êtes pas prêt à coder.
Il est vrai que pour votre cas et vu la fréquence à laquelle vous remplissez le classeur, un simple : CTRL+; dans la cellule vide de la colonne B peut suffire...
Déjà, pour vous désespérer , oui, vous êtes tenu de passer par des macros.
D’ailleurs, votre classeur est au format xlsm et il y a des procédures dedans...
Concernant votre formule 2L, il suffit d'écrire :
Code:
=SI(ESTNUM(B324);2;"")
puisque votre format de cellule est subséquent au fait que la cellule est potentiellement nantie d'un nombre...
Sinon, pour la date auto, voici ce que je vous propose :
Dans un module, vous écrivez ou recopiez :
VB:
Option Explicit
Public Const DATE_TITRE As String = "DATE_TITRE" 'cellule nommée du titre de la date
Public Function AjouterProchaineDate(ByRef TexteAAfficher As Variant) As Boolean
Const MSG_WZ As String = "C'est le WE, on relève pas !"
Const MSG_INVALIDE As String = "Pas de date valide en "
Dim lngDerniereLigne As Long
Dim dtmDerniereDate As Date 'Date précédente
Dim dtmProchaineDate As Date 'Date suivante
Dim strDerniereDate As String 'Cellule précédente
Dim vntValeurCellule As Variant
Dim intJourSemaine As Integer
Dim blnOnAfficheLaDate As Boolean
Dim intEcartJours As Integer
With Application
.ScreenUpdating = False
'Décalage de jours
intEcartJours = 1
'On cherche la dernière cellule
lngDerniereLigne = Range(DATE_TITRE).End(xlDown).Row
'on vérifie que c'est une date
vntValeurCellule = Cells(lngDerniereLigne, Range(DATE_TITRE).Column).Value
On_Continu:
'S'il y a bien une date à la dernière ligne
If IsDate(vntValeurCellule) Then
dtmDerniereDate = CDate(vntValeurCellule)
dtmProchaineDate = dtmDerniereDate + intEcartJours
'Quel jour on est aijourd'hui
intJourSemaine = Weekday(dtmProchaineDate)
Select Case intJourSemaine
'Lundi à vendredi
Case 2 To 6
TexteAAfficher = dtmProchaineDate
blnOnAfficheLaDate = True
Case Else
'samedi/dimanche
TexteAAfficher = MSG_WZ
blnOnAfficheLaDate = False
End Select
Else
If vntValeurCellule = MSG_WZ Then
vntValeurCellule = Cells(lngDerniereLigne - intEcartJours, Range(DATE_TITRE).Column).Value
intEcartJours = intEcartJours + 1
GoTo On_Continu
Else
TexteAAfficher = MSG_INVALIDE & Cells(lngDerniereLigne, Range(DATE_TITRE).Column).Address(0, 0, xlA1)
blnOnAfficheLaDate = False
End If
End If
AjouterProchaineDate = blnOnAfficheLaDate
.ScreenUpdating = True
End With
End Function
Dans la classe VBA de la feuille cible, vous écrivez ou recopiez :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strTexteAAfficher As String
If Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then
'si c'est une selection multiple, on fait rien
Else
If IsEmpty(Target.Value) And IsEmpty(Target.Offset(-1, 0).Value) Then
'si on est ailleur dans la même colonne mais qu'il n'y a pas de date
Else
'sinon...
Select Case Target.Column
Case Range(DATE_TITRE).Column
'on vérifie qu'on clique bien dans la colonne des dates
If IsEmpty(Target.Value) Then
'si la cellule est vide
If AjouterProchaineDate(strTexteAAfficher) Then
If IsDate(strTexteAAfficher) Then
Target.Value = CDate(strTexteAAfficher)
End If
Else
Target.Value = strTexteAAfficher
End If
End If
Case Else
End Select
End If
End If
End Sub
Ensuite, votre formule en colonne C se complexifie un peu :
Je ne sais pas si ça répond à vos attentes mais il y aura sans doute des adaptations à faire en fonction de ce que vous souhaitez.
De ma vision des choses, il faudrait rendre générique le code de tel sorte à ce qu'il s'adapte à ni'importe quel feuille 2020...2030 mais ça peut complexifier grandement les choses si vous n'êtes pas prêt à coder.
Il est vrai que pour votre cas et vu la fréquence à laquelle vous remplissez le classeur, un simple : CTRL+; dans la cellule vide de la colonne B peut suffire...
Bonjour argironet.
Tout d'abord je tiens à m'excuser platement du retard de ma réponse.
Je vais recopier votre solution, si elle ne vient pas à trop me compliquer la vie, elle me conviendrait parfaitement.
Il n'empêche que je rends également note du raccourci qui est à première vu tout aussi simple pour moi .
Je vous remercie pour votre aide précieuse.
Bon dimanche.
Cordialement.
C'est bien.. le raccourci.. je te l'ai donné au #8
et en général, on note comme solution le post dans lequel il y a la solution. pas son propre post...
Dommage que Phoenix23 ne voit pas mes messages, sinon il aurait vu que dans ma proposition il n'y a pas besoin de raccourci et que grâce à l'utilisation de TS, tout s'adapte automatiquement (sauf les deux dernières feuilles) lors de l'ajout d'une nouvelle feuille.
L'avantage des forums est que l'on peut suggérer plusieurs solutions...
Libre au demandeur de choisir celle qui lui convient le mieux.
Si je suis le fil conducteur des 2 derniers messages (tristounets, j'avoue )...
- j'ajouterais que le CTRL+;n'est pas suffisant, il faut le greffer d'un CTRL+: précédé d'un espace pour avoir l'heure, élément qui est requis dans la cellule... Sinon, on obtient 0h00 et le calcul sera C est faux.
- les forums ne sont pas faits pour acclamer ou ovationner la foule ; si vous avez posté une solution que vous croyez meilleure que celle les autres, tant mieux ; c'est au demandeur de juger si elle lui convient.
bonjour @argyronet
merci pour tes leçons de morale après 4 messages sur ce forum...
proposer une solution qui a déjà été donnée quelques posts plus haut, n'en fait pas une nouvelle solution..
le problème ici est que le demandeur ne lit (voit) pas tous les messages
c'est le risque d'un forum, on peut vite être noyé par toutes les réponses..
dans mon message que tu trouves "tristounet", je ne lui demandais pas de noter MA solution (j'en ai un peu rien à faire), juste de ne pas noter SON post comme solution.. parce qu'un autre utilisateur ayant le meme problème sera amené à cliquer directement sur la solution.. et.. il ne trouverait rien..
De ma vision des choses, il faudrait rendre générique le code de tel sorte à ce qu'il s'adapte à ni'importe quel feuille 2020...2030 mais ça peut complexifier grandement les choses si vous n'êtes pas prêt à coder.
Merci pour vos retours respectifs ; je ne fais la morale à personne ; j'ai passé l'âge.
#27 Je connais Excel depuis sa naissance et tous les raccourcis clavier. Je n'ai fait qu'appuyer votre suggestion initiale sans m'en accaparer puisque c’était la conclusion de mon dernier post.
Sans doute aurais-je dû ajouter : « ainsi que suggéré parvgendron »...
#28 Et effectivement, je suppose que le demandeur n'a pas vu toutes les réponses, après coup.
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.