Date et VBA

Résolu
Bonsoir à tous,
Je suis en train d'écrire un programme sous VBA. J'ai réussi à créer ce dont j'avais besoin pour l'instant mais j'ai un problème avec la date...En effet quand je veux qu'elle soit sous le format "Jeudi 16 octobre 2014", il m'affiche 16/10/2014, je sollicite votre aide car j'ai cherché, faits des essais mais cela ne marche pas :( .

Je vous mets le lien du fichier : http://www.cjoint.com/c/GEztaIeFxdC

Merci de votre aide & bonne soirée

--
Macij

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    bonsoir, suggestion:
    Option Explicit
    Private Sub Auto_Open()
    Dim Datejour As String
    Dim jourdate As Date
    'SŽlectionner la case
        Range("N1:S1").Select
    ' Ajouter la date
        Datejour = InputBox("Date dŽbut souhaitŽe", "Date")
        If IsDate(Datejour) Then
            jourdate = Datejour
        Else
            jourdate = 0
        End If
        Range("N1:S1") = jourdate
    'Voir sur un forum pour le pb de date
    
    Selection.NumberFormat = "[$-F800]jjjj, mmmm jj, aaaa"
    
    'Pour enregistrer, faire une nouvelle macro
    
    End Sub
    
    1. Contributeur
      Bonjour,

      Il me semble que ton code fonctionne mais
      - il faudrait vérifier que la saisie est bien une date (isdate)
      - utiliser Cdate pour valoriser ta cellule sinon le 5/12 se transforme en 12/5
      C'est bien NumberFormat qui met le format souhaité.
      1. Bonsoir

        Private Sub Auto_Open()
        Dim Datejour As String
        ' Ajouter la date
        Datejour = InputBox("Date dŽbut souhaitŽe", "Date", "mois/jour/année")
        Range("N1") = Datejour
        'Voir sur un forum pour le pb de date
        Range("N1").NumberFormat = "dd mmmm yyyy"
        End Sub

        dans l'inputbox saisir le mois/le jour/l'année
        1. J'ai encore besoin de votre aide...j'essaie d'ajouter un jour supplémentaire mais je n'arrive pas...malgré les recherches...des essais avec la fonction dateadd . Quand j'ai rentré la fonction après avoir programmé la duplication de la feuille, celui-ci laisse la case vide après le lancement de la macro.

          Merci encore pour votre aide & bonne soirée

          P.S Voici l'adresse du lien : http://www.cjoint.com/c/GEAuMyD4Ejj
          1. Contributeur
            pas certain d'avoir compris ce que tu veux faire.
            à tout hasard:
            Option Explicit
            Private Sub Auto_Open()
            Dim Datejour As String
            Dim jourdate As Date
            'SŽlectionner la case
                Range("N1:S1").Select
            ' Ajouter la date
                Datejour = InputBox("Date dŽbut souhaitŽe", "Date")
                If IsDate(Datejour) Then
                    jourdate = Datejour
                    jourdate = jourdate + 1
                Else
                    jourdate = 0
                End If
                Range("N1:S1") = jourdate
            'Voir sur un forum pour le pb de date
            
            Selection.NumberFormat = "[$-F800]jjjj, mmmm jj, aaaa"
            
            'Pour enregistrer, faire une nouvelle macro
            
            End Sub
          2. @yg_beCe que j'aimerais faire c'est que vba puisse ajouter une copie de la dernière feuille tout en ajoutant un jour supplémentaire. Exemple : 1ère feuille 1/01/2017...2ème feuille 2/01/2017...
            Je mets ce que je fais qui est le même que sur le dernier lien :

            Private Sub Auto_Open()
            Dim Datejour As String
            Dim jourdate As Date
            Dim nouvelled
            'Sélectionner la case
            Range("N1:S1").Select
            ' Ajouter la date
            Datejour = InputBox("Date début souhaitée", "Date")
            If IsDate(Datejour) Then
            jourdate = Datejour
            Else
            jourdate = 0
            End If
            Range("N1:S1") = jourdate
            Sheets("Vierge").Select
            Sheets("Vierge").Copy After:=Sheets(1)
            Sheets("Vierge (2)").Select
            Sheets("Vierge (2)").Name = "1"
            'Additionner la date
            Range("N1:S1").Clear
            Range("N1:S1").Select
            Datejour = DateAdd("d", 1, jourdate)
            'Mise en page de la cellule avec la date
            Range("N1:S1").Select
            With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .ShrinkToFit = False
            .MergeCells = False
            End With
            Selection.Merge
            With Selection.Font
            .Name = "Papyrus"
            .Size = 40
            .StrikeThrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .Color = -16764007
            .TintAndShade = 0
            .ThemeFont = xlThemeFontNone
            End With
            With Selection.Font
            .Color = -16764007
            .TintAndShade = 0
            Selection.Font.Bold = True
            End With

            End Sub

            ----------------------
            Merci & bon après-midi

            M
          3. Contributeur
            suggestion:
            au lieu de
            Datejour = DateAdd("d", 1, jourdate) 

            essaie
            Range("N1:S1") = jourdate+1
          4. @yg_beça marche, je te remercie :)
            j'ai une dernière question. J'essaie de dupliquer le nombre de colonnes pour qu'ils correspondent aux jours d'un mois. j'ai réussi à trouver la formule qui permet de dupliquer mais elle duplique juste sans ajouter de jours en plus (je suppose qu'il existe une formule exprès dont j'ignore le code...) et existe-il une formule qui permet de mettre un nom à la suite (j'ai bien réussi à renommer la 2ème page mais le reste s'appelle Position 1, Position 2)...pour que ce soit 2,3,4....

            Je te mets le code :

            Private Sub Auto_Open()
            Dim Datejour As String
            Dim jourdate As Date
            Dim i, z
            'Sélectionner la case
            Range("N1:S1").Select
            ' Ajouter la date
            Datejour = InputBox("Date début souhaitée", "Date")
            If IsDate(Datejour) Then
            jourdate = Datejour
            Else
            jourdate = 0
            End If
            Range("N1:S1") = jourdate
            Sheets("Vierge").Select
            Sheets("Vierge").Copy after:=Sheets(1)
            Sheets("Vierge (2)").Select
            Sheets("Vierge (2)").Name = "2"
            'Additionner la date
            Range("N1:S1") = jourdate + 1
            'Combien de jours
            z = InputBox("Nombre de jours souhaités ", "Jours")
            For i = 1 To z
            Sheets("Vierge").Copy after:=Sheets(2)
            ActiveSheet.Name = "Position " & i
            Next i

            End Sub

            -----------
            Merci pour ton aide

            Bon après-midi

            Macij
          5. Contributeur
            @Macijsi j'ai bien compris, ceci devrais faire ce que tu souhaites:
            Option Explicit
            Private Sub Auto_Open()
            Dim Datejour As String
            Dim jourdate As Date
            Dim i As Long, z As Long
            'Sélectionner la case
            Range("N1:S1").Select
            ' Ajouter la date
            Datejour = InputBox("Date début souhaitée", "Date")
            If IsDate(Datejour) Then
            jourdate = Datejour
            Else
            jourdate = 0
            End If
            Range("N1:S1") = jourdate
            
            'Combien de jours
            z = InputBox("Nombre de jours souhaités ", "Jours")
            For i = 1 To z
                 Sheets("Vierge").Copy after:=Sheets(Sheets.Count)
                 ActiveSheet.Name = i
                 Range("N1:S1") = jourdate + i
            Next i
            
            End Sub
            

            SI tu veux simplement faire une feuille par mois, ceci devrait fonctionner:
            Option Explicit
            Private Sub Auto_Open()
            Dim Datejour As String
            Dim jourdate As Date
            Dim nmois As Integer
            ' Demander la date
            Datejour = InputBox("Un jour du mois souhaité", "Date")
            If IsDate(Datejour) Then
                jourdate = Datejour
            Else
                jourdate = 0
            End If
            nmois = Month(jourdate)
            jourdate = DateSerial(Year(jourdate), nmois, 1)
            Sheets("Vierge").Range("N1:S1") = jourdate
            Do While Month(jourdate) = nmois
                 Sheets("Vierge").Copy after:=Sheets(Sheets.Count)
                 ActiveSheet.Name = Day(jourdate)
                 Range("N1:S1") = jourdate
                 jourdate = jourdate + 1
            Loop
            End Sub