Excel VBA, récupération de la date du jour
Résolu
kay33
-
kay33 -
kay33 -
Bonjour,
Actuellement sous VBA j ai un bouton de commande avec une interface qui apparait.
Dans cette interface il faut remplir plusieurs date.
J aimerai que la 1er date que j ai a remplir me soit proposé directement et que sa soit la date du jour actuelle et donc que sa change chaque jour.
Donc j aimerai trouvé une formule ou autre qui permet de récupérer la date du jour.
Merci d avance
Actuellement sous VBA j ai un bouton de commande avec une interface qui apparait.
Dans cette interface il faut remplir plusieurs date.
J aimerai que la 1er date que j ai a remplir me soit proposé directement et que sa soit la date du jour actuelle et donc que sa change chaque jour.
Donc j aimerai trouvé une formule ou autre qui permet de récupérer la date du jour.
Merci d avance
13 réponses
Résumé de la discussion
La demande porte sur faire apparaître automatiquement la date du jour comme première valeur à saisir dans une interface VBA d'un formulaire, afin que cette date évolue quotidiennement. La solution la plus simple est d'utiliser Now ou Date dans le code VBA, en affectant Now à un champ du formulaire lors de son ouverture ou sur commande. En alternative sans VBA, une fonction de cellule comme =MAINTENANT() ou =AUJOURDHUI() peut insérer la date actuelle, et peut être utilisée directement comme valeur par défaut. D'autres nuances tiennent au formatage et à l'environnement, car le format peut varier selon la locale et la version, nécessitant un ajustement du format dd/MM/yyyy.
-
Salut,
Exemple Now te donne la date et l'heure et Date la date actuelle. Ensuite soit tu associes la macro à un bouton, une fonction ou à l'ouverture du fichier pour qu'elle s'actualise automatiquement
Sub test()
[A1] = Now
[A2] = Date
End Sub
mais tu peux passer sans VBA avec une fonction
dans la cellule =MAINTENANT()
ou = AUJOURDHUI()
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir. -
Re,
Oui bien sur, mais dans ta demande il n'était pas question de combobox.
Normalement un combobox est utilisé pour afficher une liste déroulante soit à partir d'une plage ou d'un code. Et ton combobox est dans une userform ou sur la feuille de calcul
-
Re,
Si le combobox est le numéro 1, ce code affichera la date à l'activation de l'userform, si tu remplaces Date par Now tu auras la date et l'heure
Private Sub UserForm_Initialize()
ComboBox1 = Date
End Sub
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir. -
Re,
Oui tout à fait, le code ci dessous affiche la date dans un combobox et un textbox
ensuite la cellule A1 récupére la date du textbox
Private Sub UserForm_Initialize()
ComboBox1 = Date
TextBox1 = Date
[A1] = TextBox1
End Sub -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Re,
Ou j'ai mal compris ta demande, ou tes explications sont incomplètes, en principe chaque fois que je donne un code, je le teste avant
Regarde le fichier joint, aucune saisie sur la feuille 1.
Lorsque tu actives le bouton l'userform s'affiche avec la date du jour dans le textbox et le combobox.
Pour que tu comprennes le code,
Ces dates s'inscrivent respectivement en A1 et A3, si les dates sont modifiées dans le textbox ou combobox elle s'inscrivent en C1 et C3.
https://www.cjoint.com/?gikQNdPBMD -
Re,
Je comprends mieux, tu ne peux utiliser qu'une fois
Private Sub UserForm_Initialize
il faut donc insérer tes codes à la suite
Private Sub UserForm_Initialize()
ComboBox1 = Date
TextBox1 = Date
[A1] = TextBox1
'tes codes soit après ou en début de procédure
End Sub
-
Re,
Si tu as bien conservé qu'un seul Private Sub UserForm_Initialize
colle ton code dans un post, tu dois avoir une erreur -
Re,
colle ton code dans un post sinon je ne peux pas t'aider-
Private Sub UserForm_Initialize()
Dim i, dernlign As Integer
ComboBox1.Clear
ComboBox2.Clear
ComboBox3.Clear
ComboBox4.Clear
ComboBox5.Clear
ComboBox6.Clear
ComboBox8.Clear
ComboBox9.Clear
ComboBox10.Clear
ComboBox11.Clear
ComboBox12.Clear
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
With Sheets("utile")
dernlign = .Range("G65536").End(xlUp).Row
For i = 1 To dernlign
ComboBox10.AddItem .Cells(i, 7).Value
Next i
dernlign = .Range("A65536").End(xlUp).Row
For i = 1 To dernlign
ComboBox12.AddItem .Cells(i, 1).Value
Next i
End With
End Sub
Voila
-
-
Re,
Que veux tu afficher dans ton combobox 10 et 12
l'erreur vient de ce bout de code qui est répété deux fois avec la même variable pour la colonne A
With Sheets("utile")
dernlign = .Range("G65536").End(xlUp).Row
For i = 1 To dernlign
ComboBox10.AddItem .Cells(i, 7).Value
Next i
Regarde ce code
Private Sub UserForm_Initialize()
Dim x, w As String
x = Sheets("utile").Range("G65536").End(xlUp)
w = Sheets("utile").Range("A65536").End(xlUp)
ComboBox1.Clear
ComboBox2.Clear
ComboBox3.Clear
ComboBox4.Clear
ComboBox5.Clear
ComboBox6.Clear
ComboBox8.Clear
ComboBox9.Clear
ComboBox10.Clear
ComboBox11.Clear
ComboBox12.Clear
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
ComboBox10 = x
ComboBox12 = w
End Sub-
-
Je suis d'accord, mais ton erreur vient de cette partie de code,
With Sheets("utile")
dernlign = .Range("G65536").End(xlUp).Row
For i = 1 To dernlign
ComboBox10.AddItem .Cells(i, 7).Value
Next i
dernlign = .Range("A65536").End(xlUp).Row
For i = 1 To dernlign
ComboBox12.AddItem .Cells(i, 1).Value
Next i
End With
isole le en mettant une apostrophe devant chaque ligne et tu verras qu'il n'y a plus d'erreur
' With Sheets("utile")
' dernlign = .Range("G65536").End(xlUp).Row
' For i = 1 To dernlign
' ComboBox10.AddItem .Cells(i, 7).Value
' Next i
' dernlign = .Range("A65536").End(xlUp).Row
' For i = 1 To dernlign
' ComboBox12.AddItem .Cells(i, 1).Value
' Next i
' End With
Ou testes ton code avec le fonction pas à pas détaillé -
-
-
Re,
normal au début tu demandes un code pour afficher une date sur laquelle j'ai répondu
ensuite le code ne fonctionne pas pour double utilisation de la syntaxe
Private Sub UserForm_Initialize()
a la quelle je t'ai répondu qu'il fallait l'utiliser qu'une fois
Ensuite tu as une erreur à l'initialisation je t'en ai donné la raison
maintenant si tu veux afficher mon code comme je te l'ai conseillé sous la même syntaxe, regarde en fin de code
Private Sub UserForm_Initialize()
Dim x, w As String
x = Sheets("utile").Range("G65536").End(xlUp)
w = Sheets("utile").Range("A65536").End(xlUp)
ComboBox1.Clear
ComboBox2.Clear
ComboBox3.Clear
ComboBox4.Clear
ComboBox5.Clear
ComboBox6.Clear
ComboBox8.Clear
ComboBox9.Clear
ComboBox10.Clear
ComboBox11.Clear
ComboBox12.Clear
' TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
ComboBox10 = x
ComboBox12 = w
ComboBox1 = Date
TextBox1 = Date ' si tu veux afficher la date dans ton texbox il faut supprimer la
'ligne en gras parce qu'on ne peut pas d'une part textebox vide
'et deux ligne plus bas afficher la date
[A1] = TextBox1
[B2] = ComboBox1
End Sub
-
-
Si le code plante ce n'est pas pour une raison de taille du fichier mais certainement à cause d'une erreur
Alors soit tu utilises la fonction pas à pas détaillé pour tester ton code, ou autre astuce que je te redonne place devant chaque ligne du code une apostrophe et teste le code, efface une apostrophe et reteste etc ... tu verras la ligne ou partie du code qui plante et qu'il faudra modifier
-
-
bonjour à tous,
Il me semble qu'il y a une incompréhension entre vous deux car avec cette simple modification ta macro doit fonctionner :Private Sub UserForm_Initialize() Dim i As Long, dernlign As Integer ComboBox1.Clear ComboBox2.Clear ComboBox3.Clear ComboBox4.Clear ComboBox5.Clear ComboBox6.Clear ComboBox8.Clear ComboBox9.Clear ComboBox10.Clear ComboBox11.Clear ComboBox12.Clear TextBox1.Value = Date ' ou par exemple avec le jour en clair 'TextBox1.Value = Format(Date, "dddd dd/mm/yyyy") TextBox2.Value = "" TextBox3.Value = "" With Sheets("utile") dernlign = .Range("G65536").End(xlUp).Row For i = 1 To dernlign ComboBox10.AddItem .Cells(i, 7).Value Next i dernlign = .Range("A65536").End(xlUp).Row For i = 1 To dernlign ComboBox12.AddItem .Cells(i, 1).Value Next i End With End Sub
Voici l'exemple avec ce code :
http://www.cijoint.fr/cjlink.php?file=cj201006/cijAt0Qg7w.xls-
-
bonjour
Tu veux dire que mon classeur exemple ne fonctionne pas ?
Sur ton classeur ton nom de macro doit être unique.
Si tu pouvais nous mettre ton classeur, sans données identifiables et privées, mais avec la structure de tes données et tes macros sur http://www.cijoint.fr/ puis nous mettre le lien généré ici ce serait plus facile. -
-
-
-
-
Re,
Je crois que le mieux est de mettre ton fichier sur un post avec le lien ci dessous que l'on voit sur pièce sinon on n'en sortira pas
https://www.cjoint.com/
-
Salut,
Au niveau de ces deux codes
Private Sub TextBox1_Change()
Private Sub TextBox2_Change()
au niveau de cette ligne
If valeur = 2 Or valeur = 5 Then TextBox1 = TextBox1 & "/"
tu as ajouté &"/" qui n'a pour but que de doubler le séparateur date ex.09//06//2010 à la place de 09/06/2010
ensuite ce qui pose problème sont les combobox 8, 10 et 12 au niveau de ce code
Private Sub ComboBox8_Change()
With Sheets(ComboBox12.Value).Rows(3)
Set trouve = .Cells.Find(ComboBox10.Value)
If trouve Is Nothing Then
MsgBox "Utilisateur non trouvé"
Else
premcol = trouve.Column
dercol = trouve.Offset(0, 1).Column - 1
End If
End With
With Sheets(ComboBox12.Value)
Rng = .Range(.Cells(4, premcol), .Cells(4, dercol)).Address
End With
With Sheets(ComboBox12.Value).Range(Rng)
Set trouve1 = .Cells.Find(ComboBox8.Value)
If trouve1 Is Nothing Then
MsgBox "Matériel non trouvé"
Else
col = trouve1.Column
End If
End With
With Sheets(ComboBox12.Value)
derlig = .Range("C65536").End(xlUp).Row
If .Cells(5, col) <> "" Then
ComboBox11.AddItem CDate(.Cells(5, 3).Value)
End If
For i = 6 To derlig
If .Cells(i, col) <> "" And .Cells(i - 1, col) = "" Then
ComboBox11.AddItem CDate(.Cells(i, 3).Value)
End If
Next i
End With
explique ce qu'il doit se passer exactement pour le modifier ou gérer l'erreur