Date automatique
Bonjour à tous,
Petite question technique sur Excel : Est-ce qu'il est possible en saisissant une suite de chiffre que cela se transforme en date ?
Par exemple, je saisi : 03072024 et cela devient 03/07/2024 ?
D'avance, merci pour vos réponses, bien cordialement, Chti59xcel
Hello,
Yes avec cette formule
=DATE(DROITE(tachaine;4);GAUCHE(DROITE(tachaine;6);2);GAUCHE(tachaine;2);)
@+
- Messages
- 864
- Excel
- 2007 FR
- Inscrit
- 17/12/2018
- Emploi
- Technicien maintenance robot Retraité
Bonjour,
Avec un code VBA sous le coude
Private Sub Worksheet_Change(ByVal Target As Range)
'---Convertit un nombre de 5 ou 8 chiffres en date---
Dim d As Variant
If Not (Intersect(Range("A1:C30"), Target) Is Nothing) And Not Target.Value2 Like "*/*" And Target.Count = 1 Then
d = CStr(Target.Value2)
'ActiveSheet.Unprotect "123"
If IsNumeric(d) Then
Select Case True
Case Len(CStr(d)) = 5: d = DateValue(Format(d, "0/00/00"))
Case Len(CStr(d)) = 6: d = DateValue(Format(d, "00/00/00"))
Case Len(CStr(d)) = 7: d = DateValue(Format(d, "0/00/0000"))
Case Len(CStr(d)) = 8: d = DateValue(Format(d, "00/00/0000"))
End Select
With Target
If IsDate(d) Then
Application.EnableEvents = False
.NumberFormat = "dd/mm/yyyy": .Value = d
Else
.NumberFormat = "General": .Value = d
End If
'ActiveSheet.Protect "123"
End With
End If
End If
Application.EnableEvents = True
End Sub
Slts
Oui bonjour, bonjour,
Milles excuses pour cet oubli, j'avais la tête dans le guidon, mais ce n'est pas une excuse, désolé.
Merci à tous pour vos interventions, je vais tester, bien cordialement, Chti59xcel
Re bonjour,
Je viens de tester la macro dans mon classeur, et quand la protection de la feuille est activée, la macro ne fonctionne pas, elle plante malheureusement.
Par contre, si je désactive la protection, ça fonctionne.
Est-ce qu'il serait possible d'adapter la macro s'il vous plait pour qu'elle puisse fonctionner malgré la protection de la feuille.
Bien cordialement, Chti59xcel
Bonjour,
Je remarque que boss_68 avait mis de côté les lignes de code qui enlèvent et remet la protection
ce sont ces 2 lignes :
'ActiveSheet.Unprotect "123"
'ActiveSheet.Protect "123"
par contre si le mot de passe n'est pas 123 il faut modifier (ou enlever "123")
Bonjour User_925, le fil, le forum,
Je suis désolé que le souci soit revenu.
Voici une version qui devrait corriger cela.
C'est une modification du code Sub protection() pour exclure la feuille concernée.
Sub protection()
For i = 1 To Sheets.Count
If Sheets(i).Name = "Tempo" Then
On Error Resume Next
Sheets(i).Unprotect "avbfdid59"
on Error goto 0
Else
Sheets(i).Protect "avbfdid59", UserInterfaceOnly:=True, DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingColumns:=True, AllowSorting:=True, AllowFiltering:=True
End If
Next i
End Sub
Bizz
Bonjour,
Merci ce nouveau retour. J'ai installé ton correctif dans le Module Sub protection()
De plus, j'ai installé une nouvelle macro suite à une demande dans la feuille "Centre_Animation_Jeunesse" pour la gestion des dates, mais ça bug ?
Par exemple si tu essayes de rentrer directement 030724 pour obtenir 03/07/2024, il y a plantage, mais je ne sais pas pourquoi. J'ai eu une information au niveau de 'ActiveSheet.Unprotect "123" et 'ActiveSheet.Protect "123", mais je ne sais pas gérer
Merci pour ton aide, cordialement, Chti59xcel
Bonjour User_925, le fil, le forum,
La date en colonne "B" de la feuille "Centre_Animation_Jeunesse" est corrigée. C'est adapté pour toutes les feuilles qui ont le mot "Sommaire" dans la cellule "B4".
Voir dans "ThisWorkBook".
J'ai changé l'adresse de la liste déroulante en "C7:C56" sur toutes les feuilles concernées, c'est maintenant "=LaListeValidation"
Il reste un peu de boulot pour que tout fonctionne sur toutes les feuilles concernées. Mais c'est bien avancé.
Je te laisse tester.
Bizz
Bonjour User_925, le fil, le forum,
Il manque beaucoup de formules dans la feuille "Budget_Général" aux colonnes "Total budgété N".
Quand ce sera complété, le fichier sera passablement opérationnel.
Les "dates" de la colonne "B" semble fonctionner partout.
Les listes de validation fonctionnent s'il y a les formules dans "Budget_Géréal" et des montants dans colonnes "BP consolidé".
Bizz
Bonjour Bizz,
Un grand grand merci pour ce super boulot. J'ai remis l'ensemble des informations dans la feuille "Budget Général" au niveau des colonnes "Total budgété N" et des colonnes "BP consolidé", j'ai testé et ça fonctionne impeccable.
Je dois ajouter de nouvelles feuilles pour terminer la saisie de mon Budget en Fonctionnement. Ensuite, je devrais voir comment je m'organise pour mes Investissements.
Petite question pour me permettre de mieux comprendre tes interventions sur les macros. Notamment, concernant cette macro ci-dessous. Tu l'as place à la fois dans la feuille "ThisWorbook" et à la fois dans le Module2 ?
Private Sub Worksheet_Change(ByVal Target As Range)
'---Convertit un nombre de 5 ou 8 chiffres en date---
Dim d As Variant
If Not (Intersect(Range("B7:B56"), Target) Is Nothing) And Not Target.Value2 Like "*/*" And Target.Count = 1 Then
d = CStr(Target.Value2)
'ActiveSheet.Unprotect "123"
If IsNumeric(d) Then
Select Case True
Case Len(CStr(d)) = 5: d = DateValue(Format(d, "0/00/00"))
Case Len(CStr(d)) = 6: d = DateValue(Format(d, "00/00/00"))
Case Len(CStr(d)) = 7: d = DateValue(Format(d, "0/00/0000"))
Case Len(CStr(d)) = 8: d = DateValue(Format(d, "00/00/0000"))
End Select
With Target
If IsDate(d) Then
Application.EnableEvents = False
.Value = Format(d, "dd/mm/yyyy")
.Value = d
Else
.NumberFormat = "General": .Value = d
End If
'ActiveSheet.Protect "123"
End With
End If
End If
Application.EnableEvents = True
End Sub
Je te tiens informé pour la suite de l'évolution du classeur, je te souhaite une bonne journée, bien cordialement, Chti59xcel
Bonjour User_925, le fil, le forum,
Désolé d'avoir oublié de supprimer celle dans le "Module2" et dans la feuille "Centre_Animation_Jeunesse".
La macro a été copiée dans le module2 pour conserver une copie le temps de créer celle dans ("ThisWorkbook").
Celle dans "ThisWorkbook" opère sur toutes les feuilles. Afin de discriminer quelques feuilles qui n'ont pas rapport à ce code, j'ai ajouté la condition If Sh.Range("B4").Value = "Sommaire" Then car "Sommaire" en B4 est présent sur toutes les feuilles concernées.
La macro du "module2", mets là en commentaire ou supprime là.
Bizz