Saisir une date à partir d'une boîte de message

  • Initiateur de la discussion Initiateur de la discussion eric26
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

eric26

XLDnaute Nouveau
Bonjour,

Je travaille actuellement sur un fichier servant à établir des devis à partir de données se trouvant sur plusieurs feuilles et toutes les feuilles se basent sur la même période.

Le choix du 1er mois de la période est donc primordial : il ne faut donc pas oublier de le mettre.

QUESTION : existe t-il une formule ou autre qui permette à l'utilisateur de saisir, dès l'ouverture du fichier et à l'aide d'une boîte de dialogue, l'année d'une part et le mois d'autre part de la période de façon à ce que ces données apparaissent dans des cellules spécifiques (ex : feuill1 en D2 et C2).

Merci d'avance
 
Re : Saisir une date à partir d'une boîte de message

Bonjour et bienvenu sur le forum

Ci joint le fichier avec une macro.
La procédure open ouvre un Usf qui dans des listbox affiche les 12 mois de l'année et à partir de l'année en cours les dix prochaines années.
Tant que les données ne sont pas sélectionnées on ne peut fermer l'userform.

Si les dates existent à l'ouverture du fichier un message de bienvenue à modifier est affiché.

A tester

JP
 

Pièces jointes

Dernière édition:
Re : Saisir une date à partir d'une boîte de message

Salut jp14,

Merci pour ton aide, c'est justement ça que je cherchais à faire.

Seulement, 1 petite chose à modifier :

- je voudrais pouvoir rentrer des dates même lorsqu'il existe déjà une date dans le fichier

Merci beaucoup d'avance

PS : il faudra me dire aussi comment récupérer ton code et la procédure pour l'insérer dans mon fichier car je ne sais pas comment faire

merci
 
Re : Saisir une date à partir d'une boîte de message

Bonjour

Pour récupérer les macros " Alt F11" pour rentrer dans l'éditeur de macros.
Pour autoriser la saisie d'une date il faut modifier le code ci dessous
Code:
Private Sub UserForm_Initialize()
Dim trouve As Byte
Dim date1 As Date
Dim i As Integer

trouve = 0
nomfeuille1 = "Feuil1"
'feuill1 en D2 et C2

[COLOR="red"]' a supprimer
If Sheets(nomfeuille1).Range("D2") <> "" And Sheets(nomfeuille1).Range("c2") <> "" Then 'trouve = 1[/COLOR]

If trouve = 0 Then
    date1 = "1 / 1 / 2000"
    With ListBox1 ' ComboBox1
        .Clear
        .ColumnCount = 1
        For i = 0 To 11
            .AddItem Format((DateAdd("m", i, date1)), "mmmm")
        Next i
    End With


    date1 = Format(Now, "dd,mm,yyyy")
    With ListBox2 ' ComboBox1
        .Clear
        .ColumnCount = 1
        For i = 0 To 10
            .AddItem Format((DateAdd("yyyy", i, date1)), "yyyy")
        Next i
    End With

    
End If
If trouve = 1 Then
ListBox1.Visible = False
ListBox2.Visible = False
Label1.Visible = False
Label2.Visible = False
CommandButton2.Visible = True
CommandButton1.Visible = False
Label3.Visible = True
End If
End Sub

JP
 
Re : Saisir une date à partir d'une boîte de message

Problème lorsque j'ai copié vers mon fichier (ma feuille1 est "Data") : il me met 1 erreur de compilation : variable non définie (en gras ci dessous


Code:
End If
If trouve = 1 Then
ListBox1.Visible = False
ListBox2.Visible = False
[B]Label1.Visible = False[/B]
Label2.Visible = False
CommandButton2.Visible = True
CommandButton1.Visible = False
Label3.Visible = True
End If
End Sub

Ci dessous mon code :

Code:
Dim nomData As String
Option Explicit

Private Sub CommandButton1_Click()
If ListBox1.ListIndex = -1 Then Exit Sub
If ListBox2.ListIndex = -1 Then Exit Sub

Sheets(nomData).Range("D2") = ListBox2.List(ListBox2.ListIndex)
Sheets(nomData).Range("c2") = ListBox1.List(ListBox1.ListIndex)


CommandButton2_Click
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub ListBox2_Click()

End Sub

Private Sub UserForm_Initialize()
Dim trouve As Byte
Dim date1 As Date
Dim i As Integer

trouve = 0
nomData = "Feuil1"
'feuill1 en D2 et C2

If trouve = 0 Then
    date1 = "1 / 1 / 2000"
    With ListBox1 ' ComboBox1
        .Clear
        .ColumnCount = 1
        For i = 0 To 11
            .AddItem Format((DateAdd("m", i, date1)), "mmmm")
        Next i
    End With


    date1 = Format(Now, "dd,mm,yyyy")
    With ListBox2 ' ComboBox1
        .Clear
        .ColumnCount = 1
        For i = 0 To 10
            .AddItem Format((DateAdd("yyyy", i, date1)), "yyyy")
        Next i
    End With

    
End If
If trouve = 1 Then
ListBox1.Visible = False
ListBox2.Visible = False
Label1.Visible = False
Label2.Visible = False
CommandButton2.Visible = True
CommandButton1.Visible = False
Label3.Visible = True
End If
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then Cancel = True
End Sub
 
Re : Saisir une date à partir d'une boîte de message

Bonjour
A priori il manque dans l'usf un contrôle.
Le plus simple est quand on est dans l'éditeur vba après avoir ouvert ton fichier et le mien de faire dans la partie "project" un Glisser-déposer avec l'userform, et ensuite on modifie le code.

JP
 
Re : Saisir une date à partir d'une boîte de message

Salut,

C'est bon ça marche. Un grand merci

Juste une question : pour compliquer un peu le truc !!!😕
Est-il possible d'avoir les mois sous le format suivant jj/mm/aaaa avec aaaa = l'année choisie dans la 2ème colonne

Merci
 
Re : Saisir une date à partir d'une boîte de message

Bonsoir

Salut,

C'est bon ça marche. Un grand merci

Juste une question : pour compliquer un peu le truc !!!😕
Est-il possible d'avoir les mois sous le format suivant jj/mm/aaaa avec aaaa = l'année choisie dans la 2ème colonne

Merci

Aucune difficulté pour la programmation par contre pour la lecture l'utilisateur devra choisir
une valeur parmi 365 avec jj/mm/aaaa.

JP
 
Re : Saisir une date à partir d'une boîte de message

Bonjour

Ci joint le fichier avec la procédure modifiée.
Affichage du premier jour du mois sous la forme jj/mmmm/aaaaa
Inscription du mois dans la cellule.

A tester

JP
 

Pièces jointes

Re : Saisir une date à partir d'une boîte de message

Merci jp

dernière question et je m'arreterais là car je pense que je t'es assez saoulé sur cette question :

Comment doit-on modifier ce code là ?
Code:
.AddItem Format((DateAdd("m", i, date1)), "dd/mmmm/yyyy")
pour afficher le mois tel qu'il apparaît dans la listbox à savoir comme ça ?
Code:
dd/mmmm/yyyy

Merci d'avance
 
Re : Saisir une date à partir d'une boîte de message

Salut,

Ben en fait, avec ta dernière solution, le résultat affichait le mois sous le format : "janvier" lorsque l'on choisissait 01/01/2008 dans la liste.

En fait je voudrais qu'il affiche tout simplement la date sous le même format, à savoir : 01/01/2008 (tel qu'il apparaît dans la liste).

Car j'ai besoin de ce format là pour travailler dessus à partir d'autres formules.

Merci
 
Re : Saisir une date à partir d'une boîte de message

Salut,

ça y est j'ai trouvé : avec cette formule
Code:
=DATE(E2;RECHERCHEV(D$2;$D$4:$E$15;2;FAUX);1)

et le tableau ci dessous : je sors le mois sous la forme voulue.
janvier 1
février 2
mars 3
avril 4
mai 5
juin 6
juillet 7
août 8
septembre 9
octobre 10
novembre 11
décembre 12

Encore mille merci à toi jp

A +

eric26
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour