Comment ouvrir plusieurs fichiers Excel depuis 1 liste sur 1 fichier?
haleakala78
Messages postés11Date d'inscriptionmardi 30 août 2005StatutMembreDernière intervention23 mars 2006
-
6 févr. 2006 à 10:56
haleakala78
Messages postés11Date d'inscriptionmardi 30 août 2005StatutMembreDernière intervention23 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
A voir également:
Comment ouvrir plusieurs fichiers Excel depuis 1 liste sur 1 fichier?
haleakala78
Messages postés11Date d'inscriptionmardi 30 août 2005StatutMembreDernière intervention23 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...
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 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.
haleakala78
Messages postés11Date d'inscriptionmardi 30 août 2005StatutMembreDernière intervention23 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