Date et VBA

Résolu
Macij Messages postés 1296 Date d'inscription   Statut Membre Dernière intervention   -  
Macij Messages postés 1296 Date d'inscription   Statut Membre Dernière intervention   -
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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  4. Macij Messages postés 1296 Date d'inscription   Statut Membre Dernière intervention   39
     
    Merci pour vos messages...ça marche :)

    Bonne soirée
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Macij Messages postés 1296 Date d'inscription   Statut Membre Dernière intervention   39
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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. Macij Messages postés 1296 Date d'inscription   Statut Membre Dernière intervention   39 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Ce 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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      suggestion:
      au lieu de
      Datejour = DateAdd("d", 1, jourdate) 

      essaie
      Range("N1:S1") = jourdate+1
      0
    4. Macij Messages postés 1296 Date d'inscription   Statut Membre Dernière intervention   39 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      ç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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Macij Messages postés 1296 Date d'inscription   Statut Membre Dernière intervention  
       
      si 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