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 :

comment ouvrir plusieurs fichiers excel? [Débutant]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2018
    Messages : 47
    Par défaut comment ouvrir plusieurs fichiers excel?
    tout est dans le titre..

    J'ai trouvé en cherchant dans le forum une solution qui a marché pour le demandeur mais je n'arrive pas à l'appliquer (certainement par ce que je n'ai pas compris le fonctionnement de la démarche),
    Quels sont les choses à modifier dans le code proposé (surtout dans la phase selection)?

    ... je ne fais pas la différence entre les fonctions de matlab et les choses qui sont propre à notre cas d'étude dans cet exemple


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [FileName,PathName] = uigetfile('*.xls','Sélectionnez les fichiers excel', 'MultiSelect', 'on'); % pour créer une liste de nom de fichiers à ouvrir
     
    for i_file = 1:length(FileName);
        m{i_file} = xlsread(fullfile(PathName, FileName{i_file}));
    end

  2. #2
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 35
    Par défaut comment ouvrir plusieurs fichiers excel?
    Bonjour Doctorant_GC,

    Les fichiers Excel peuvent avoir deux extensions. Si les fichiers Excel que vous cherchez à charger présentent l'extension '*.xlsx' il est normal que vous ne trouviez pas vos fichiers. On peut voir l'exemple donné comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    fichiersRecherches = '*.xlsx' % L'étoile indique que vous prenez n'importe quel fichier ayant l'extension xlsx
    [FileName,PathName] = uigetfile(fichiersRecherches,'Sélectionnez les fichiers excel', 'MultiSelect', 'on'); % ouvre une fenêtre de navigation windows, vous devez sélectionner les fichiers Excels qui vous intéressent et les sélectionner manuellement. Vu que vous avez activé la fonction de sélection multiple ('MultiSelect', 'on'), vous pouvez sélectionner plusieurs fichiers
     
    for i_file = 1:length(FileName);% Pour chaque fichiers Excel sélectionné
        m{i_file} = xlsread(fullfile(PathName, FileName{i_file})); % Vous enregistrez la première feuille de votre fichier excel dans une variable m
    end
    Si vous souhaitez enregistrer plusieurs feuilles des fichiers Excel (votre autre question https://www.developpez.net/forums/d1...boucle-dessus/), vous devez combiner cette solution avec l'autre réponse que je vous ai donnée et ainsi obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    fichiersRecherches = '*.xlsx' % L'étoile indique que vous prenez n'importe quel fichier ayant l'extension xlsx
    [FileName,PathName] = uigetfile(fichiersRecherches,'Sélectionnez les fichiers excel', 'MultiSelect', 'on'); %
     
    for i_file = 1:length(FileName);% Pour chaque fichier Excel sélectionné
        [~,nomsFeuilles,~] = xlsfinfo(fullfile(PathName, FileName{i_file})); % Trouver les noms des feuilles (type cell)
        for i_sheet=1:size(nomsFeuilles,2) % Pour chaque nom de feuilles
            [~,~,toutesLesFeuilles{i_file,i_sheet}] = xlsread(fullfile(PathName, FileName{i_file}),cell2mat(nomsFeuilles(1,i))) % charger la feuille et la stocker dans une cellule
        end
    end
    toutesLesFeuilles{2,2} %Permet d'accéder à la feuille 2 du deuxième fichier Excel sélectionné
    En espérant avoir répondu à votre question,

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2018
    Messages : 47
    Par défaut
    Bonjour dante22wasa,


    Merci infiniment de vos précisions et retours Maître dante22wasa. Effectivement, mais je les ai séparé par ce qu'il y a deux solutions "théoriques" à mon problème (à mon avis)

    Sachant que chaque fichier contient une seule feuille, je pouvais soit faire les calcul sur chaque fichier séparé et donc d'où la question relative à l'appel de plusieurs fichier excel

    soit je construis un nouveau fichier pour contenir les fichiers excel dans des feuilles (ce que j'ai fais manuellement) et là je fais une boucle sur ces feuilles du même fichier.

    Du coup là je me perds vraiment dans explications détaillées (peut-être que je me suis mal exprimé des le départ)


    quelle solution est meilleure d'après toi ? et quelle structure correspond à cet effet ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 35
    Par défaut
    Bonjour Doctorant_GC,

    Je n'ai pas assez d'élément pour te dire quelle est la meilleure méthode pour classer tes données Excel. De mon côté, je range mes données pour qu'elles soient simples à retrouver naturellement : un fichier Excel par expérience, plusieurs feuilles si l'expérience s'étale sur plusieurs jours ou si j'ai plusieurs éléments à calculer,... Ensuite, je m'arrange pour que Matlab trouve ce dont j'ai besoin (création de scripts spécifiques,...).

    Si la question t'intéresse, je pense que tu trouveras des réponses sur le forum Excel du site.

  5. #5
    Membre averti
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2018
    Messages : 47
    Par défaut
    Bonjour dante22wasa,

    J'ai expérimenté la proposition relative à la lecture de plusieurs fichier qui fonction bien théoriquement, mais une fois appliquée dans mon script il me pose un problème de taille des tableaux qui varient à chaque fois:

    Cell contents assignment to a non-cell array object. (affichée dans le workspace)

    the variable m appears to change size on every loop iteration (within a script). consider preallocating for speed (affichée dans le script)

    J'ai lu en détails la proposition que propose matlab, à savoir :

    Envisagez de préallouer une variable ou un tableau avant d'entrer dans la boucle en utilisant des zéros, des uns, des cellules ou une fonction similaire. Préallouer évite à MATLAB de copier les données d'un tableau à l'autre à l'intérieur de la boucle. Pour obtenir des exemples de code qui préaffectent ou non un tableau, reportez-vous à la section "Preallocating Arrays"

    Qu'est ce que cela veut dire concrètement ?

    Ce problème est causé par le fait que mes tableaux ont une dimension distincte l'un par rapport à l'autre..

    J'ai essayé la solution suivante mais le probleme persiste :

    Désolé de faire mon stréssé par ce que justement ça me stresse

  6. #6
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 35
    Par défaut
    Il s'agit d'une erreur et d'une mise en garde : ce sont deux choses différentes.

    - Concernant la mise en garde Matlab : "the variable m appears to change size on every loop iteration (within a script). consider preallocating for speed (affichée dans le script)"

    Le logiciel Matlab te recommande simplement de fixer la taille de m pour accélérer les calculs ! Sachant que l'on rempli m de 1 jusqu'à length(FileName), il faut simplement mettre avant ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m =cell(1,length(FileName));
    - Concernant l'erreur : Cell contents assignment to a non-cell array object.

    Elle apparaît car tu n'ouvres qu'un seul fichier Excel au lieu de plusieurs et donc FileName n'est pas une cellule mais une chaine de caractères. Ainsi, afin de sécuriser ton implémentation, tu peux ajouter une vérification de la classe de FileName. Tu obtiens donc le code complet suivant (avec quelques modifications) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    fichiersRecherches = '*.xlsx' % L'étoile indique que vous prenez n'importe quel fichier ayant l'extension xlsx
    [FileName,PathName] = uigetfile(fichiersRecherches,'Sélectionnez les fichiers excel', 'MultiSelect', 'on'); % ouvre une fenêtre de navigation windows, 
     
    if iscell(FileName) % Plusieurs fichiers Excel
        m =cell(1,length(FileName)); % Fixer la taile de m
     
        for i_file = 1:size(m,2);% Pour chaque fichier Excel sélectionné
            m{i_file} = xlsread(fullfile(PathName, FileName{i_file})); % Vous enregistrez la première feuille de votre fichier excel dans une variable m
        end
    else
        m = cell(1,1);  % Si l'on s'accorde à conserver le type cellule pour m
        m{1} = xlsread(fullfile(PathName, FileName));
    end
    Rien ne sert de stresser, il faut y aller calmement par étape.

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

Discussions similaires

  1. comment ouvrir plusieurs fichiers excel?
    Par julianauribe dans le forum MATLAB
    Réponses: 6
    Dernier message: 16/04/2009, 15h45
  2. [VBA-OOo] Comment ouvrir un fichier Excel en basic ?
    Par asoka13 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/06/2006, 17h19
  3. Réponses: 6
    Dernier message: 18/05/2006, 09h29
  4. [VBA] Word - Comment ouvrir un fichier excel
    Par le_sonic dans le forum VBA Word
    Réponses: 5
    Dernier message: 28/12/2005, 09h33
  5. comment ouvrir un fichier excel ?
    Par vdavid1982 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/07/2005, 12h05

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