[Excel] Changer le chemin d'accès dans macro

Fermé
Badabo^O - Modifié par Badabo^O le 26/07/2012 à 15:13
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 31 juil. 2012 à 09:04
Bonjour bonjour !

Voilà en fait j'utilise excel depuis pas si longtemps et j'ai commencé à me servir des macros : Waaaaaa c'est magique ! Et oui ça paraît facile quand on n'a pas à coder... Sauf que j'ai un petit souci.


Je vous explique d'abord le principe de mes macros :
Ma première macro permet d'ouvrir 17 fichiers situés dans le répertoire au dessus du fichier excel actuellement ouvert.
Ma deuxième permet de modifier des cellules dans chacun des 17 fichiers ouverts et ma troisième ferme tous les fichiers :)


Jusque là tout marche bien quand j'ai tout initié.


Mais le problème vient que je suis en réseau dans une entreprise, de ce fait il faut pouvoir faire cette opération dans chacun des postes, et cette opération s'effectue à partir de 70 dossiers différents.

En gros j'ai besoin de pouvoir ouvrir de n'importe quel poste dans n'importe quel dossier ces 17 fichiers à l'aide de la macro :)

Sauf que tout marche bien du poste que j'occupe, mais lorsque je bouge, le répertoire reste le même (dans le code) et j'ai besoin de savoir comment changer le répertoire en partant de celui du fichier ouvert^^


L'autre problème est que je ne comprends rien au langage utilisé sur Excel (j'ai fait pas mal de C cette année) et que surtout je n'ai pas le temps de m'y pencher !


Je vous montre mon code, je dois en fait passer de ce chemin d'accès à celui du répertoire au dessus du fichier ouvert puis re rentrer dans une autre dossier, je pensais pouvoir utiliser les "..\" mais ça ne marche pas ici..


Merci énormément pour l'aide que vous pouvez m'apporter :)

ps: désolé pour la lisibilité, apparemment on ne peut pas sauter d'espaces...


Sub OuvertureFichiers() 
' 
' OuvertureFichiers Macro 
' Ouverture des fichiers 
' 

' 
    Sheets("Connaissance générale").Select 
    Workbooks.Open Filename:= _ 
        "../Pack PE V3.0 Outils Phase 2\A2.2 - Quest éthique et comportement du dirigeant.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 2\A2.3 - Analyse matricielle des risques.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 2\B2.1 - Tests de procédures.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 2\A2.1 - Quest analyse risque ano significative CPE.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 3\B3.2 - Planification de la mission.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 3\B3.1 - Quest seuils signification.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 4\A4.1 - Feuilles des variations par cycles.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 4\B4.2.1 - Traitement confirmation des comptes fournisseurs.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 4\B4.2.2 - Traitement confirmation des comptes clients.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 4\B4.3 - Quest Inventaire physique.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 4\B4.4 - Feuilles de travail.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 4\B4.5 - Ratios clés.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 5\A5.1 - Quest de fin de mission.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 5\A5.3 - Note de synthese complementaire.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 5\B5.1 - Quest Controle de l'annexe.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 5\B5.3 - Quest preparation rapport comptes annuels.xls" 
    Workbooks.Open Filename:= _ 
        "Z:\Blabla\CAC\Documentation\Pack PE V3\Pack PE v3.0 juin 2012\Pack PE V3.0 Outils Phase 5\B5.7 - MAJ du dossier permanent.xls" 
End Sub 

// deuxième macro pour la fermeture 


Sub FermetureFichiers() 
' 
' FermetureFichiers Macro 
' Fermeture des fichiers 
' 

' 
    Application.WindowState = xlMinimized 
    Windows("B4.5 - Ratios clés.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("B4.4 - Feuilles de travail.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("B4.3 - Quest Inventaire physique.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("B4.2.2 - Traitement confirmation des comptes clients.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("B4.2.1 - Traitement confirmation des comptes fournisseurs.xls"). _ 
        Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("A4.1 - Feuilles des variations par cycles.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("B3.1 - Quest seuils signification.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("B3.2 - Planification de la mission.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("A2.1 - Quest analyse risque ano significative CPE.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("B2.1 - Tests de procédures.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("A2.3 - Analyse matricielle des risques.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("A2.2 - Quest éthique et comportement du dirigeant.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("A5.1 - Quest de fin de mission.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("A5.3 - Note de synthese complementaire.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("B5.1 - Quest Controle de l'annexe.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("B5.3 - Quest preparation rapport comptes annuels.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
    Windows("B5.7 - MAJ du dossier permanent.xls").Activate 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
End Sub 






A voir également:

3 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
26 juil. 2012 à 16:12
Bonjour,
Oula!
Quel code!

Il y a certainement plus simple, mais voici ce que je te proposes.

En supposant que tes 17 fichiers aient le même nom sur chaque machine de ton réseau, tu peux :
1- choisir le répertoire ou sont enregistrés ces fichiers,
2- les ouvrir un par un
3- faire les modifs
4- enregistrer et fermer un par un

Regarde ce code :
Option Explicit

Sub MaProcedure()
Dim racine As String
Dim NomsFichiers(), i As Byte

'La variable NomsFichiers va stocker... les noms des fichiers à manipuler
NomsFichiers = Array("A2.2 - Quest éthique et comportement du dirigeant.xls", _
    "A2.3 - Analyse matricielle des risques.xls", _
    "B2.1 - Tests de procédures.xls", _
    "A2.1 - Quest analyse risque ano significative CPE.xls", _
    "B3.2 - Planification de la mission.xls", _
    "B3.1 - Quest seuils signification.xls", _
    "A4.1 - Feuilles des variations par cycles.xls", _
    "B4.2.1 - Traitement confirmation des comptes fournisseurs.xls", _
    "B4.2.2 - Traitement confirmation des comptes clients.xls", _
    "B4.3 - Quest Inventaire physique.xls", _
    "B4.4 - Feuilles de travail.xls", _
    "B4.5 - Ratios clés.xls", _
    "A5.1 - Quest de fin de mission.xls", _
    "A5.3 - Note de synthese complementaire.xls", _
    "B5.1 - Quest Controle de l'annexe.xls", _
    "B5.3 - Quest preparation rapport comptes annuels.xls", _
    "B5.7 - MAJ du dossier permanent.xls")

  racine = ChoixDossier()
  If racine = "" Then Exit Sub
'ICI ON VA BOUCLER SUR LES NOMS DES FICHIERS
  For i = 0 To UBound(NomsFichiers)
    'on ouvre un premier fichier
    Workbooks.Open Filename:=racine & "\" & NomsFichiers
    '--------------------------------------------------------------
    '
    'ICI TON CODE DE MODIFS DE CELLULES
    '
    '--------------------------------------------------------------
    'enregistre et ferme
    ActiveWorkbook.Save
    ActiveWindow.Close
  'fichier suivant
  Next
End Sub

Function ChoixDossier()
'Sources :
'http://www.excel-downloads.com/forum/126930-vba-liste-dossiers-et-sous-dossiers-dun-dosssier.html
If Val(Application.Version) >= 10 Then
    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = ActiveWorkbook.Path & "\"
        .Show
        If .SelectedItems.Count > 0 Then
           ChoixDossier = .SelectedItems(1)
        Else
           ChoixDossier = ""
        End If
    End With
Else
    ChoixDossier = InputBox("Répertoire?")
End If
End Function


Par contre, pour l'instant, il faut systématiquement relancer la macro pour faire les fichiers contenus ailleurs.
On verra cela par la suite.
Pour l'instant regarde et teste cette macro.
0
Déjà merci beaucoup de la réponse et du temps que tu as pu passé :)

J'ai un peu de mal à tout comprendre mais bon^^

Mon problème c'est que le répertoire change à chaque fois que je change de dossier (70 dossiers différents)

Donc ce que je me demandais, c'était s'il existait comme répertoire en VBA, un répertoire qui permette d'aller dans le dossier du dessus donc à la racine en gros de ce dossier : Par exemple j'ai un fichier Z:\\blabla\bla\fichier1.xls
et je voudrais aller dans Z:\\blabla\bla\fichier2.xls
C'est pour ça que j'avais pensé à utiliser la convention "..\" qui ne marche pas ici^^

Sinon j'ai pas tout compris dans ton code, à quel endroit choisit-on le répertoire où il va aller chercher les fichiers ?
Et on choisit le répertoire de chaque fichier? ou on relance la macro pour chaque fichier?^^

En tout cas merci beaucoup j'vais tester voir si j'arrive à mettre ça en place :)

PS: ce code je ne l'ai pas fait moi même, je l'ai récupéré de la macro que j'avais enregistrée en faisant les manips moi même donc c'est sûr qu'il n'est pas très beau :p
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
31 juil. 2012 à 09:04
Bonjour

Dis moi ou tu en es...
0