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);)

@+

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

capture ecran

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

Rechercher des sujets similaires à "date automatique"