begin process at 2012 02 15 03:12:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Algorithme

 > 

Divers

 > 

acceder a un dossier de fichier excel avec une macro


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

acceder a un dossier de fichier excel avec une macro

vendredi 5 octobre 2007 à 17:37:19 | acceder a un dossier de fichier excel avec une macro

secourma

Bonjour
j'ai fait une macro qui permet d'executer une procedure bien determinée.
y a t-il moyen que ma macro peurra acceder a un dossier sur mon disque dur, ce dossier contient une liste de fichier excel, pour que la macro sera executer sur tout les fichiers du dossier.
j'en ai vraiment besoin
je vous remercie par avance de votre aide
lundi 8 octobre 2007 à 12:58:25 | Re : acceder a un dossier de fichier excel avec une macro

secourma

y a personne pour m'aider ? je perds pas espoir . je vous laisse mon email si qq'1 veut me contacter : secourma@yahoo.fr

Merci
mardi 23 octobre 2007 à 15:58:44 | Re : acceder a un dossier de fichier excel avec une macro

caco64

Il est tout à fait possible d'ouvrir et de fermer tous les fichiers excel d'un répertoire donné et d'appliquer des procédures sur le fichier ouvert.
Il faudrait que tu précises ce que tu veux faire exactement.

La haine aveugle n'est pas sourde
mercredi 24 octobre 2007 à 19:46:29 | Re : acceder a un dossier de fichier excel avec une macro

secourma

merci pour l'interet que vous avez accorder a ma demande

j'explique mon probleme: sur le reseau il y a un repertoire qui contient contient un des sous repertoirs, et chaque sous repertoire contient des fichiers excels, je veux que ma macro parcours tous ces fichiers et les enregeistrer en format texte, e puis a la fin les concatener pour avoir un seul fichier texte resultat.

si vous avez une idée, faites le moi savoir

je vous remercie par avance
mercredi 24 octobre 2007 à 20:33:23 | Re : acceder a un dossier de fichier excel avec une macro

caco64

Si ta macro réussit bien à enregistrer le fichier excel au format texte, ce qui ne me paraît pas le plus simple, alors ce n'est pas très difficile de réaliser cette opération sur tous les fichiers excel contenus dans des répertoires.
donne-moi le code que tu utilises pour un fichier donné et j'essaierai de te le modifier pour ce que tu souhaites faire.

La haine aveugle n'est pas sourde
jeudi 25 octobre 2007 à 13:21:06 | Re : acceder a un dossier de fichier excel avec une macro

secourma

Bonjour cacao64, et merci pour ton suivi,

Voici mon code qui permet d'ouvrir un fichier excel, et de parcourir toutes les feuilles du classeur et les enregeistrer en format texte.

Dim shtWorksheet As Worksheet
Dim monfichier As String


Workbooks.Open "nom du fichier"

        For Each shtWorksheet In ActiveWorkbook.Worksheets
        shtWorksheet.Activate
        Nomfeuille = shtWorksheet.Name
   
        ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & Nomfeuille &  ".txt", FileFormat:=xlTextWindows

        Next shtWorksheet

ActiveWorkbook.Close savechanges:=Fals

ce qui me reste maintenant c'est acceder a un repertoire situé sur le reseau, et de prcourir tt les sousrepertoires qui contiennet a leur tours des fichiers excel, et puis executer mon code sur chaque fichier.

Merci

vendredi 26 octobre 2007 à 21:14:46 | Re : acceder a un dossier de fichier excel avec une macro

caco64

Salut,

comme je l'avais prédit, la difficulté ne concerne pas le la recherche des fichiers excel dans des répertoires, mais bien l'enregistrement des fichiers au format txt.
Et ce d'autant plus que lors de l'exécution de la macro, le fichier excel qui lui est associé reste le classeur actif ; et tout autre classeur ouvert ne peut être activé...

J'ai donc pas mal galéré pour modifier le code et le rendre compatible.

J'ajoute que le code fonctionne bien chez moi mais il reste encore largement améliorable notamment dans la gestion des erreurs.
En particulier, il ne gère pas le cas ou un fichier texte du même nom (d'un enregistrement précédent) existe déjà, donc prévois de rajouter la suppression des fichiers existants avant d'enregistrer.

Et surtout, il ne faut surtout pas qu'un fichier à enregistrer soit ouvert, sinon ça m... aussi (il faut aller dans le gestionnaire des tâches pour virer les processus excel en trop).

Je t'envoie le code dans un message suivant.


La haine aveugle n'est pas sourde
vendredi 26 octobre 2007 à 21:19:49 | Re : acceder a un dossier de fichier excel avec une macro

caco64

C'est bien sûr la sub "lanc_proc" qui lance la procédure

Sub lanc_proc()
    Call accede_reseau("C:\test")
    'Call accede_reseau("\\gauss\test")
End Sub

Sub accede_reseau(chemin As String)
Dim fs          'filesystemobject
Dim fr          'répertoire recherché sur le réseau
Dim fr_c        'collection des sous-répertoires du répertoire
Dim fr_1        '1 sous-réperoire de cette collection
Dim ff_c        'collection des fichiers du répertoire
Dim ff_1        '1 fichier de cette collection
Dim typ_fich As String
Dim nom_fich_adresse As String, nom_fich_nom As String


    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fr = fs.GetFolder(chemin)
    Set fr_c = fr.subfolders
    Set ff_c = fr.Files
   
    For Each ff_1 In ff_c
        typ_fich = Right(ff_1.Name, 3)
        If typ_fich = "xls" Then
            nom_fich_nom = ff_1.Name
            nom_fich_adresse = fr.Path & "\" & nom_fich_nom
            Call sauve_format_txt(nom_fich_adresse, nom_fich_nom)
        End If
    Next
   
    For Each fr_1 In fr_c
        Call accede_reseau(fr_1.Path)
    Next
End Sub

Sub sauve_format_txt(monfichieradresse As String, monfichiernom As String)

Dim xlapp As Excel.Application
Dim classeur_a_enr As Workbook
Dim feuille_a_enr As Worksheet
Dim nb_feuil As Long
Dim Nomfeuille As String
Dim adr_enr As String

    Set xlapp = New Excel.Application
    Set classeur_a_enr = xlapp.Workbooks.Open(monfichieradresse)
    nb_feuil = classeur_a_enr.Worksheets.Count
   
    For i = 1 To nb_feuil
        If i <> 1 Then
            Set classeur_a_enr = xlapp.Workbooks.Open(monfichieradresse)
        End If
        Set feuille_a_enr = classeur_a_enr.Sheets(i)
        Nomfeuille = feuille_a_enr.Name
        adr_enr = classeur_a_enr.Path & "\" _
                  & Left(monfichiernom, Len(monfichiernom) - 4) _
                  & "_" & Nomfeuille & ".txt"
       
        feuille_a_enr.SaveAs Filename:=adr_enr, FileFormat:=20
        'feuille_a_enr.SaveAs Filename:=adr_enr, FileFormat:=xlText
       
        Set feuille_a_enr = Nothing
        classeur_a_enr.Close savechanges:=False
        Set classeur_a_enr = Nothing
    Next i
    Set xlapp = Nothing
End Sub


La haine aveugle n'est pas sourde
samedi 27 octobre 2007 à 23:02:28 | Re : acceder a un dossier de fichier excel avec une macro

secourma

Merci beaucoup caco64 pour l'effort que vous avez fait, c'est tres gentil de votre part. votre code marche bien, j'ai fais qq petites rectifications pour qu'il prend en consideration les autres format excel a part le "xls". si non, j'ai remarqué que l'execution prend un peu de temps. y a t-il moyen de le rendre plus rapide pendant l'execution ? merci
dimanche 28 octobre 2007 à 00:45:50 | Re : acceder a un dossier de fichier excel avec une macro

caco64

Je suis heureux que tu aies réussi à l'adapter.

Pour ce qui est du temps, je ne suis pas très qualifié pour te répondre précisément. A mon sens, les opérations d'entrée/sortie sont des opérations très consommatrices en temps et là le programme passe son temps à ouvrir et fermer les fichiers excel. Il le fait autant de fois qu'il y a de feuilles à enregistrer en fait, et ça prend donc beaucoup de temps.
Mais je n'ai pas trouvé de moyen de faire autrement, puisque la commande savecopyas ne permet pas de sauvegarder au format texte.

Dans le code, la commande
Set xlapp = New Excel.Application        ....       xlapp = nothing
est répétée autant de fois qu'il y a de fichiers excel.
Cette commande est en fait nécessaire une seule fois. Si elle prend du temps (ce que je n'ai pas testé mais qui est une possibilité), il est alors possible d'en gagner en l'enlevant de la sub sauve_format et en la plaçant dans la sub lanc_proc (au début pour set xlapp et à la fin pour xlapp = nothing).

Après, je ne sais pas ce que tu appelles lent. Je l'ai testé sur un répertoire renfermant une dizaine de fichiers excel et ça ne prenait pas 30s. C'est long pour ce qu'il y a à faire mais ce n'est pas problématique.
Donc, soit ton nombre de fichiers à traiter est très volumineux, soit c'est ton temps d'accès au réseau qui est en cause.

Tiens-moi au courant si tu trouves quelque chose.


La haine aveugle n'est pas sourde

1 2

Cette discussion est classée dans : fichier, macro, dossier, excel, acceder


Répondre à ce message

Sujets en rapport avec ce message

macro sur un dossier de fichier excel [ par funkay91 ] je souhaite appliquer ma macro sur l'ensemble des fichiers .xls de mon dossier C'est dire j'ai un fichier exel dans lequel j'aurai ma macro qui une fo Macro excel afin de trater un document word [ par frank35 ] Bonjour, Petite question de débutant : J'ai un fichier word (dont le nom change tous les jours) placer sous la racine c:\ Dans un fichier Excel je so Pb d'open de fichier dans une macro EXCEL [ par ggsab62 ] Bonjour,De nouveau je relance ce sujet, car je ne comprends pas à quoi est dûe l'erreur.....Je m'explique, je fais une procédure dans une macro Excel Pb d'open fichier dans Macro Excel [ par ggsab62 ] Bonsoir,G un pb de macro :Il me semble que l'instruction Open ne fonctionne pas ....ex :Open "c:\test.txt" For Output As #1         Incroyable !!!!!!m Problème d'utilisation de macro d'un autre fichier [ par cissou06 ] BonjourJe travaille sur un projet développé en VBA sous Visio et j'ai besoin d'utiliser des macros qui se trouvent dans un fichier Excel. Dans mon cod Ouverture/Fermeture Excel [ par takin55 ] Bonjour à vousje cherche à savoir 2 choses svp : Comment lancer une macro Excel à l'ouverture de ce fichier Excelsans cliquer sur "Voulez vous activer help!!! transfert de données par macro d'un fichier excel [ par perdida ] Bonjour,debutante que je suis, je galere enormement pour construire une macro qui effectuerait la manoeuvre suivante:en fait, j'ai un fichier excel de a l'aide [ par tibogl ] bonjour , je cree actuellement une macro qui est censé copier des pages entières d'autres fichiers excel et les rapatrier dans le nouveau.cependant lo Afficher et sélectionner un fichier d'un dossier comme base pour une macro excel [ par yoleputois ] Bonjour à tous... comme l'indique le titre du forum, chui au bord de la balle dans la tête. J'ai regardé et regardé si je ne trouvais pas une soluss Macro excel perso.xls et évènement commandButton1_click() [ par annielaf ] Bonjour à tous, j'ai un petit problème avec une macro. Je veux créer une macro qui s'exécute seulement sur certain type de fichier excel. Jusque l&#2


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,928 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales