Probleme de formule de date [Résolu]

Signaler
Messages postés
72
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
23 février 2009
-
Messages postés
21
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
28 décembre 2008
-
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

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
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)
Messages postés
21
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
28 décembre 2008

'''''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
Messages postés
72
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
23 février 2009

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
Messages postés
21
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
28 décembre 2008

Ok, Merci Renfield