Bonjour à Tous,
Voic mon problème. Je débute en VBA, et je souhaite créer une macro qui suit les étapes suivantes :
1) Ouvrir des fichiers Excel (composés de 12 fenêtres dans lesquelles se trouvent des TCD alimentés par des cubes OLAP)
2) Actualiser les TCD
3) Attendre la fin de l'actualisation
4) Sauvegarder et fermer.
Grâce à différents forum, j'ai pu créer un début de Macro qui reprend les étape 1) et 2).
Sub Actualiser()
Dim Chemin As String
reponse = MsgBox("Voulez-vous actualiser ?", vbYesNo, "Attention")
If reponse = vbYes Then
Application.ScreenUpdating = False
Chemin = ThisWorkbook.Path
Ouvrir Chemin
Application.ScreenUpdating = True
Else: Exit Sub
End If
End Sub
Sub Ouvrir(Chemin As String)
Dim NomFich As String
NomFich = Dir(Chemin & "\Comentarios" & "*.xlsx")
If NomFich = "" Then MsgBox "Aucun fichier n'a été trouvé."
Do While Left(NomFich, 11) = "Comentarios"
Workbooks.Open Chemin & "\" & NomFich
Windows(NomFich).Activate
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save
ActiveWorkbook.Close
NomFich = Dir
Loop
End Sub
Première question, pourquoi si je mets direcetement "ActiveWorkbook.RefreshAll" cela n'actualise pas mon classeur ? Je suis obligé de mettre "Windows(NomFich).Activate" pour que ça marche.
Pour l'étape 3, quelqu'un aurait-il une idée ?
Merci d'avance.
Motus
Voic mon problème. Je débute en VBA, et je souhaite créer une macro qui suit les étapes suivantes :
1) Ouvrir des fichiers Excel (composés de 12 fenêtres dans lesquelles se trouvent des TCD alimentés par des cubes OLAP)
2) Actualiser les TCD
3) Attendre la fin de l'actualisation
4) Sauvegarder et fermer.
Grâce à différents forum, j'ai pu créer un début de Macro qui reprend les étape 1) et 2).
Sub Actualiser()
Dim Chemin As String
reponse = MsgBox("Voulez-vous actualiser ?", vbYesNo, "Attention")
If reponse = vbYes Then
Application.ScreenUpdating = False
Chemin = ThisWorkbook.Path
Ouvrir Chemin
Application.ScreenUpdating = True
Else: Exit Sub
End If
End Sub
Sub Ouvrir(Chemin As String)
Dim NomFich As String
NomFich = Dir(Chemin & "\Comentarios" & "*.xlsx")
If NomFich = "" Then MsgBox "Aucun fichier n'a été trouvé."
Do While Left(NomFich, 11) = "Comentarios"
Workbooks.Open Chemin & "\" & NomFich
Windows(NomFich).Activate
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save
ActiveWorkbook.Close
NomFich = Dir
Loop
End Sub
Première question, pourquoi si je mets direcetement "ActiveWorkbook.RefreshAll" cela n'actualise pas mon classeur ? Je suis obligé de mettre "Windows(NomFich).Activate" pour que ça marche.
Pour l'étape 3, quelqu'un aurait-il une idée ?
Merci d'avance.
Motus