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 :

Chemins de code de retournant pas forcément une valeur


Sujet :

C#

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut Chemins de code de retournant pas forcément une valeur
    Bonjour à tous,

    J'ai une fonction getIndexFromColumn(string p) dont voici le code

    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
     
    private int getIndexFromColumn(string p)
            {
                // Excel application.              
                Microsoft.Office.Interop.Excel.Application appExcel = new Microsoft.Office.Interop.Excel.Application();
                // Opening Workbook get from DialogBox.
                Workbook class_act = appExcel.Workbooks.Open(Main_form.nomFichierOpen, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
     
                // Et on remplit l'autre ComboBox
                // On récupère le nom de la première colonne dans feuil_act
                Worksheet feuil_act = GetWorksheet(NomWorksheet, class_act);
     
                int i=1;
     
                while (feuil_act.Range[feuil_act.Cells[1, i], feuil_act.Cells[1, i]].Value2 != null)
                {
                    if ((string)feuil_act.Range[feuil_act.Cells[1, i], feuil_act.Cells[1, i]].Value2 == p)
                    {
                        return i;
                    }
                    else
                    { i++; }
                }
     
            }
    Voilà en fait le truc c'est que je souhaite récupérer l'indice de la colonne i en fonction de la valeur du string sur le range (2 premières lignes,colonne i)

    Et là évidemment, dans mon else j'incrémente juste parce que je ne veux surtout rien retourner tant que je suis pas rentrer dans mon if.
    Je comprends bien le soucis, il faut retourner une valeur dans le cas ou il ne trouverait pas la valeur que je lui rentre en paramètre.

    Mais le truc c'est que je suis sûr qu'il va la trouver, parce que je récupère cette valeur depuis le classeur.

    Voyez-vous un moyen de contourner le problème ??
    Merci

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Bonjour,

    Ma suggestion serait de re-écrire ton code de la façon suivante :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int i=1;
     
    while (feuil_act.Range[feuil_act.Cells[1, i], feuil_act.Cells[1, i]].Value2 != null)
    {
        if ((string)feuil_act.Range[feuil_act.Cells[1, i], feuil_act.Cells[1, i]].Value2 != p)
            i++;
    }
     
    return i;

  3. #3
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Bonjour,

    Renvoie -1 si jamais la valeur n'est pas trouvée, comme ça tout le monde est content.

    Même si toi tu dis qu'elle ne sortira jamais, dans l'absolu tu ne peux en être sûr et ce jour là tu obtiendras un retour qui a du "sens" (et en attendant tu t'en fiches tu le verras pas ce -1).

    Cordialement !

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut
    Wé mais le truc c'est qu'un return te fait forcément sortir de la fonction non ??
    Donc je veux pas sortir tant qu'il l'a pas trouvé.

    Et si je suis sûr de la trouver cette fois car comme j'ai dit, ce sont des valeurs que je récupère depuis ce fichier Excel, donc je vois pas comment il ne pourrait pas les retrouver.

    Mais c'est bon, j'ai juste changé la condition de mon while.

    J'ai mis un
    TANT QUE (valeur != null && valeur != string p)
    { i++ }
    et quand je sors du while je retourne i.

    Merci !

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/04/2020, 17h57
  2. Réponses: 9
    Dernier message: 17/10/2011, 12h41
  3. WebPart - Tous les chemins ne retournent pas nécessairement une valeur
    Par Spitfire378 dans le forum Développement Sharepoint
    Réponses: 2
    Dernier message: 25/05/2011, 08h41
  4. Réponses: 2
    Dernier message: 05/07/2009, 16h46
  5. Fonction ne retournant pas toujours une valeur
    Par mastochard dans le forum C
    Réponses: 14
    Dernier message: 25/05/2006, 12h13

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