OVH Cloud OVH Cloud

Format d'une cellule

5 réponses
Avatar
lucno
Bonjour,
Dans une colonne, je souhaite saisir des dates, mais sans les séparateurs
"/", (de façon à saisir plus rapidement) parcontre je voudrais qu'ils
apparaissent lorsque je quitte la cellule et qu'excel considère la cellule
comme un format date, car après je réalise des calculs.
Si quelqu'un peut m'aider

Merci d'avance
Luc

5 réponses

Avatar
Pounet95
Bonsoir,
Sur le site dans ma signature, tu effectue une recherche avec saisie date
et tu devrais y trouver ton bonheur ( astuce 596 de Flo Cabon )

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"lucno" a écrit dans le message de news:

Bonjour,
Dans une colonne, je souhaite saisir des dates, mais sans les séparateurs
"/", (de façon à saisir plus rapidement) parcontre je voudrais qu'ils
apparaissent lorsque je quitte la cellule et qu'excel considère la cellule
comme un format date, car après je réalise des calculs.
Si quelqu'un peut m'aider

Merci d'avance
Luc


Avatar
lucno
Merci,
J'ai trouvé mon bonheur, mais je souhaite définir plusieurs plages or cela
ne fonctionne plus. Je ne comprend pas tout ce qui est ecrit dans la
procedure, mais j'ai essayé de bidouiller. Sans succès
Peux-tu m'éclairer

Merci d'avance
'***********************
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim DateStr As String

On Error GoTo EndMacro
'************************
' je souhaite que l'evenement se déclenche dans ces deux plages, quand je
rajoute le 'or ....' ça ne fonctionne plus. Il me donne le message d'erreur
de la fin de la procedure.
'************************
If Application.Intersect(Target, Range("a20:b1000")) Or
Application.Intersect(Target, Range("h20:m1000")) Is Nothing Then
Exit Sub
End If
If Target.Cells.Count > 1 Then
Exit Sub
End If
If Target.Value = "" Then
Exit Sub
End If

Application.EnableEvents = False
With Target
If .HasFormula = False Then
Select Case Len(.Formula)
Case 4 ' e.g., 9298 = 2-Sep-1998
DateStr = Left(.Formula, 1) & "/" & _
Mid(.Formula, 2, 1) & "/" & Right(.Formula, 2)
Case 5 ' e.g., 11298 = 12-Jan-1998 NOT 2-Nov-1998
DateStr = Left(.Formula, 1) & "/" & _
Mid(.Formula, 2, 2) & "/" & Right(.Formula, 2)
Case 6 ' e.g., 090298 = 2-Sep-1998
DateStr = Left(.Formula, 2) & "/" & _
Mid(.Formula, 3, 2) & "/" & Right(.Formula, 2)
Case 7 ' e.g., 1231998 = 23-Jan-1998 NOT 3-Dec-1998
DateStr = Left(.Formula, 1) & "/" & _
Mid(.Formula, 2, 2) & "/" & Right(.Formula, 4)
Case 8 ' e.g., 09021998 = 2-Sep-1998
DateStr = Left(.Formula, 2) & "/" & _
Mid(.Formula, 3, 2) & "/" & Right(.Formula, 4)
Case Else
Err.Raise 0
End Select
.Formula = DateValue(DateStr)
End If

End With
Application.EnableEvents = True
Exit Sub
EndMacro:
MsgBox "Vous devez saisir une date valide même sans séparateur."
Application.EnableEvents = True
End Sub


Bonsoir,
Sur le site dans ma signature, tu effectue une recherche avec saisie date
et tu devrais y trouver ton bonheur ( astuce 596 de Flo Cabon )

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"lucno" a écrit dans le message de news:

Bonjour,
Dans une colonne, je souhaite saisir des dates, mais sans les séparateurs
"/", (de façon à saisir plus rapidement) parcontre je voudrais qu'ils
apparaissent lorsque je quitte la cellule et qu'excel considère la cellule
comme un format date, car après je réalise des calculs.
Si quelqu'un peut m'aider

Merci d'avance
Luc






Avatar
Pounet95
Bonjour,
En fait c'est au début de la procédure que tu t'es planté.
Il faut écrire ceci : ( remet les bonnes plages de cellules )


If Not Intersect(Target, Range("a1:b10")) _
And Not Intersect(Target, Range("c1:d10")) Is Nothing Then
Exit Sub
End If

... qui veut dire que l'intersection entre la plage A1:B10 ET l'intersection
avec la plage C1:C10
n'est pas réalisée ---> en dehors donc, et on sort

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"lucno" a écrit dans le message de news:

Merci,
J'ai trouvé mon bonheur, mais je souhaite définir plusieurs plages or cela
ne fonctionne plus. Je ne comprend pas tout ce qui est ecrit dans la
procedure, mais j'ai essayé de bidouiller. Sans succès
Peux-tu m'éclairer

Merci d'avance
'***********************
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim DateStr As String

On Error GoTo EndMacro
'************************
' je souhaite que l'evenement se déclenche dans ces deux plages, quand je
rajoute le 'or ....' ça ne fonctionne plus. Il me donne le message
d'erreur
de la fin de la procedure.
'************************
If Application.Intersect(Target, Range("a20:b1000")) Or
Application.Intersect(Target, Range("h20:m1000")) Is Nothing Then
Exit Sub
End If
If Target.Cells.Count > 1 Then
Exit Sub
End If
If Target.Value = "" Then
Exit Sub
End If

Application.EnableEvents = False
With Target
If .HasFormula = False Then
Select Case Len(.Formula)
Case 4 ' e.g., 9298 = 2-Sep-1998
DateStr = Left(.Formula, 1) & "/" & _
Mid(.Formula, 2, 1) & "/" & Right(.Formula, 2)
Case 5 ' e.g., 11298 = 12-Jan-1998 NOT 2-Nov-1998
DateStr = Left(.Formula, 1) & "/" & _
Mid(.Formula, 2, 2) & "/" & Right(.Formula, 2)
Case 6 ' e.g., 090298 = 2-Sep-1998
DateStr = Left(.Formula, 2) & "/" & _
Mid(.Formula, 3, 2) & "/" & Right(.Formula, 2)
Case 7 ' e.g., 1231998 = 23-Jan-1998 NOT 3-Dec-1998
DateStr = Left(.Formula, 1) & "/" & _
Mid(.Formula, 2, 2) & "/" & Right(.Formula, 4)
Case 8 ' e.g., 09021998 = 2-Sep-1998
DateStr = Left(.Formula, 2) & "/" & _
Mid(.Formula, 3, 2) & "/" & Right(.Formula, 4)
Case Else
Err.Raise 0
End Select
.Formula = DateValue(DateStr)
End If

End With
Application.EnableEvents = True
Exit Sub
EndMacro:
MsgBox "Vous devez saisir une date valide même sans séparateur."
Application.EnableEvents = True
End Sub


Bonsoir,
Sur le site dans ma signature, tu effectue une recherche avec saisie date
et tu devrais y trouver ton bonheur ( astuce 596 de Flo Cabon )

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"lucno" a écrit dans le message de
news:

Bonjour,
Dans une colonne, je souhaite saisir des dates, mais sans les
séparateurs
"/", (de façon à saisir plus rapidement) parcontre je voudrais qu'ils
apparaissent lorsque je quitte la cellule et qu'excel considère la
cellule
comme un format date, car après je réalise des calculs.
Si quelqu'un peut m'aider

Merci d'avance
Luc








Avatar
lucno
Bonsoir

Hélas, ta proposition ne semble pas fonctionner !!!

Par contre cette condition fonctionne très bien seule:
If Application.Intersect(Target, Range("a1:b10")) Is Nothing Then
Exit Sub
End If

Là il fait exactement ce que je veux
C'est lorsque je veux ajouter une autre plage (de la colonne H1 à M10) dans
la même condition, que ça ne plus marcher. Snif !




Bonjour,
En fait c'est au début de la procédure que tu t'es planté.
Il faut écrire ceci : ( remet les bonnes plages de cellules )


If Not Intersect(Target, Range("a1:b10")) _
And Not Intersect(Target, Range("c1:d10")) Is Nothing Then
Exit Sub
End If

.... qui veut dire que l'intersection entre la plage A1:B10 ET l'intersection
avec la plage C1:C10
n'est pas réalisée ---> en dehors donc, et on sort

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"lucno" a écrit dans le message de news:

Merci,
J'ai trouvé mon bonheur, mais je souhaite définir plusieurs plages or cela
ne fonctionne plus. Je ne comprend pas tout ce qui est ecrit dans la
procedure, mais j'ai essayé de bidouiller. Sans succès
Peux-tu m'éclairer

Merci d'avance
'***********************
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim DateStr As String

On Error GoTo EndMacro
'************************
' je souhaite que l'evenement se déclenche dans ces deux plages, quand je
rajoute le 'or ....' ça ne fonctionne plus. Il me donne le message
d'erreur
de la fin de la procedure.
'************************
If Application.Intersect(Target, Range("a20:b1000")) Or
Application.Intersect(Target, Range("h20:m1000")) Is Nothing Then
Exit Sub
End If
If Target.Cells.Count > 1 Then
Exit Sub
End If
If Target.Value = "" Then
Exit Sub
End If

Application.EnableEvents = False
With Target
If .HasFormula = False Then
Select Case Len(.Formula)
Case 4 ' e.g., 9298 = 2-Sep-1998
DateStr = Left(.Formula, 1) & "/" & _
Mid(.Formula, 2, 1) & "/" & Right(.Formula, 2)
Case 5 ' e.g., 11298 = 12-Jan-1998 NOT 2-Nov-1998
DateStr = Left(.Formula, 1) & "/" & _
Mid(.Formula, 2, 2) & "/" & Right(.Formula, 2)
Case 6 ' e.g., 090298 = 2-Sep-1998
DateStr = Left(.Formula, 2) & "/" & _
Mid(.Formula, 3, 2) & "/" & Right(.Formula, 2)
Case 7 ' e.g., 1231998 = 23-Jan-1998 NOT 3-Dec-1998
DateStr = Left(.Formula, 1) & "/" & _
Mid(.Formula, 2, 2) & "/" & Right(.Formula, 4)
Case 8 ' e.g., 09021998 = 2-Sep-1998
DateStr = Left(.Formula, 2) & "/" & _
Mid(.Formula, 3, 2) & "/" & Right(.Formula, 4)
Case Else
Err.Raise 0
End Select
.Formula = DateValue(DateStr)
End If

End With
Application.EnableEvents = True
Exit Sub
EndMacro:
MsgBox "Vous devez saisir une date valide même sans séparateur."
Application.EnableEvents = True
End Sub


Bonsoir,
Sur le site dans ma signature, tu effectue une recherche avec saisie date
et tu devrais y trouver ton bonheur ( astuce 596 de Flo Cabon )

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"lucno" a écrit dans le message de
news:

Bonjour,
Dans une colonne, je souhaite saisir des dates, mais sans les
séparateurs
"/", (de façon à saisir plus rapidement) parcontre je voudrais qu'ils
apparaissent lorsque je quitte la cellule et qu'excel considère la
cellule
comme un format date, car après je réalise des calculs.
Si quelqu'un peut m'aider

Merci d'avance
Luc












Avatar
lucno
Merci, ça marche


Bonjour,
Et comme ça est-ce mieux ?

If Intersect(Target, Range("a1:b10")) Is Nothing And Intersect(Target,
Range("c1:d10")) Is Nothing Then
MsgBox "A côté de la plage !"
Else
MsgBox "Dans la plage"
End If


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"lucno" a écrit dans le message de news:

Bonsoir

Hélas, ta proposition ne semble pas fonctionner !!!

Par contre cette condition fonctionne très bien seule:
If Application.Intersect(Target, Range("a1:b10")) Is Nothing Then
Exit Sub
End If

Là il fait exactement ce que je veux
C'est lorsque je veux ajouter une autre plage (de la colonne H1 à M10)
dans
la même condition, que ça ne plus marcher. Snif !




Bonjour,
En fait c'est au début de la procédure que tu t'es planté.
Il faut écrire ceci : ( remet les bonnes plages de cellules )


If Not Intersect(Target, Range("a1:b10")) _
And Not Intersect(Target, Range("c1:d10")) Is Nothing Then
Exit Sub
End If

.... qui veut dire que l'intersection entre la plage A1:B10 ET
l'intersection
avec la plage C1:C10
n'est pas réalisée ---> en dehors donc, et on sort

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"lucno" a écrit dans le message de
news:

Merci,
J'ai trouvé mon bonheur, mais je souhaite définir plusieurs plages or
cela
ne fonctionne plus. Je ne comprend pas tout ce qui est ecrit dans la
procedure, mais j'ai essayé de bidouiller. Sans succès
Peux-tu m'éclairer

Merci d'avance
'***********************
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim DateStr As String

On Error GoTo EndMacro
'************************
' je souhaite que l'evenement se déclenche dans ces deux plages, quand
je
rajoute le 'or ....' ça ne fonctionne plus. Il me donne le message
d'erreur
de la fin de la procedure.
'************************
If Application.Intersect(Target, Range("a20:b1000")) Or
Application.Intersect(Target, Range("h20:m1000")) Is Nothing Then
Exit Sub
End If
If Target.Cells.Count > 1 Then
Exit Sub
End If
If Target.Value = "" Then
Exit Sub
End If

Application.EnableEvents = False
With Target
If .HasFormula = False Then
Select Case Len(.Formula)
Case 4 ' e.g., 9298 = 2-Sep-1998
DateStr = Left(.Formula, 1) & "/" & _
Mid(.Formula, 2, 1) & "/" & Right(.Formula, 2)
Case 5 ' e.g., 11298 = 12-Jan-1998 NOT 2-Nov-1998
DateStr = Left(.Formula, 1) & "/" & _
Mid(.Formula, 2, 2) & "/" & Right(.Formula, 2)
Case 6 ' e.g., 090298 = 2-Sep-1998
DateStr = Left(.Formula, 2) & "/" & _
Mid(.Formula, 3, 2) & "/" & Right(.Formula, 2)
Case 7 ' e.g., 1231998 = 23-Jan-1998 NOT 3-Dec-1998
DateStr = Left(.Formula, 1) & "/" & _
Mid(.Formula, 2, 2) & "/" & Right(.Formula, 4)
Case 8 ' e.g., 09021998 = 2-Sep-1998
DateStr = Left(.Formula, 2) & "/" & _
Mid(.Formula, 3, 2) & "/" & Right(.Formula, 4)
Case Else
Err.Raise 0
End Select
.Formula = DateValue(DateStr)
End If

End With
Application.EnableEvents = True
Exit Sub
EndMacro:
MsgBox "Vous devez saisir une date valide même sans séparateur."
Application.EnableEvents = True
End Sub


Bonsoir,
Sur le site dans ma signature, tu effectue une recherche avec saisie
date
et tu devrais y trouver ton bonheur ( astuce 596 de Flo Cabon )

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"lucno" a écrit dans le message de
news:

Bonjour,
Dans une colonne, je souhaite saisir des dates, mais sans les
séparateurs
"/", (de façon à saisir plus rapidement) parcontre je voudrais
qu'ils
apparaissent lorsque je quitte la cellule et qu'excel considère la
cellule
comme un format date, car après je réalise des calculs.
Si quelqu'un peut m'aider

Merci d'avance
Luc