Comment : stocker et récupérer des valeurs de date dans des plages Excel par programmation
Vous pouvez stocker et extraire des valeurs dans un contrôle NamedRange ou un objet de plage Excel natif.
S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau document et de niveau application pour Excel 2013 et Excel 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.
Si vous stockez une valeur de date d'une plage égale ou supérieure au 01/01/1900 à l'aide des outils de développement Office dans Visual Studio, elle est stockée au format OA (OLE Automation).Vous devez utiliser la méthode FromOADate pour récupérer la valeur des dates OLE Automation.Si la date est antérieure au 1/1/1900, elle est stockée comme une chaîne.
[!REMARQUE]
Les dates Excel diffèrent des dates OLE Automation pour les deux premiers mois de l'année 1900.Il existe également d'autres différences si l'option Calendrier depuis 1904 est activée.Les exemples de code ci-dessous ne traitent pas ces différences.
Utilisation d'un contrôle NamedRange
- Cet exemple illustre des personnalisations au niveau du document.Le code suivant doit être placé dans une classe Sheet, et non dans la classe ThisWorkbook.
Pour stocker une valeur de date dans une plage nommée
Créez un contrôle NamedRange dans la cellule A1.
Dim NamedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _ Me.Controls.AddNamedRange(Me.Range("A1"), "NamedRange1")
Microsoft.Office.Tools.Excel.NamedRange NamedRange1 = this.Controls.AddNamedRange(this.get_Range("A1"), "NamedRange1");
Définissez la date d'aujourd'hui comme valeur pour NamedRange1.
Dim dt As DateTime = DateTime.Now NamedRange1.Value2 = dt
DateTime dt = DateTime.Now; NamedRange1.Value2 = dt;
Pour récupérer une valeur de date d'une plage nommée
Récupérez la valeur de date de NamedRange1.
Dim value As Object = NamedRange1.Value2 If Not value Is Nothing Then If TypeOf value Is Double Then dt = DateTime.FromOADate(CType(value, Double)) Else DateTime.TryParse(CType(value, String), dt) End If End If MessageBox.Show(dt.ToString())
object value = NamedRange1.Value2; if (value != null) { if (value is double) { dt = DateTime.FromOADate((double)value); } else { DateTime.TryParse((string)value, out dt); } } MessageBox.Show(dt.ToString());
Utilisation de plages Excel natives
Pour stocker une valeur de date dans un objet de plage Excel natif
Créez un Range qui présente la cellule A1.
Dim rng As Excel.Range = Me.Application.Range("A1")
Excel.Range rng = this.Application.get_Range("A1");
Définissez la date d'aujourd'hui comme valeur pour rng.
Dim dt As DateTime = DateTime.Now rng.Value2 = dt
DateTime dt = DateTime.Now; rng.Value2 = dt;
Pour extraire une valeur de date à partir d'un objet de plage Excel natif
Récupérez la valeur de date de rng.
Dim value As Object = rng.Value2 If Not value Is Nothing Then If TypeOf value Is Double Then dt = DateTime.FromOADate(CType(value, Double)) Else DateTime.TryParse(CType(value, String), dt) End If End If System.Windows.Forms.MessageBox.Show(dt.ToString())
object value = rng.Value2; if (value != null) { if (value is double) { dt = DateTime.FromOADate((double)value); } else { DateTime.TryParse((string)value, out dt); } } System.Windows.Forms.MessageBox.Show(dt.ToString());
Voir aussi
Tâches
Comment : faire référence aux plages de la feuille de calcul dans le code par programmation
Comment : ajouter des contrôles NamedRange aux feuilles de calcul
Concepts
Paramètres optionnels dans les solutions Office