Date et VBA

Résolu
Macij Messages postés 1130 Date d'inscription   Statut Membre Dernière intervention   -  
Macij Messages postés 1130 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

5 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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   Statut Contributeur Dernière intervention   4 724
 
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 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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   Statut Membre Dernière intervention   39
 
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   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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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   Statut Membre Dernière intervention   39 > yg_be Messages postés 23541 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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
suggestion:
au lieu de
Datejour = DateAdd("d", 1, jourdate) 

essaie
Range("N1:S1") = jourdate+1
0
Macij Messages postés 1130 Date d'inscription   Statut Membre Dernière intervention   39 > yg_be Messages postés 23541 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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Macij Messages postés 1130 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