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 -
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
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
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é.
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é.
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
Merci encore pour votre aide & bonne soirée
P.S Voici l'adresse du lien : http://www.cjoint.com/c/GEAuMyD4Ejj
pas certain d'avoir compris ce que tu veux faire.
à tout hasard:
à 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
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
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
ç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
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
si j'ai bien compris, ceci devrais faire ce que tu souhaites:
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 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