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

    Bonne soirée
    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. 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