Comment ouvrir plusieurs fichiers Excel depuis 1 liste sur 1 fichier?

haleakala78 Messages postés 11 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 23 mars 2006 - 6 févr. 2006 à 10:56
haleakala78 Messages postés 11 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 23 mars 2006 - 9 févr. 2006 à 13:29
bonjour à tous

j'ai beau m'ameliorer un peu à force de trainer sur les forums, j'ai encore un probleme

j'ai un fichier où sont stockées toutes mes macros
j'ai fabriqué une sorte d'interface dans ce fichier pour ouvrir en rafale un lot de fichiers
dans cette interface, j'ai mis les chemins & noms de fichiers dans les cellules, pour pouvoir plus facilement les modifier dans le futur

et j'ai elaboré ce code qui ne fonctionne pas, car sitot le 1er fichier ouvert, la macro s'arrete toute seule !!

comment faire pour qu'Excel comprenne qu'il doit revenir dans la boucle et traiter la commande VBA ???

merci pr votre aide, parce que là ça commence à m'enerver !!

Sub H1Open()
On Error Resume Next

Dim a As Byte
Dim myfile As String
Dim mypath As String
Dim mymacro As Workbook
Dim rng1 As Range
Dim rng2 As Range


Set mymacro = Workbooks("Biblio_macros.xls")
Set rng1 = Range("c4")
Set rng2 = Range("c37")

For a = rng1.Row To rng2.Row
mypath = rng1.Offset(a - rng1.Row, 0).Value
myfile = rng1.Offset(a - rng1.Row, 1).Value
MsgBox mypath & vbCrLf & myfile
Workbooks.Open mypath & myfile
ThisWorkbook.Activate

Next a

End Sub

4 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
6 févr. 2006 à 11:00
Salut,

As tu essaye de debuguer ta macro en mode pas à pas?

peu etre que tes conditions de boucle ne sont pas celles souhaitees.

@+
Julien
0
haleakala78 Messages postés 11 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 23 mars 2006
6 févr. 2006 à 11:20
non, j'ai trouvé où est le probleme

je re-explique la nature de mon projet

je travaille sur un budget
on a 30 fichiers de 3Mo et +

pour des besoins evidents de rapidité & de consolidation, je monte cette macro qui va me permettre d'alimenter d'autres fichiers, de charges, etc...

à l'origine, parce que j'en ai marre de mettre le meme code identique dans chaque fichier, j'ai decidé de tout regrouper dans un meme fichier "bibliotheque" de macros
parce que j'ai créé un menu en guise de mini-interface pour l'ensemble de mes fichiers, j'ai donc été amené à créer une macro qui vient verifier la deja existence ou non de mon fichier de macros

tout le monde suit ?

le code donne ça:

Private Sub Workbook_Open()
' ouvre le fichier de macros
' verifie si le fichier de macros est ouvert

Dim Myname As String, MyPath As String
Dim Win As Window
Dim IsOpen As Boolean

Myname = "Biblio_Macros.xls"

Application.ScreenUpdating = False
For Each Win In Windows
If Win.Caption = Myname Then
Win.Activate
IsOpen = True
Exit For
End If
Next Win
If Not IsOpen Then Workbooks.Open ThisWorkbook.Path & "" & Myname
ThisWorkbook.Activate
Application.ScreenUpdating = True

End Sub

j'ai testé un fichier où je n'ai pas ce code de test, et le 2eme fichier de ma boucle s'ouvre... !!!

donc, le probleme est le suivant:

comment je dois faire pour que je fasse cohabiter une macro qui ouvre tous mes fichiers, et eviter qu'Excel me réouvre à chaque fois mon fichier de macro ???
et qu'il bugge parce que mon menu est deja ouvert ?

sans parler des gens (les operationnels) qui peuvent à tout moment fermer par inadvertance mon fichier de macros...

c pas simple tout ça !! desolé
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
6 févr. 2006 à 12:08
Bonjour,

Tu peux utiliser cette méthode. Ce code ouvre tous les fichiers Excel
que tu désires dans ton classeur actif, là tu les modifies comme tu
veux et tu enregistres les modifications à la fermeture (pour passer
d'un fichier à l'autre, tu utilises le menu "Fenêtre".

Pour sélectionner tes fichiers, Ctrl +Souris.



Sub OuvreClasseur()

Dim strFiles

Dim xlFiles

Dim blnOuvert As Boolean

Dim strMessage As String

Dim wbk As Workbook

Dim i As Integer

Dim j As Integer



'Affiche la boîte de dialogue Ouvrir

strFiles = Application.GetOpenFilename _

(FileFilter:="Fichiers Excel (*.xls),*.xls", _

Title:="Sélectionnez les fichiers à ouvrir", _

MultiSelect:=True)



'Teste si des fichiers ont été sélectionnés

If TypeName(strFiles) = "Variant()" Then

ReDim xlFiles(UBound(strFiles))

For i = 1 To UBound(strFiles)



'Contrôle l'exention du fichiers

If Right(strFiles(i), 3) = "xls" Then



'Teste si le fichier est déjà ouvert

blnOuvert = False

For Each wbk In Workbooks

If wbk.Path & "" & wbk.Name = strFiles(i) Then

blnOuvert = True

End If

Next wbk



'Stocke le nom de fichiers dans un tableau

If Not blnOuvert Then

j = j + 1

xlFiles(j) = strFiles(i)

strMessage = strMessage & strFiles(i) & vbCr

End If

End If

Next i



'Ouvre tous les fichiers Excel après confirmation

If j > 1 Then

strMessage = "Confirmez-vous l'ouverture des fichiers :" _

& vbCr & strMessage

If MsgBox(strMessage, vbYesNo + vbQuestion) = vbYes Then

For i = 1 To j

Workbooks.Open FileName:=xlFiles(i)

Next i

End If

End If

Else

MsgBox "Aucun fichier sélectionné"

End If

End Sub



jpleroisse



Si une réponse vous convient, cliquez Réponse Acceptée.
0
haleakala78 Messages postés 11 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 23 mars 2006
9 févr. 2006 à 13:29
merci, pr ton coup de main, mais mon probleme ne se situe pas sur la methode employée pour ouvrir les fichiers, mais au niveau de ma macro d'ouverture des fichiers que je souhaite ouvrir...

quelle est la bonne methode pour verifier dans le Workbook_Open que mon fichier de macros est dejaj ouvert ou non?

Actuellement, j'ai ça:

Private Sub Workbook_Open()
' ouvre le fichier de macros
' verifie si le fichier de macros est ouvert

Dim Myname As String
Dim Win As Window
Dim IsOpen As Boolean

Myname = "Biblio_Macros.xls"

Application.ScreenUpdating = False
For Each Win In Windows
If Win.Caption = Myname Then
Win.Activate
IsOpen = True
Exit For
End If
Next Win
If Not IsOpen Then Workbooks.Open ThisWorkbook.Path & "" & Myname
ThisWorkbook.Activate
Application.ScreenUpdating = True

Cette macro empeche d'ouvrir les fichiers à la chaine...
et pourtant j'en ai besoin pour afficher un menu

qui peut m'aider?

est ce impossible?

merci
0
Rejoignez-nous