Date et VBA
Résolu
Macij
Messages postés
1296
Statut
Membre
-
Macij Messages postés 1296 Statut Membre -
Macij Messages postés 1296 Statut Membre -
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
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
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