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

MATLAB Discussion :

Récupération de cellule d'une feuille excel avec une boîte de dialogue [Débutant]


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Récupération de cellule d'une feuille excel avec une boîte de dialogue
    Bonjour,

    Je viens vers vous parce que j'ai un petit soucis.

    Je suis entrain de créer un programme sur Matlab pour visualiser des courbes sur un graphes. Ces courbes sont créées à partir de données récupérer dans un fichier excel.

    Je suis débutant. A force de chercher, j'ai réussi à créer mon graphe, à récupérer les données sur un fichier excel quelconque.

    Cependant, dans ce fichier excel, j'aimerais créer une boite de dialogue où l'utilisateur renseignerait pas le nom de la cellule mais la valeur dans la cellule et que à partir de cette valeur, je puisse récupérer la cellule pour l'utiliser dans mon intervalle de sélection de plage de cellules comme vous pouvez voir dans le code ci-dessous.

    Exemple : au lieu de demander à l'utilisateur de rentrer la case C1 (contenant comme donnée 'tc01'), je souhaite demandé à l'utilisateur de rentrer la valeur même tc01.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     robj = exlSheet1.Columns.End(4)
       prompt = {'Première case :';'Deuxième case:';};
        dlg_title = 'Plage de données de mesure';
        num_lines = 1;
       reponse1 = inputdlg(prompt,dlg_title,num_lines);
       numrows = robj.row
       b = sprintf('%s',reponse1{1})
       g = sprintf('%s',reponse1{2})
       dat_range = [b,':',g ,num2str(numrows)]
       rngObj = exlSheet1.Range(dat_range)
    Merci de votre aide (en espérant avoir été clair...)

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Il faut utiliser la méthode Find de l'objet Range :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    range = exlSheet1.Range('A1:Z100');
    cell = range.Find('tc01')
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    D'accord,

    Cependant, à la place que ça soit directement 'tc01', je voudrais que ça soit la réponse qu'a donné l'utilisateur dans la boîte de dialogue : la valeur sera pas forcément 'tc01'.

    Je voudrais renvoyer la réponse de l'utilisateur dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cell = range.Find('tc01')  % Au lieu de 'tc01', mettre la donnée de reponse1{1} par exemple
    Où reponse1{1} correspond à la première réponse de l'utilisateur depuis la boîte de dialogue.

    C'est possible ou non?

    Merciiii

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Euh…
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cell = range.Find(reponse1{1})
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'ai effectué les modifications cependant, il m'indique l'erreur ci-dessous...

    Error using horzcat
    The following error occurred converting from char to opaque:
    Undefined function 'opaque' for input arguments of type 'char'.

    Error in actx_excel/startServ1 (line 193)
    dat_range = [b1,':',g1 ,num2str(numrows)]
    Et 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
     
     exlSheet1 = exlFile.Sheets.Item(newdir);
       robj = exlSheet1.Columns.End(4)
       prompt = {'Première case :';'Deuxième case:';};
        dlg_title = 'Plage de données de mesure';
        num_lines = 1;
       reponse1 = inputdlg(prompt,dlg_title,num_lines);
       numrows = robj.row
     
       range = exlSheet1.Range('A1:BD3')
       b1 = range.Find(reponse1{1})
       g1 = range.Find(reponse1{2})
     
       dat_range = [b1,':',g1 ,num2str(numrows)]
       rngObj = exlSheet1.Range(dat_range)
    Une idée?? S'il vous plait!!

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Que renvoient ces lignes ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    robj = exlSheet1.Columns.End(4)
     
    numrows = robj.row
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Alors,

    robj récupère la dernière colonne sélectionnée dans la plage de données.

    Et numrows récupère la dernière ligne où se trouvent des données.

    Si cela répond à votre question...

    Exemple :


    robj =

    Interface.00020846_0000_0000_C000_000000000046


    numrows =

    25829

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Je n'avais pas lu ton code jusqu'au bout, ma précédente remarque ne sert à rien.

    Si tu avais lu attentivement la documentation de la méthode Find, tu aurais vu qu'elle renvoie un objet Range.

    Il faut donc utiliser b1.Address et g1.Address

    Par contre, je ne comprends pas ce que tu cherches à faire avec la ligne suivante ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dat_range = [b1,':',g1 ,num2str(numrows)]
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    C'est impeccable!!!! Merci beaucoup!!!!

    C'est pour sélectionner toute une plage de données dans la feuille de calcul excel.

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

Discussions similaires

  1. Sélection d'une feuille excel avec une listbox
    Par felibelle dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/07/2022, 17h27
  2. Vérrouillage d'une feuille excel avec une macro sur vba
    Par nsjacques dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/09/2017, 09h13
  3. reprise : Sélection d'une feuille excel avec une listbox
    Par philippe6 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/09/2013, 11h41
  4. [XL-2007] copier une feuille excel d'une instance excel à une autre
    Par marcelisa2 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/03/2012, 23h44
  5. Réponses: 2
    Dernier message: 29/07/2010, 15h16

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