TextBox et Date

am0niak

XLDnaute Nouveau
Bonjour à tous voilà, j'ai un problème pour programmer une textbox dans un userform.
J'aimerai que la personne ait le choix d'entrer une date à condition qu'elle soit au bon format ou bien de laisser le champ vide. Et qu'ensuite les données (entrées ou non) soit conservées telles qu'elles sont dans la cellule de destination.
Voilà mon code pour le moment et il ne fonctionne pas. . je suis ouvert à tous les conseils que l'on pourra me donner.

Dim DateDeControle As Date


If Not TextBox7 = "" Then
TextBox7.Value = Format(TextBox7.Value, "dd/mm/yyyy")
Exit Sub
Else
TextBox7 = ""
End If
 

Orodreth

XLDnaute Impliqué
Re : TextBox et Date

Bonjour,

Petite aide rapide:
Code:
If TextBox7.text <> "" Then
    Sheets("Feuil1").Range("A1").NumberFormat = "@"
    Sheets("Feuil1").Range("A1").Value = Format(TextBox7.text, "DD/MM/YYYY")
    Sheets("Feuil1").Range("A1").NumberFormat = "DD/MM/YYYY"
    Exit Sub
Else
    TextBox7.text = ""
End If
Ce code dit que si le texte de TextBox7 est différent de "" (que tu peux remplacer par vbnullstring)
Alors:
  • Format de la cellule A1 de la feuille 1 est Texte
  • Valeur de la cellule A1 de la feuille 1 est la Date renseignée
  • Format de la cellule A1 de la feuille 1 est Date (DD/MM/YYYY)


Sinon, tu peux aussi regarder du côté des contrôles Date & Time Picker, c'est plus simple pour manipuler des dates via un userform.

Cordialement,
Orodreth
 
Dernière édition:

am0niak

XLDnaute Nouveau
Re : TextBox et Date

Merci pour ta réponse Orodreth. Je comprends le principe de ton code mais je ne vais pas réussir à l'adapter à mon programme, je voudrais utiliser une variable pour y mettre les données et ensuite les copier dans une cellule. Pourrait on faire un code avec " Dim DateDeControle As Variant " ?
 

Orodreth

XLDnaute Impliqué
Re : TextBox et Date

Re,

Adaptation en passant par une variable:

Code:
Dim d_Date2Control as Date
If TextBox7.text <> "" Then
    d_Date2Control = Format(TextBox7.text, "DD/MM/YYYY")
    Exit Sub '<== /!\ ATTENTION, avec cette ligne, l'affectation dans une variable ne sert à rien
End If

Je ne vois pas trop où tu veux en venir en fait, vu que tu sors de ta procédure juste après avoir affecté la valeur.
Ce serait dans une cellule, je comprendrais, mais dans une variable pour sortir immédiatement après, ça ne sert à rien, vu que la variable est détruite dès que tu sors de ta procédure.

Tu aurais des précisions ? Le code complet de ta procédure ?

Cordialement,
 

am0niak

XLDnaute Nouveau
Re : TextBox et Date

Code:
Private Sub CommandButton1_Click()

Workbooks.Open Filename:="R:\Maintenance\Gestion du Parc.xls"
Sheets("Parc Machine").Activate

If ComboBox1 = "" Then
MsgBox ("Sélectionner une Section Machine")
Exit Sub
Else
SectionMachine = ComboBox1
End If

If TextBox1 = "" Then
MsgBox ("Saisir un Numéro de Machine")
Exit Sub
Else
NuméroMachine = TextBox1
End If

If TextBox2 = "" Then
MsgBox ("Saisir un Nom de Matériel")
Exit Sub
Else
Matériel = TextBox2
End If

If ComboBox2 = "" Then
MsgBox ("Sélectionner une Implantation")
Exit Sub
Else
Implantation = ComboBox2
End If

If Not TextBox3 = "" Then
TextBox3.Value = Format(TextBox7.Value, "dd/mm/yyyy")
Exit Sub
Else
DateDeControle = TextBox3
End If

If Not TextBox7 = "" Then
TextBox7.Value = Format(TextBox7.Value, "dd/mm/yyyy")
Exit Sub
Else
DateDeControle = TextBox7
End If


If ComboBox3 = "" Then
ArmoireElectrique = "NC"
Else
ArmoireElectrique = ComboBox3
End If

If TextBox4 = "" Then
N°DépartElectrique = "0"
Else
N°DépartElectrique = TextBox4
End If

If TextBox5 = "" Then
MsgBox ("Saisir une Puissance Machine")
Exit Sub
Else
PuissanceElectrique = TextBox5
End If

If TextBox6 = "" Then
Diver = " "
Else
Diver = TextBox6
End If

If ComboBox4 = "" Then
MsgBox ("Sélectionner un Rattachement à la Production")
Exit Sub
Else
RattachementProduction = ComboBox4
End If



Ligne = Range("A65536").End(xlUp).Row
Ligne = Ligne + 1
'MsgBox (NuméroMachine)
NbCar = Len(NuméroMachine) - 1
'MsgBox (Right(NuméroMachine, 1))
If Right(NuméroMachine, 1) = 0 Then
NuméroMachine = NuméroMachine * 100
'MsgBox (NuméroMachine)
For i = 3 To Ligne
If Cells(i, 2) = NuméroMachine Then
MsgBox ("Cette machine est déjà présente dans le parc. Vérifier le Numéro Machine")
Exit Sub
End If
Next i
NuméroMachine = TextBox1
Else
For i = 3 To Ligne
If Cells(i, 2) = NuméroMachine Then
MsgBox ("Cette machine est déjà présente dans le parc. Vérifier le Numéro Machine")
Exit Sub
End If
Next i
End If



Cells(Ligne, 1) = SectionMachine
Cells(Ligne, 2) = NuméroMachine
Cells(Ligne, 2).Select
If NbCar = 2 Then
Selection.NumberFormat = "0.0"
End If
If NbCar = 3 Then
Selection.NumberFormat = "0.00"
End If
Cells(Ligne, 3) = Matériel
Cells(Ligne, 4) = Implantation
Cells(Ligne, 5) = DateDeMiseEnService
Cells(Ligne, 6) = DateDeControle
Cells(Ligne, 7) = ArmoireElectrique
Cells(Ligne, 8) = N°DépartElectrique
Cells(Ligne, 9) = PuissanceElectrique
Cells(Ligne, 10) = Diver

'Variables déclarées dans le module :

'Public SectionMachine As String
'Public SectionMateriel As String
'Public NuméroMachine As String
'Public NuméroMateriel As Double
'Public Matériel As String
'Public Implantation As String
'Public DateDeMiseEnService As Date
'Public DateDeControle As Date
'Public ArmoirElectrique As String
'Public N°DépartElectrique As String
'Public PuissanceElectrique As Double
'Public Diver As String

J'espère que c'est ce que tu demandais, sinon dis moi ce qu'il te manque.
Comme tu le vois je mets mes cellules égales aux variables dans lesquelles sont stockées les informations
 

Orodreth

XLDnaute Impliqué
Re : TextBox et Date

Re,

Tout d'abord, je te conseille d'indenter ton code, tes yeux te remercieront plus tard ;)

Passons, si j'ai bien compris ton code, ça donnerait plus ceci:

Code:
If TextBox7.text <> vbnullstring Then
    If IsDate(TextBox7.text) Then
        DateDeControle = Format(Textbox7.text, "DD/MM/YYYY")
    Else
        MsgBox "Erreur de saisie, vous devez saisir une date pour la date de contrôle"
        Exit Sub
    end if
Else
    msgbox "Veuillez saisir une date de contrôle"
    Exit sub
End If
 

am0niak

XLDnaute Nouveau
Re : TextBox et Date

Je tente ton code Orodreth, je te remercie déjà d'avoir eu la patience pour me comprendre et ensuite de m'avoir répondu.
Je te donne des nouvelles bientôt ;) et oui la mise en forme n'est pas géniale je vais m'en occuper ^^
 

am0niak

XLDnaute Nouveau
Re : TextBox et Date

Je vais être encore embêtant, mais je ne peux pas laisser le champ vide.
La date fonctionne très bien, mais lorsque je n'en mets pas il me demande d'en entrer une. . .

Code:
If TextBox7.Text <> vbNullString Then
    If IsDate(TextBox7.Text) Then
        DateDeControle = Format(TextBox7.Text, "DD/MM/YYYY")
    Else
        MsgBox "Erreur de saisie, vous devez saisir une date pour la date de contrôle"
        Exit Sub
    End If
Else
    MsgBox "Veuillez saisir une date de contrôle"           ' Ici ça se passe
    Exit Sub
End If

j'aimerai laisser un vide plutôt que de rentrer une date au hasard
 
Dernière édition:

am0niak

XLDnaute Nouveau
Re : TextBox et Date

Erreur d'accès à la base de registration, c'est ce que cela me met lorsque je vais voir dans référence. Je n'ai aucun droit sur mon compte sauf celui d'essayer de programmer ^^

Je vais être encore embêtant, mais je ne peux pas laisser le champ vide.
La date fonctionne très bien, mais lorsque je n'en mets pas il me demande d'en entrer une. . .

Code:
Code :
If TextBox7.Text <> vbNullString Then
    If IsDate(TextBox7.Text) Then
        DateDeControle = Format(TextBox7.Text, "DD/MM/YYYY")
    Else
        MsgBox "Erreur de saisie, vous devez saisir une date pour la date de contrôle"
        Exit Sub
    End If
Else
    MsgBox "Veuillez saisir une date de contrôle"           ' Ici ça se passe
    Exit Sub
End If

j'aimerai laisser un vide plutôt que de rentrer une date au hasard
 

Orodreth

XLDnaute Impliqué
Re : TextBox et Date

Re,

Pas au hasard: prend le 01/01/1905 (ou le 31/12/9999, à ta guise).
Ce sont des dates extrêmes qu'il est facile de tester.

De fait, quand tu affectes ta valeur, ça donne ça:

Code:
Cells(Ligne, 6) = IIF(DateDeControle <> "31/12/9999", DateDeControle, vbnullstring)
 

MJ13

XLDnaute Barbatruc
Re : TextBox et Date

Re


AmOniaK, Je sens le gaz :(.

je suis ouvert à tous les conseils que l'on pourra me donner.

Avec ton fichier que tu peux joindre sur XLD, voila le conseil le plus judicieux de l'année :eek:.

Parce que j'en ai vu des fils qui qui ne s'arrête jamais :).

Et en plus, j'en ai dépanné plus d'un sur ce genre de problème (attention, cela doit être assez simple quand même pour mon niveau) :eek:.
 

am0niak

XLDnaute Nouveau
Re : TextBox et Date

Je ne vois pas où mettre ton CDate. Je l'avais déjà utilisé mais le problème est qu'il ne me mettait pas un bon format dans la cellule vers laquelle je l'envoyais, donc j'ai fais autrement. Et c'est vrai j'aurai pû mais au départ mon code ne faisait pas 200 lignes, donc j'ai pas fais attention.
Mon code à l'air de fonctionner grâce aux réponses de Orodreth (que je remercie au passage), et un peu de bidouillage par ci par là ^^
Bref désolé de t'avoir zappé dans mes réponses MJ13, ce n'était aucunement méchant ;)
Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 429
Messages
2 088 349
Membres
103 822
dernier inscrit
kader55