Date et VBA

Résolu/Fermé
Macij Messages postés 1130 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 13 mars 2023 - 25 mai 2017 à 21:00
Macij Messages postés 1130 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 13 mars 2023 - 28 mai 2017 à 10:15
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

5 réponses

yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
25 mai 2017 à 22:07
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
25 mai 2017 à 22:03
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
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
25 mai 2017 à 22:14
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
Macij Messages postés 1130 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 13 mars 2023 39
26 mai 2017 à 19:38
Merci pour vos messages...ça marche :)

Bonne soirée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Macij Messages postés 1130 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 13 mars 2023 39
26 mai 2017 à 22: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
yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
Modifié le 26 mai 2017 à 22:52
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
Macij Messages postés 1130 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 13 mars 2023 39 > yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
27 mai 2017 à 13:18
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
yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
27 mai 2017 à 13:29
suggestion:
au lieu de
Datejour = DateAdd("d", 1, jourdate) 

essaie
Range("N1:S1") = jourdate+1
0
Macij Messages postés 1130 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 13 mars 2023 39 > yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
27 mai 2017 à 17:15
ç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
yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > Macij Messages postés 1130 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 13 mars 2023
27 mai 2017 à 18:47
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