IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

VSTO La clé spécifiée était vide ou avait une valeur null [Débutant]


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Pôle Etude et Automatisation
    Inscrit en
    avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pôle Etude et Automatisation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : avril 2007
    Messages : 166
    Points : 100
    Points
    100
    Par défaut VSTO La clé spécifiée était vide ou avait une valeur null
    Bonjour,

    J'essaie d'enrichir automatiquement le volet suivant:

    Nom : Panel.png
Affichages : 46
Taille : 14,5 Ko

    avec les données qui se trouvent dans la feuille 3 du classeur plage ("C15:C22")

    Nom : Plage.png
Affichages : 41
Taille : 11,1 Ko

    J'essaie d'adapter le code VB suivant:

    Nom : VB.png
Affichages : 43
Taille : 301,3 Ko

    qui fonctionne.

    Ma conversion à partir de la ligne 31:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    using Microsoft.Office.Interop.Excel;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Office = Microsoft.Office.Core;
     
    namespace ExcelWorkbook1
    {
        partial class ActionsPaneControl1 : UserControl
        {
            public ActionsPaneControl1()
            {
                InitializeComponent();
            }
     
            /*private void button1_Click(object sender, EventArgs e)
            {
                MessageBox.Show("Opération terminée");
            }*/
     
            private void ActionsPaneControl1_Load(object sender, EventArgs e)
            {
                tabControl1.Appearance = TabAppearance.FlatButtons;
                tabControl1.ItemSize = new System.Drawing.Size(0, 1);
                tabControl1.SizeMode = TabSizeMode.Fixed;
     
                SetDefault();
            }
            private bool SetDefault()
            {
                Control myCtrlT;
     
                foreach (Range rng in (Range) Globals.ThisWorkbook.Worksheets[3].Range("C15:C22"))
                {
                    myCtrlT = Controls.Find(rng.Value, true).FirstOrDefault();
                    myCtrlT.Text = rng.Value.Offset(0, 1);
                    myCtrlT.ForeColor = System.Drawing.Color.Gray;
                }
     
                return true;
            }
    Mon erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    ************** Texte de l'exception **************
    System.ArgumentNullException: La clé spécifiée était vide ou avait une valeur null.
    Nom du paramètre*: key
       à System.Windows.Forms.Control.ControlCollection.Find(String key, Boolean searchAllChildren)
       à System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
       à ExcelWorkbook1.ActionsPaneControl1.SetDefault() dans C:\Users\ericm\source\repos\ExcelWorkbook1\ExcelWorkbook1\ActionsPaneControl1.cs:ligne 37
       à ExcelWorkbook1.ActionsPaneControl1.ActionsPaneControl1_Load(Object sender, EventArgs e) dans C:\Users\ericm\source\repos\ExcelWorkbook1\ExcelWorkbook1\ActionsPaneControl1.cs:ligne 30
       à System.Windows.Forms.UserControl.OnLoad(EventArgs e)
       à System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       à System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       à System.Windows.Forms.Control.CreateControl()
       à System.Windows.Forms.Control.SetVisibleCore(Boolean value)
       à Microsoft.Office.Tools.ActionsPaneInternal.SetVisibleCore(Boolean visible)
       à Microsoft.Office.Tools.DockableControlCollection.Add(Control value)
       à ExcelWorkbook1.ThisWorkbook.ThisWorkbook_Startup(Object sender, EventArgs e) dans C:\Users\ericm\source\repos\ExcelWorkbook1\ExcelWorkbook1\ThisWorkbook.cs:ligne 9
       à Microsoft.Office.Tools.Excel.WorkbookImpl.OnStartup()
       à ExcelWorkbook1.ThisWorkbook.FinishInitialization() dans C:\Users\ericm\source\repos\ExcelWorkbook1\ExcelWorkbook1\ThisWorkbook.Designer.cs:ligne 62
       à Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.ExecutePhase(ExecutionPhases executionPhases)
       à Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.Microsoft.VisualStudio.Tools.Office.Runtime.Interop.IExecuteCustomization2.ExecuteEntryPoints()
    Pouvez vous SVP m'apporter une solution?

    Merci

    Eric

  2. #2
    Membre régulier
    Profil pro
    Pôle Etude et Automatisation
    Inscrit en
    avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pôle Etude et Automatisation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : avril 2007
    Messages : 166
    Points : 100
    Points
    100
    Par défaut
    D'autres tests mais la situation est toujours bloquée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    using Microsoft.Office.Interop.Excel;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Office = Microsoft.Office.Core;
    using Microsoft.Office.Tools.Excel;
     
     
     
    namespace ExcelWorkbook1
    {
        partial class ActionsPaneControl1 : UserControl
        {
            public ActionsPaneControl1()
            {
                InitializeComponent();
            }
     
            /*private void button1_Click(object sender, EventArgs e)
            {
                MessageBox.Show("Opération terminée");
            }*/
     
            private void ActionsPaneControl1_Load(object sender, EventArgs e)
            {
                tabControl1.Appearance = TabAppearance.FlatButtons;
                tabControl1.ItemSize = new System.Drawing.Size(0, 1);
                tabControl1.SizeMode = TabSizeMode.Fixed;
     
                SetDefault();
            }
            private bool SetDefault()
            {
                Microsoft.Office.Interop.Excel.Worksheet sh = Globals.ThisWorkbook.Application.Worksheets["Feuil3"];
                Microsoft.Office.Interop.Excel.Range listRng = sh.Range["C15:C22"];
                //Microsoft.Office.Interop.Excel.Range rng;
                Control myCtrl;
     
                foreach (Microsoft.Office.Interop.Excel.Range rng in listRng )
                {
                    myCtrl = this.Controls.Find(rng.Value, true).FirstOrDefault();
                    myCtrl.Text = rng.Value.Offset(0, 1);
                    myCtrl.ForeColor = System.Drawing.Color.Gray;
                }
     
                return true;
            }
    Erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    ************** Texte de l'exception **************
    Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'System.Array' ne contient pas de définition pour 'FirstOrDefault'
       à CallSite.Target(Closure , CallSite , Object )
       à System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)
       à ExcelWorkbook1.ActionsPaneControl1.SetDefault() dans C:\Users\ericm\source\repos\ExcelWorkbook1\ExcelWorkbook1\ActionsPaneControl1.cs:ligne 43
       à ExcelWorkbook1.ActionsPaneControl1.ActionsPaneControl1_Load(Object sender, EventArgs e) dans C:\Users\ericm\source\repos\ExcelWorkbook1\ExcelWorkbook1\ActionsPaneControl1.cs:ligne 33
       à System.Windows.Forms.UserControl.OnLoad(EventArgs e)
       à System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       à System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       à System.Windows.Forms.Control.CreateControl()
       à System.Windows.Forms.Control.SetVisibleCore(Boolean value)
       à Microsoft.Office.Tools.ActionsPaneInternal.SetVisibleCore(Boolean visible)
       à Microsoft.Office.Tools.DockableControlCollection.Add(Control value)
       à ExcelWorkbook1.ThisWorkbook.ThisWorkbook_Startup(Object sender, EventArgs e) dans C:\Users\ericm\source\repos\ExcelWorkbook1\ExcelWorkbook1\ThisWorkbook.cs:ligne 9
       à Microsoft.Office.Tools.Excel.WorkbookImpl.OnStartup()
       à ExcelWorkbook1.ThisWorkbook.FinishInitialization() dans C:\Users\ericm\source\repos\ExcelWorkbook1\ExcelWorkbook1\ThisWorkbook.Designer.cs:ligne 62
       à Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.ExecutePhase(ExecutionPhases executionPhases)
       à Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.Microsoft.VisualStudio.Tools.Office.Runtime.Interop.IExecuteCustomization2.ExecuteEntryPoints()
     
     
    ************** Assemblys chargés **************
    Eric

  3. #3
    Membre régulier
    Profil pro
    Pôle Etude et Automatisation
    Inscrit en
    avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pôle Etude et Automatisation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : avril 2007
    Messages : 166
    Points : 100
    Points
    100
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private bool SetDefault()
            {
                Microsoft.Office.Interop.Excel.Worksheet sh = Globals.ThisWorkbook.Application.Worksheets["Feuil3"];
                Range listRng = sh.Range["C15:C22"];
                foreach (Range rng in listRng )
                {
                    string myKey = rng.Value;
                    Control myCtrl = Controls.Find(myKey, true).FirstOrDefault();  <= is OK
                    myCtrl.Text = rng.Value.offset(0,1);                                   <= is KO offset(0,1)
                    myCtrl.ForeColor = System.Drawing.Color.Gray;
                }
     
                return true;
    Eric

  4. #4
    Membre régulier
    Profil pro
    Pôle Etude et Automatisation
    Inscrit en
    avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pôle Etude et Automatisation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : avril 2007
    Messages : 166
    Points : 100
    Points
    100
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
            private bool SetDefault()
            {
                Microsoft.Office.Interop.Excel.Worksheet sh = Globals.ThisWorkbook.Application.Worksheets["Feuil3"];
                Range listRng = sh.Range["C15:C22"];
                foreach (Range rng in listRng )
                {
                    string myKey = rng.Value;
                    Control myCtrl = Controls.Find(myKey, true).FirstOrDefault();
                    string myValeur = rng.get_Offset(0, 1).Value2;
                    myCtrl.Text = myValeur;
                    myCtrl.ForeColor = System.Drawing.Color.Gray;
                }
     
                return true;
            }
    Eric

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2016] Champ vide et SQL SERVER valeur Null
    Par Piou2fois dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 11/08/2017, 15h55
  2. Réponses: 1
    Dernier message: 30/01/2012, 22h34
  3. Réponses: 2
    Dernier message: 21/12/2007, 16h05
  4. Comment vide-t-on une variable ???!!!
    Par King_T dans le forum Langage
    Réponses: 7
    Dernier message: 12/05/2006, 03h11
  5. [MySQL] Les champs sont vides lors d'une mise à jour (update)
    Par gregos13 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 26/04/2006, 08h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo