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

  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
    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é.
      0
      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
        0
        1. Merci pour vos messages...ça marche :)

          Bonne soirée
          0
          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
            0
            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
              0
            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
              0
            3. Contributeur
              suggestion:
              au lieu de
              Datejour = DateAdd("d", 1, jourdate) 

              essaie
              Range("N1:S1") = jourdate+1
              0
            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
              0
            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
              
              0