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 2007 - Excel] récupérer une cellule par son nom


Sujet :

C#

  1. #1
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 141
    Points : 2 189
    Points
    2 189
    Billets dans le blog
    3
    Par défaut [VSTO 2007 - Excel] récupérer une cellule par son nom
    Bonjour,

    voici un code qui me permet de récup une cellule précise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range value = maWork.get_Range((Range)maWork.Cells[param.Row, param.Col], (Range)maWork.Cells[param.Row, param.Col]);
    Mais comment je peux récupérer une cellule "nommée" ? dont l'identifiant, par exemple B12 , a été remplacé : monIdentifiant .

    Ce que j'aimerais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range value = maWork.get_Range( "monIdentifiant " );
    Car en effet, je ne peux pas me baser sur la colonne et ligne.. L'utilisateur peut très bien en rajouter entre temps et donc les index ne seront plus bons..

    Merci d'avance pour vos réponses,

    ps : euh... j'ai jamais vraiment de réponse concernant mes questions VSTO... Si quelqu'un a une adresse d'un forum ou un truc spécialisé, qu'il hésite pas à me le donner non plus.... Les fonctions de base sont très cool, mais dès qu'on sort des sentiers battus c'est plus la même histoire.

  2. #2
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 141
    Points : 2 189
    Points
    2 189
    Billets dans le blog
    3
    Par défaut
    J'ai trouvé, donc sur la feuille active :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Worksheet maWork = ((Worksheet)myWorkbook.Worksheets[param.SheetName]);
     
    string r = myWorkbook.Names.Item(param.getParamName().Replace("@", ""), Type.Missing, Type.Missing).Value;
     
    Range value = maWork.get_Range(r, Type.Missing);
    C'est la pêche à l'info...

  3. #3
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 141
    Points : 2 189
    Points
    2 189
    Billets dans le blog
    3
    Par défaut
    Outre le fait que l'utilisateur peut ajouter des colonnes etc, faisant changer de place la cellule nommée (problème ici résolu) , il peut également changer le nom de la feuille, ou supprimer la feuille.

    Il faut donc récupérer aussi dynamiquement le nom de la feuille en cours dans le "string r" précédent.

  4. #4
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 141
    Points : 2 189
    Points
    2 189
    Billets dans le blog
    3
    Par défaut
    Voici le code pour que quoique vous fassiez, la référence soit toujours bonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Name r = myWorkbook.Names.Item("NomDeCell", Type.Missing, Type.Missing);
     
    Worksheet maWork = ((Worksheet)myWorkbook.Worksheets[r.RefersToRange.Worksheet.Index]);
                        Range value = maWork.get_Range(r, Type.Missing);
    J'ai utilisé mon propre système pour éviter le problème de plusieurs cellules nommées ayant le même nom sur différentes feuilles (et oui... ça va loin le truc... ) .

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

Discussions similaires

  1. [XL-2007] Trouver une cellule par son nom
    Par jmh51 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/08/2013, 12h53
  2. [XL-2007] Fct : Range accès à une cellule par son "index"
    Par Bleys dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/11/2009, 18h43
  3. Réponses: 1
    Dernier message: 02/09/2009, 10h35
  4. Réponses: 1
    Dernier message: 22/01/2009, 15h26
  5. [POI] Appeler une cellule par son nom
    Par Galak extra dans le forum Documents
    Réponses: 9
    Dernier message: 17/06/2008, 14h33

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