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

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #22562691
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" 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.
Maude Este
Le #22562701
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
Chris Col
Le #22562731
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" 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


Chris Col
Le #22562951
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" 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" 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.

michdenis
Le #22562941
Dans la fonction, tu dois remplacer :

Application.ScreenUpdating = False
Application.ScreenUpdating = True

PAR :

Application.EnableEvents = False
Application.EnableEvents = True

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


"michdenis" 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" 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" 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" 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.

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

Cordial salut.
Cc.

"Jacquouille" 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" 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" 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" 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" 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.







michdenis
Le #22563191
| 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" 4c8cece2$0$3700$
Super ! Sans faute
Un grand merci.
PS. C'est quoi une MEFC ? et que veut dire (MPFE) ?

Cordial salut.
Cc.

"Jacquouille" 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" 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" 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" 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" 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.







michdenis
Le #22563171
| 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" 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" 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" 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" 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" 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.

Jacquouille
Le #22563581
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" 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" 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" 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" 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" 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" 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.






michdenis
Le #22563641
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" 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" 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" 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" 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" 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" 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" 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.






Publicité
Poster une réponse
Anonyme