Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA 2010 Comment savoir (par le code) si la cellule active VIDE contient un format de date Quelconque

10 réponses
Avatar
Chris Col
Bonjour à tous,
Est-il possible par une méthode du genre:
Sub Worksheet_SelectionChange (ByVal Target As Range)
. . .
Target.NumberFormat=
. . .
de savoir si la cellule active VIDE contient un format de DATE quelconque.

Merci d'avance

Cc.

10 réponses

Avatar
michdenis
Bonjour,

Essaie ceci :

Le message s'affichera pour toutes les cellules vides ou non
ayant un format de cellule date.
'--------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If IsDate(Format(1, ActiveCell.NumberFormat)) Then
MsgBox "La cellule a un format date"
End If
End Sub
'--------------------------

Si tu veux faire la distinction pour les cellules vides seulement :
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveCell
If IsDate(Format(1, .NumberFormat)) And .Value = "" Then
MsgBox "Cellule vide avec un format date"
End If
End With
End Sub
'---------------------------

--
MichD
--------------------------------------------


"Chris Col" a écrit dans le message de groupe de discussion :
4c8c9160$0$10389$
Bonjour à tous,
Est-il possible par une méthode du genre:
Sub Worksheet_SelectionChange (ByVal Target As Range)
. . .
Target.NumberFormat . . .
de savoir si la cellule active VIDE contient un format de DATE quelconque.

Merci d'avance

Cc.
Avatar
Maude Este
Bonsour®

"Chris Col" a écrit
Je ne veux pas connaitre le format,
je voudrais juste savoir si c'est un format de date et ce, quel qu'il soit.



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim x As String
x = Evaluate("ÎLL(""format""," & Target.Address & ")")
MsgBox IIf(Left(x, 1) = "H" Or Left(x, 1) = "D", "format date-heure", "autre
format : " & x)
End Sub
Avatar
Chris Col
Encore merci mais certain formats de date ne sont pas reconnus.
Le format date longue par exemple ou encore celui-ci : "14-mars"
Je ne les ai pas tous essayés.
Cc.

"Maude Este" a écrit dans le message de groupe de
discussion : i6ih4v$bgh$
Bonsour®

"Chris Col" a écrit
Je ne veux pas connaitre le format,
je voudrais juste savoir si c'est un format de date et ce, quel qu'il
soit.



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim x As String
x = Evaluate("ÎLL(""format""," & Target.Address & ")")
MsgBox IIf(Left(x, 1) = "H" Or Left(x, 1) = "D", "format date-heure",
"autre format : " & x)
End Sub


Avatar
Chris Col
Salut et merci pour le coup de main,
Les dates longues ne sont pas reconnues et les très courtes genre "m" ou
"m-01" non plus

Cc.

"michdenis" a écrit dans le message de groupe de
discussion : i6ievh$4gl$
Bonjour,

Essaie ceci :

Le message s'affichera pour toutes les cellules vides ou non
ayant un format de cellule date.
'--------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If IsDate(Format(1, ActiveCell.NumberFormat)) Then
MsgBox "La cellule a un format date"
End If
End Sub
'--------------------------

Si tu veux faire la distinction pour les cellules vides seulement :
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveCell
If IsDate(Format(1, .NumberFormat)) And .Value = "" Then
MsgBox "Cellule vide avec un format date"
End If
End With
End Sub
'---------------------------

--
MichD
--------------------------------------------


"Chris Col" a écrit dans le message de groupe de
discussion :
4c8c9160$0$10389$
Bonjour à tous,
Est-il possible par une méthode du genre:
Sub Worksheet_SelectionChange (ByVal Target As Range)
. . .
Target.NumberFormat > . . .
de savoir si la cellule active VIDE contient un format de DATE quelconque.

Merci d'avance

Cc.

Avatar
michdenis
Dans la fonction, tu dois remplacer :

Application.ScreenUpdating = False
Application.ScreenUpdating = True

PAR :

Application.EnableEvents = False
Application.EnableEvents = True

--
MichD
--------------------------------------------


"michdenis" a écrit dans le message de groupe de discussion : i6inok$qhj$
La méthode suivante, utilise toujours la cellule IV65536
de la feuille courante dans la fonction. Tu peux la
remplacer par celle qui te convient le mieux, le cas échéant

Cette fonction devrait reconnaître tous les formats de date
même celle dans le genre : "la date est : "jjjj, j mmmm aaaa
(on parle toujours de format et non de contenu de la cellule.)

'------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

MsgBox EstFormatDate(ActiveCell)
Worksheets(Me.Name).UsedRange
End Sub

'Dans un module standard :
'------------------------------------
Function EstFormatDate(Rg As Range)
Application.ScreenUpdating = False
With Rg.Parent.Range("IV65536")
.NumberFormat = Rg.NumberFormat
.Value = 1
EstFormatDate = IsDate(.Item(1, 1))
.Clear
End With
Application.ScreenUpdating = True
End Function




--
MichD
--------------------------------------------


"Chris Col" a écrit dans le message de groupe de discussion :
4c8cd085$0$1830$
Salut et merci pour le coup de main,
Les dates longues ne sont pas reconnues et les très courtes genre "m" ou
"m-01" non plus

Cc.

"michdenis" a écrit dans le message de groupe de
discussion : i6ievh$4gl$
Bonjour,

Essaie ceci :

Le message s'affichera pour toutes les cellules vides ou non
ayant un format de cellule date.
'--------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If IsDate(Format(1, ActiveCell.NumberFormat)) Then
MsgBox "La cellule a un format date"
End If
End Sub
'--------------------------

Si tu veux faire la distinction pour les cellules vides seulement :
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveCell
If IsDate(Format(1, .NumberFormat)) And .Value = "" Then
MsgBox "Cellule vide avec un format date"
End If
End With
End Sub
'---------------------------

--
MichD
--------------------------------------------


"Chris Col" a écrit dans le message de groupe de
discussion :
4c8c9160$0$10389$
Bonjour à tous,
Est-il possible par une méthode du genre:
Sub Worksheet_SelectionChange (ByVal Target As Range)
. . .
Target.NumberFormat > . . .
de savoir si la cellule active VIDE contient un format de DATE quelconque.

Merci d'avance

Cc.

Avatar
Chris Col
Super ! Sans faute
Un grand merci.
PS. C'est quoi une MEFC ? et que veut dire (MPFE) ?

Cordial salut.
Cc.

"Jacquouille" a écrit dans le message de
groupe de discussion : 4c8ce4de$0$5279$
Bonjour Denis

Une MEFC ne conviendrait pas ?

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille (MPFE).

"michdenis" a écrit dans le message de news:
i6inok$qhj$
La méthode suivante, utilise toujours la cellule IV65536
de la feuille courante dans la fonction. Tu peux la
remplacer par celle qui te convient le mieux, le cas échéant

Cette fonction devrait reconnaître tous les formats de date
même celle dans le genre : "la date est : "jjjj, j mmmm aaaa
(on parle toujours de format et non de contenu de la cellule.)

'------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

MsgBox EstFormatDate(ActiveCell)
Worksheets(Me.Name).UsedRange
End Sub

'Dans un module standard :
'------------------------------------
Function EstFormatDate(Rg As Range)
Application.ScreenUpdating = False
With Rg.Parent.Range("IV65536")
.NumberFormat = Rg.NumberFormat
.Value = 1
EstFormatDate = IsDate(.Item(1, 1))
.Clear
End With
Application.ScreenUpdating = True
End Function




--
MichD
--------------------------------------------


"Chris Col" a écrit dans le message de groupe de
discussion :
4c8cd085$0$1830$
Salut et merci pour le coup de main,
Les dates longues ne sont pas reconnues et les très courtes genre "m" ou
"m-01" non plus

Cc.

"michdenis" a écrit dans le message de groupe de
discussion : i6ievh$4gl$
Bonjour,

Essaie ceci :

Le message s'affichera pour toutes les cellules vides ou non
ayant un format de cellule date.
'--------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If IsDate(Format(1, ActiveCell.NumberFormat)) Then
MsgBox "La cellule a un format date"
End If
End Sub
'--------------------------

Si tu veux faire la distinction pour les cellules vides seulement :
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveCell
If IsDate(Format(1, .NumberFormat)) And .Value = "" Then
MsgBox "Cellule vide avec un format date"
End If
End With
End Sub
'---------------------------

--
MichD
--------------------------------------------


"Chris Col" a écrit dans le message de groupe de
discussion :
4c8c9160$0$10389$
Bonjour à tous,
Est-il possible par une méthode du genre:
Sub Worksheet_SelectionChange (ByVal Target As Range)
. . .
Target.NumberFormat >>> . . .
de savoir si la cellule active VIDE contient un format de DATE
quelconque.

Merci d'avance

Cc.







Avatar
michdenis
| C'est quoi une MEFC ?
C'est l'abréviation pour "Mise en forme conditionnelle"

| et que veut dire (MPFE) ?
Abréviation que portait l'ancêtre de ce groupe de discussion :
Microsoft.Public.Français.Excel sur le protocol NTTP

--
MichD
--------------------------------------------


"Chris Col" a écrit dans le message de groupe de discussion :
4c8cece2$0$3700$
Super ! Sans faute
Un grand merci.
PS. C'est quoi une MEFC ? et que veut dire (MPFE) ?

Cordial salut.
Cc.

"Jacquouille" a écrit dans le message de
groupe de discussion : 4c8ce4de$0$5279$
Bonjour Denis

Une MEFC ne conviendrait pas ?

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille (MPFE).

"michdenis" a écrit dans le message de news:
i6inok$qhj$
La méthode suivante, utilise toujours la cellule IV65536
de la feuille courante dans la fonction. Tu peux la
remplacer par celle qui te convient le mieux, le cas échéant

Cette fonction devrait reconnaître tous les formats de date
même celle dans le genre : "la date est : "jjjj, j mmmm aaaa
(on parle toujours de format et non de contenu de la cellule.)

'------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

MsgBox EstFormatDate(ActiveCell)
Worksheets(Me.Name).UsedRange
End Sub

'Dans un module standard :
'------------------------------------
Function EstFormatDate(Rg As Range)
Application.ScreenUpdating = False
With Rg.Parent.Range("IV65536")
.NumberFormat = Rg.NumberFormat
.Value = 1
EstFormatDate = IsDate(.Item(1, 1))
.Clear
End With
Application.ScreenUpdating = True
End Function




--
MichD
--------------------------------------------


"Chris Col" a écrit dans le message de groupe de
discussion :
4c8cd085$0$1830$
Salut et merci pour le coup de main,
Les dates longues ne sont pas reconnues et les très courtes genre "m" ou
"m-01" non plus

Cc.

"michdenis" a écrit dans le message de groupe de
discussion : i6ievh$4gl$
Bonjour,

Essaie ceci :

Le message s'affichera pour toutes les cellules vides ou non
ayant un format de cellule date.
'--------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If IsDate(Format(1, ActiveCell.NumberFormat)) Then
MsgBox "La cellule a un format date"
End If
End Sub
'--------------------------

Si tu veux faire la distinction pour les cellules vides seulement :
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveCell
If IsDate(Format(1, .NumberFormat)) And .Value = "" Then
MsgBox "Cellule vide avec un format date"
End If
End With
End Sub
'---------------------------

--
MichD
--------------------------------------------


"Chris Col" a écrit dans le message de groupe de
discussion :
4c8c9160$0$10389$
Bonjour à tous,
Est-il possible par une méthode du genre:
Sub Worksheet_SelectionChange (ByVal Target As Range)
. . .
Target.NumberFormat >>> . . .
de savoir si la cellule active VIDE contient un format de DATE
quelconque.

Merci d'avance

Cc.







Avatar
michdenis
| Une MEFC ne conviendrait pas ?

Pas si le résultat doit être obtenu pour l'exécution d'une macro...
Comme je ne connais pas ce que l'auteur désire faire, je ne saurais dire!

--
MichD
--------------------------------------------


"Jacquouille" a écrit dans le message de groupe de discussion :
4c8ce4de$0$5279$
Bonjour Denis

Une MEFC ne conviendrait pas ?

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille (MPFE).

"michdenis" a écrit dans le message de news:
i6inok$qhj$
La méthode suivante, utilise toujours la cellule IV65536
de la feuille courante dans la fonction. Tu peux la
remplacer par celle qui te convient le mieux, le cas échéant

Cette fonction devrait reconnaître tous les formats de date
même celle dans le genre : "la date est : "jjjj, j mmmm aaaa
(on parle toujours de format et non de contenu de la cellule.)

'------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

MsgBox EstFormatDate(ActiveCell)
Worksheets(Me.Name).UsedRange
End Sub

'Dans un module standard :
'------------------------------------
Function EstFormatDate(Rg As Range)
Application.ScreenUpdating = False
With Rg.Parent.Range("IV65536")
.NumberFormat = Rg.NumberFormat
.Value = 1
EstFormatDate = IsDate(.Item(1, 1))
.Clear
End With
Application.ScreenUpdating = True
End Function




--
MichD
--------------------------------------------


"Chris Col" a écrit dans le message de groupe de
discussion :
4c8cd085$0$1830$
Salut et merci pour le coup de main,
Les dates longues ne sont pas reconnues et les très courtes genre "m" ou
"m-01" non plus

Cc.

"michdenis" a écrit dans le message de groupe de
discussion : i6ievh$4gl$
Bonjour,

Essaie ceci :

Le message s'affichera pour toutes les cellules vides ou non
ayant un format de cellule date.
'--------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If IsDate(Format(1, ActiveCell.NumberFormat)) Then
MsgBox "La cellule a un format date"
End If
End Sub
'--------------------------

Si tu veux faire la distinction pour les cellules vides seulement :
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveCell
If IsDate(Format(1, .NumberFormat)) And .Value = "" Then
MsgBox "Cellule vide avec un format date"
End If
End With
End Sub
'---------------------------

--
MichD
--------------------------------------------


"Chris Col" a écrit dans le message de groupe de
discussion :
4c8c9160$0$10389$
Bonjour à tous,
Est-il possible par une méthode du genre:
Sub Worksheet_SelectionChange (ByVal Target As Range)
. . .
Target.NumberFormat >> . . .
de savoir si la cellule active VIDE contient un format de DATE
quelconque.

Merci d'avance

Cc.

Avatar
Jacquouille
Ben voilà :

Bonjour à tous,
Est-il possible . . .
de savoir si la cellule active VIDE contient un format de DATE quelconque.

Merci d'avance


--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille (MPFE).

"michdenis" a écrit dans le message de news:
i6ismo$4hs$
| Une MEFC ne conviendrait pas ?

Pas si le résultat doit être obtenu pour l'exécution d'une macro...
Comme je ne connais pas ce que l'auteur désire faire, je ne saurais dire!

--
MichD
--------------------------------------------


"Jacquouille" a écrit dans le message de
groupe de discussion :
4c8ce4de$0$5279$
Bonjour Denis

Une MEFC ne conviendrait pas ?

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille (MPFE).

"michdenis" a écrit dans le message de news:
i6inok$qhj$
La méthode suivante, utilise toujours la cellule IV65536
de la feuille courante dans la fonction. Tu peux la
remplacer par celle qui te convient le mieux, le cas échéant

Cette fonction devrait reconnaître tous les formats de date
même celle dans le genre : "la date est : "jjjj, j mmmm aaaa
(on parle toujours de format et non de contenu de la cellule.)

'------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

MsgBox EstFormatDate(ActiveCell)
Worksheets(Me.Name).UsedRange
End Sub

'Dans un module standard :
'------------------------------------
Function EstFormatDate(Rg As Range)
Application.ScreenUpdating = False
With Rg.Parent.Range("IV65536")
.NumberFormat = Rg.NumberFormat
.Value = 1
EstFormatDate = IsDate(.Item(1, 1))
.Clear
End With
Application.ScreenUpdating = True
End Function




--
MichD
--------------------------------------------


"Chris Col" a écrit dans le message de groupe de
discussion :
4c8cd085$0$1830$
Salut et merci pour le coup de main,
Les dates longues ne sont pas reconnues et les très courtes genre "m" ou
"m-01" non plus

Cc.

"michdenis" a écrit dans le message de groupe de
discussion : i6ievh$4gl$
Bonjour,

Essaie ceci :

Le message s'affichera pour toutes les cellules vides ou non
ayant un format de cellule date.
'--------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If IsDate(Format(1, ActiveCell.NumberFormat)) Then
MsgBox "La cellule a un format date"
End If
End Sub
'--------------------------

Si tu veux faire la distinction pour les cellules vides seulement :
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveCell
If IsDate(Format(1, .NumberFormat)) And .Value = "" Then
MsgBox "Cellule vide avec un format date"
End If
End With
End Sub
'---------------------------

--
MichD
--------------------------------------------


"Chris Col" a écrit dans le message de groupe de
discussion :
4c8c9160$0$10389$
Bonjour à tous,
Est-il possible par une méthode du genre:
Sub Worksheet_SelectionChange (ByVal Target As Range)
. . .
Target.NumberFormat >>> . . .
de savoir si la cellule active VIDE contient un format de DATE
quelconque.

Merci d'avance

Cc.






Avatar
michdenis
Tu as déjà la réponse sur ce fil.
La fonction personnalisée que j'ai proposée y répond, quel que soit le contenu de la cellule.

--
MichD
--------------------------------------------


"Jacquouille" a écrit dans le message de groupe de discussion :
4c8d1e8b$0$5296$
Ben voilà :

Bonjour à tous,
Est-il possible . . .
de savoir si la cellule active VIDE contient un format de DATE quelconque.

Merci d'avance


--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille (MPFE).

"michdenis" a écrit dans le message de news:
i6ismo$4hs$
| Une MEFC ne conviendrait pas ?

Pas si le résultat doit être obtenu pour l'exécution d'une macro...
Comme je ne connais pas ce que l'auteur désire faire, je ne saurais dire!

--
MichD
--------------------------------------------


"Jacquouille" a écrit dans le message de
groupe de discussion :
4c8ce4de$0$5279$
Bonjour Denis

Une MEFC ne conviendrait pas ?

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille (MPFE).

"michdenis" a écrit dans le message de news:
i6inok$qhj$
La méthode suivante, utilise toujours la cellule IV65536
de la feuille courante dans la fonction. Tu peux la
remplacer par celle qui te convient le mieux, le cas échéant

Cette fonction devrait reconnaître tous les formats de date
même celle dans le genre : "la date est : "jjjj, j mmmm aaaa
(on parle toujours de format et non de contenu de la cellule.)

'------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

MsgBox EstFormatDate(ActiveCell)
Worksheets(Me.Name).UsedRange
End Sub

'Dans un module standard :
'------------------------------------
Function EstFormatDate(Rg As Range)
Application.ScreenUpdating = False
With Rg.Parent.Range("IV65536")
.NumberFormat = Rg.NumberFormat
.Value = 1
EstFormatDate = IsDate(.Item(1, 1))
.Clear
End With
Application.ScreenUpdating = True
End Function




--
MichD
--------------------------------------------


"Chris Col" a écrit dans le message de groupe de
discussion :
4c8cd085$0$1830$
Salut et merci pour le coup de main,
Les dates longues ne sont pas reconnues et les très courtes genre "m" ou
"m-01" non plus

Cc.

"michdenis" a écrit dans le message de groupe de
discussion : i6ievh$4gl$
Bonjour,

Essaie ceci :

Le message s'affichera pour toutes les cellules vides ou non
ayant un format de cellule date.
'--------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If IsDate(Format(1, ActiveCell.NumberFormat)) Then
MsgBox "La cellule a un format date"
End If
End Sub
'--------------------------

Si tu veux faire la distinction pour les cellules vides seulement :
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveCell
If IsDate(Format(1, .NumberFormat)) And .Value = "" Then
MsgBox "Cellule vide avec un format date"
End If
End With
End Sub
'---------------------------

--
MichD
--------------------------------------------


"Chris Col" a écrit dans le message de groupe de
discussion :
4c8c9160$0$10389$
Bonjour à tous,
Est-il possible par une méthode du genre:
Sub Worksheet_SelectionChange (ByVal Target As Range)
. . .
Target.NumberFormat >>> . . .
de savoir si la cellule active VIDE contient un format de DATE
quelconque.

Merci d'avance

Cc.