Probleme de formule de date

Résolu
mythiac Messages postés 72 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 23 février 2009 - 17 déc. 2008 à 15:56
piloulac Messages postés 21 Date d'inscription dimanche 10 juin 2007 Statut Membre Dernière intervention 28 décembre 2008 - 18 déc. 2008 à 11:02
bonjour,

j'ai un problème de date, non pas pour afficher en format date, mais plutôt l'inverse.

dans un simple tableau excel, la formule =date(a,b,c) permet de donner une date en fonction de l'année (a), du mois (b) et du jour (a). en suite, en mettant cette case en format chiffre, on obtient un nombre entier.

j'aurais besoin de faire la même chose en vba, pour permettre un autofiltre par la suite...

je sais que la formula ne fonctionne pas, si vous avez une idée, merci par avance...

    If TextBox1 <> "" Then
   
    IntLigne = ActiveSheet.Cells(2, 1).End(xlDown).Row + 2
'La ligne dans laquelle sont ajoutées les valeurs est définie par la TextBox1
    Lg = Feuil11.Cells(65536, 1).End(xlUp).Row + 1
   
'texte des cases

'Dim Lg As String

Feuil11.Cells(Lg, 1).Value = UserForm4.TextBox1.Value 'jour
Feuil11.Cells(Lg, 2).Value = UserForm4.TextBox2.Value 'mois
Feuil11.Cells(Lg, 3).Value = UserForm4.TextBox3.Value 'annee
Feuil11.Cells(Lg, 4).Value = UserForm4.ComboBox1.Value 'immatriculation
Feuil11.Cells(Lg, 5).Value = UserForm4.TextBox10.Value 'kilometrage
Feuil11.Cells(Lg, 6).Value = UserForm4.ComboBox2.Value 'petrolier
Feuil11.Cells(Lg, 7).Value = UserForm4.TextBox11.Value 'litres
Feuil11.Cells(Lg, 8).Value = UserForm4.TextBox12.Value 'cout
Feuil11.Cells(Lg, 9).Formula = "=date($Lg$3,$Lg$2,$Lg$1)" 'valeur date
    End If

4 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 déc. 2008 à 04:01
c'est très génant...
concernant la création de dates, il ne faut pas jouer avec des concaténations dangereuses & "/" & ....
en effet, qui te dis que tu n'inverse pas mois et jours ?

utiliser DateSerial

ensuite,
vous modifiez la cellule via la propriété Formula
j'ignore pourquoi vous ne passez pas par un bête Value, mais bon.

Utilisez FormulaLocal, ici.
IsDate et CDate joueront avec vos regional settings...


faire, donc:

ActiveSheet.Cells(Lg, 9).FormulaLocal = DateSerial(UserForm1.TextBox3.Value, UserForm1.TextBox2.Value, UserForm1.TextBox1.Value)

ou

ActiveSheet.Cells(Lg, 9).Value= DateSerial(UserForm1.TextBox3.Value, UserForm1.TextBox2.Value, UserForm1.TextBox1.Value)
3
piloulac Messages postés 21 Date d'inscription dimanche 10 juin 2007 Statut Membre Dernière intervention 28 décembre 2008
18 déc. 2008 à 01:36
'''''Feuil11.Cells(Lg, 9).Formula = "=date($Lg$3,$Lg$2,$Lg$1)" 'valeur date


MaDate = UserForm1.TextBox1.Value & "/" & UserForm1.TextBox2.Value & "/" & UserForm1.TextBox3.Value
'''Vérifier saisie
If IsDate(MaDate) Then
MaDate = CDate(MaDate)
Else
Msgbox "Mauvaise saisie en textbox"
End If


ActiveSheet.Cells(Lg, 9).Formula = MaDate
0
mythiac Messages postés 72 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 23 février 2009
18 déc. 2008 à 08:23
ActiveSheet.Cells(Lg, 9).FormulaLocal = DateSerial(UserForm1.TextBox3.Value, UserForm1.TextBox2.Value, UserForm1.TextBox1.Value)

fonctionne parfaitement comme je le désirais...
pas facile les dates...
merci du coup de main
0
piloulac Messages postés 21 Date d'inscription dimanche 10 juin 2007 Statut Membre Dernière intervention 28 décembre 2008
18 déc. 2008 à 11:02
Ok, Merci Renfield
0
Rejoignez-nous