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 :

Excel recherche de chaîne de caractère


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Excel recherche de chaîne de caractère
    Bonjour à tous,

    Je suis en première année de doctorat et j'essaie de travailler sur un fichier excel.
    Je souhaite dans ce fichier excel trouver une chaîne de caractère spécifique qui ce situe dans une cellule et lire la valeur qui ce situe dans la cellule juste à côté de cette chaîne de caractère.

    Par exemple:
    Blabla 1
    Blablabla 2
    Proutdemon 3
    Youhou 4
    J'aimerai par exemple recupérer la valeur 4 se situant à côté de Youhou.

    J'ai essayé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    clear all
    close all
    filename='datasheet.xls';
    [num,txt,raw]=xlsread(filename);
    A=find(raw,'youhou')
    Mais c'est pas grand chose. J'aimerai quelque chose de général.

    Merci bien

  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 309
    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 309
    Points : 52 901
    Points
    52 901
    Par défaut
    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    filename = 'datasheet.xls';
     
    [num, txt, raw] = xlsread(filename);
     
    idx = strcmp(raw, 'Youhou');
     
    num(idx)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Merci pour la réponse. Mais cela ne me retourne pas la valeur numérique situé sur la cellule d'à côté.
    ça me retourne un tableau avec des 0 partout sauf à l'endroit où j'ai Youhou.

    EDIT:

    En fait ce que je souhaite c'est pouvoir automatiser un traçage de courbe. Mon fichier xls est en PJ.
    J'ai beaucoup de ces fichiers excel qui ne font pas forcement la même taille mais ils sont toujours dans cet ordre.
    Ce que je souhaite c'est pouvoir extraire la valeur de "Voxel_size", c'est à dire 2.52 et pouvoir tracer la porosité en fonction de Begin (voxels).

    J'espère que c'est clair.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 265
    Points : 352
    Points
    352
    Par défaut
    chez moi le code de jerom fonctionne
    après je vois possiblement un problème car strcmp sur raw va renvoyer une matrice 4*2 alors que num est en 4*1

    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    clear all
    close all
    filename='C:\Users\cruivo\Desktop\Classeur1.xlsx';
    [num, txt, raw] = xlsread(filename);
     
    idx = strcmp(txt, 'Youhou');
     
    num(idx)
    txt ayant la meme taille que num les indices seront identique
    si tu a d'autre colonne de chiffre ça risque de planter aussi.


    je te conseille de travailler directement sur les raws avec excel car un chiffre peut etre vue comme un caractère en fonction de la mise en forme de la cellule etc...
    dans ce cas ça ressemblerais a ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    [num, txt, raw] = xlsread(filename);
     
    idx = strcmp(raw, 'Youhou');
     
    [x,y]=find(idx);
     newy=y+1;% car ta valeur est la  case à coté
     newx=x;
    Val=raw{newx,newy};
    après a toi de faire les tests pour savoir si Val est un double ou un string ou un single etc... et de le convertir en nombre si besoin (str2double)

    si tu maîtrise la mise en forme de ton excel prend plutôt la première methode


    Edit : Avec ton fichier excel
    code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    clear all
    close all
    filename='C:\Users\cruivo\Desktop\datasheet.xlsx';
    [num, txt, raw] = xlsread(filename);
     
    idx = strcmp(raw, 'Voxel size (µm)');
     
    [x,y]=find(idx);
     newy=y+1;
     newx=x;
    string=raw{newx,newy};
    Voxel_size=str2double(string)
    trace
    Voxel_size =

    2.5200
    est-ce que ça fonctionne de ton coté?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Je viens d'essayer avec les instructions que tu m'as donné et ça a fonctionné. Je t'en remercie!! Voici mon 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
    26
    27
    28
    29
    30
    31
     
    [num, txt, raw] = xlsread(filename);
     
    %%%%Voxel Size%%%%%%%
    idx_VS = strcmp(raw, 'Voxel size (µm)');
    [x_VS,y_VS]=find(idx_VS);
    newy_VS=y_VS+1;% car ta valeur est la case à coté
    newx_VS=x_VS;
    Voxel_Size=raw{newx_VS,newy_VS};
     
    %%%%%Size%%%%%%%%%%%
    idx_size = strcmp(raw, 'Last Z');
    [x_size,y_size]=find(idx_size);
    newy_size=y_size;% car ta valeur est la case à coté
    newx_size=x_size+1;
    Size=raw{newx_size,newy_size};
     
    %%%%%%Slice number and Partial Porosity%%%%%%%%
    idx_SN = strcmp(raw, 'Partial Porosity');
    [x_SN,y_SN]=find(idx_SN);
    newy_SN=y_SN;% car ta valeur est la case à coté
    newx_SN_first=x_SN+2;
    newx_SN_last=newx_SN_first+Size;
    newy_PP=y_SN+2;
    for i=newx_SN_first:newx_SN_last
            SN(i+1-newx_SN_first,1)=raw{i,newy_SN};
            PP(i+1-newx_SN_first,1)=raw{i,newy_PP};
    end
     
        figure(1)
        plot(PP,SN)

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 265
    Points : 352
    Points
    352
    Par défaut
    Citation Envoyé par redui Voir le message
    Je viens d'essayer avec les instructions que tu m'as donné et ça a fonctionné. Je t'en remercie!! Voici mon 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
    26
    27
    28
    29
    30
    31
     
    [num, txt, raw] = xlsread(filename);
     
    %%%%Voxel Size%%%%%%%
    idx_VS = strcmp(raw, 'Voxel size (µm)');
    [x_VS,y_VS]=find(idx_VS);
    newy_VS=y_VS+1;% car ta valeur est la case à coté
    newx_VS=x_VS;
    Voxel_Size=raw{newx_VS,newy_VS};
     
    %%%%%Size%%%%%%%%%%%
    idx_size = strcmp(raw, 'Last Z');
    [x_size,y_size]=find(idx_size);
    newy_size=y_size;% car ta valeur est la case à coté
    newx_size=x_size+1;
    Size=raw{newx_size,newy_size};
     
    %%%%%%Slice number and Partial Porosity%%%%%%%%
    idx_SN = strcmp(raw, 'Partial Porosity');
    [x_SN,y_SN]=find(idx_SN);
    newy_SN=y_SN;% car ta valeur est la case à coté
    newx_SN_first=x_SN+2;
    newx_SN_last=newx_SN_first+Size;
    newy_PP=y_SN+2;
    for i=newx_SN_first:newx_SN_last
            SN(i+1-newx_SN_first,1)=raw{i,newy_SN};
            PP(i+1-newx_SN_first,1)=raw{i,newy_PP};
    end
     
        figure(1)
        plot(PP,SN)


    attention chez moi Voxel_Size=raw{newx_VS,newy_VS}; retourne un string. ça dépend peut être de la version d'excel
    tu devrais utiliser isnumeric :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    tmp=raw{newx_VS,newy_VS};
    if(isnumeric(tmp))
        Voxel_size=tmp;
    else
        Voxel_size=str2double(tmp);
    end

Discussions similaires

  1. Excel recherche de chaîne de caractère
    Par redui dans le forum MATLAB
    Réponses: 0
    Dernier message: 01/12/2016, 16h59
  2. Réponses: 3
    Dernier message: 13/05/2008, 13h11
  3. [Requête] Recherche sur chaîne de caractères
    Par kryss_63 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 13/07/2007, 19h48
  4. Rechercher une chaîne de caractère dans une série de fichier
    Par Edoxituz dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/02/2006, 12h51
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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