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

Excel Discussion :

[Modèle Objet Excel] Est-il possible de récupérer le nom d'une plage de cellules ?


Sujet :

Excel

  1. #1
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut [Modèle Objet Excel] Est-il possible de récupérer le nom d'une plage de cellules ?
    Bonjour à tous,
    Voila mon problème, j'ai une feuille de calcul Excel dans laquelle j'ai nommé une plage de cellules.
    J'ai un programme qui ouvre cette page de calcule et la parcourt.
    Est-ce possible de trouver quelles cases appartiennent à la plage de donnée nommée (en récupérant le nom de la plage) ?
    Merci.

  2. #2
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut
    Apparement j'aurais trouver une fonction CRang::get_Name() qui serait sensée me renvoyer le nom du Range actif seulement lorsque je fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CRange range;
    range.put_Name("TesT");
    range.get_Name();
    Le put_Name fonctionne correctement mais le get_Name me renvoie un nom en Chinois (ou Japonnais)
    Quel est le problème ?

  3. #3
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 104
    Points : 124
    Points
    124
    Par défaut
    Salut,
    la question n'est pas limpide, limpide...
    Connaissant le nom de la plage MaPlage, tu l'adresses par
    Après soit tu travaille globalement sur la range :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msgbox range(MaPlage).address
    range(MaPlage).clearcontents
    Soit cellule par cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim MaCellule as range
    For each MaCellule in MaRange.Cells
         MaCellule.Value = 0
    Next MaCellule

  4. #4
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut
    Bonjour,
    En fait ce que je souhaite faire est :
    - Ouvrir un fichier Excel qui me sert de modèle, remplir ce fichier avec des données et faire des calculs, générer des graphiques etc...
    - Le problème est que la taille des données est variable, il faut donc que le modèle ne présente pas de limite de taille
    - Il faut également que je mette les bonnes données au bon endroit dans le modèle (Ne pas mettre les ventes en dessous des résultats, etc...), donc si ma base n'est pas dans le même ordre que mon modèle, il faut que je trouve une solution pour mettre les bonnes choses au bon endroit (c'est la qu'interviennent les noms de plage)

    Donc je pensais nommer une case par champ que j'ai dans ma base, et lorsque je parcourt mon modèle je récupère le nom de la plage dans laquelle se trouve la cellule active et je copie les données qui correspondent.

    Je ne sais pas si j'ai été très clair
    Merci.

  5. #5
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 104
    Points : 124
    Points
    124
    Par défaut
    Bonsoir,
    Donc si je comprends bien tu veux à l'inverse, partant d'une cellule, savoir si elle porte un nom...
    déjà la question a dans l'absolu moyennement de sens :
    1> il peut y avoir une plage nommée qui recouvre cette cellule,
    2> il peut y avoir une plage nommée qui englobe cette cellule,
    3> elle peut être contenue dans plusieurs plages nommées.

    Mais on peut supposer que tu as conçu ton classeur pour et que ce qui t'intéresse, cest le cas 1.

    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
    Function CommentTuTappelles(MaCell As Range) As String
    Dim MonAdresse As String
    Dim MonName As Name
    Dim i As Long
    With MaCell
        MonAdresse = "=" & .Parent.Name & "!" & .Address
    End With
    With ThisWorkbook.Names
        i = .Count
        While i > 0
            With .Item(i)
                If .RefersTo = MonAdresse Then
                    CommentTuTappelles = .Name
                    i = -1 'on sort
                Else
                     i = i - 1
                End If
            End With
        Wend
    End With
    End Function
    Ça peut se compliquer un peu si tu as des noms exotiques mais le plus gros est là...

  6. #6
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut
    Bonjour et merci,
    Ce serait effectivement le cas 1 ou 2 (Bien que je ne voie pas de grande différence).
    Malheureusement je n'ai jamais fait de VB, je ne suis donc pas bien sur d'avoir tout compris
    Je code en C++/MFC avec le modèle Objet d'Excel.

    Merci quand même.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/01/2015, 17h21
  2. [WD15] est il possible de récupérer l'image d'une liste image
    Par fr832 dans le forum WinDev
    Réponses: 6
    Dernier message: 27/11/2011, 17h33
  3. Est-il possible de récupérer des parametres d'une librairies JS ?
    Par raton_laveur dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/09/2008, 16h33
  4. Réponses: 4
    Dernier message: 21/05/2008, 13h40
  5. Est-il possible de récupérer l'encodage d'une page ?
    Par Christophe Charron dans le forum Langage
    Réponses: 2
    Dernier message: 28/03/2007, 22h37

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