Menu

Excel VBA, récupération de la date du jour [Fermé]

- - Dernière réponse :  kay33 - 10 juin 2010 à 09:19
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


Afficher la suite 

13 réponses

Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3452
0
Merci
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.
Ok merci je v essayé
Désoler mais sa ne marche pas comme je veut car moi g un bouton qui ouvre une combobox et je veut que cet date se mette automatiquement dans ma Combobox.
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3452
0
Merci
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
Ma combobox est dans une userform est donc je veux que quand j appuye sur le bouton dés que l' userform s affiche la date du jour se mette automatiquement
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3452
0
Merci
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.
En faite je veux faire sa avec un textbox
Es que c le même principe avec un textbox ?
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3452
0
Merci
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
Désoler mais sa ne marche pas
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3452
0
Merci
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.

http://cjoint.com/?gikQNdPBMD
Ouais c sa que je veut le problème est j ai : Private Sub UserForm_Initialize() 2 fois donc sa beug il me dise erreur de compilation
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3452
0
Merci
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
Sa ne marche toujours pas il m affiche en jaune: Private Sub UserForm_Initialize()
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3452
0
Merci
Re,

Si tu as bien conservé qu'un seul Private Sub UserForm_Initialize

colle ton code dans un post, tu dois avoir une erreur
Non sa ne marche pas il dois y avoir un truc qui bloque
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3452
0
Merci
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
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3452
0
Merci
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
Mais je ne veut pas changer les combobox 10 et 12 je veut modifié que le Textbox 1 pour que quand j ouvre mon userform directement dans le Textbox 1 s affiche la date du jour
Mike-31
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3452 -
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é
Je voit pas ce que apporte ton code sa ne fait rien sur mon userform
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3452
0
Merci
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

Mon fichier est beaucoup plus gros donc sa ne marche pas y a un truc qui bloque
Mike-31
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3452 -
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
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3546
0
Merci
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
gbinforme
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3546 -
bonjour

Si tu mets
TextBox1.Value = Date
cela fonctionne très bien : as-tu seulement essayé ?
oui j ai essayé mais sa fé toujours pareil sa ne marche pas
gbinforme
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3546 -
Si cela "ne marche pas" chez toi tu devrais envisager de changer d'orientation professionnelle...
je ne comprend pas pk sa ne marche pas j ai fait comme tu ma dit mais y a toujours le message d érreur qui apparait
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3452
0
Merci
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

http://www.cjoint.com/
gbinforme
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3546 -
Bonjour,

Le fichier que tu as mis ne présente aucune erreur d'exécution même si l'on affecte la date à toutes les textbox et donc si chez toi cela "plante" c'est que tu n'as pas un excel correctement paramétré.
Messages postés
16895
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 mai 2019
3452
0
Merci
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
Les ComboBox 8, 10 et 12 font la même chose que les comboBox 3 , 4 et 6