Share via


Comment : stocker et récupérer des valeurs de date dans des plages Excel

Mise à jour : novembre 2007

S'applique à

Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et versions de Microsoft Office spécifiés.

Type de projet

  • Projets au niveau du document

  • Projets au niveau de l'application

Version de Microsoft Office

  • Excel 2003

  • Excel 2007

Pour plus d'informations, consultez Fonctionnalités disponibles par type d'application et de projet.

Vous pouvez stocker et extraire des valeurs dans un contrôle NamedRange ou un objet de plage Excel natif.

Si vous stockez une valeur de date qui tombe le 1/1/1900 ou après dans une plage à l'aide de Visual Studio Tools pour Office, elle est stockée au format OLE Automation (OA). 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 1900. Il existe également des 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

  1. 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", missing), "NamedRange1");
    
  2. 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

  1. 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", missing);
    
  2. 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 : envoyer des valeurs à des cellules de feuilles de calcul

Comment : faire référence aux plages de la feuille de calcul dans le code

Comment : ajouter des contrôles NamedRange aux feuilles de calcul

Concepts

Utilisation des plages

Vue d'ensemble du modèle objet Excel

NamedRange, contrôle

Fonctionnement des paramètres optionnels dans les solutions Office