OVH Cloud OVH Cloud

execution de macro

4 réponses
Avatar
jeje02
Bonjour,
est il possible d'exécuter une macro a partir d'un fichier xls pour que cette macro agisse sur un autre fichier xls.
si oui, code dois-je écrire
bien cordialement

4 réponses

Avatar
Michd
Bonjour,
Oui c'est possible.
A ) Tu dois d'abord ouvrir le fichier sur lequel tu veux appliquer la macro.
Dim Wk As workbook
Set Wk = workbooks("C:CheminNomDuFichier.xlsm")
La variable Wk représente ton classeur sur lequel tu veux exécuter la macro,
dans ton code, il s'agit d'utiliser cette variable plutôt que l'expression
Workbooks"(NomDuFichier.xlsm")
Exemple : Il faut apprendre à travailler avec les expressions With ... End
With
With Wk signifie que les lignes de code s'adressent à ce classeur
With .Worksheets("Feuil1") 'observe le "." devant Worksheets , il est
obligatoire, il signifie que la feuil1 appartient au classeur Wk
.Range("A1") = 25 'C'est la même chose. La cellule A1 appartient à la
feuil1 (observe le "." devant range".
comme If ... End If , Lorsque l'on a terminé de travaillé avec un objet,
on ferme avec End With
With Wk
With .Worksheets("Feuil1")
.Range("A1") = 25
.Range("A1") .Interior.Color = Rgb(125,125,125)
.Range("A10").value = "toto"
.Range("a10").Font.Size = 25
End With
End With
MichD
Avatar
jeje02
Le mardi 01 Mai 2018 à 17:31 par jeje02 :
Bonjour,
est il possible d'exécuter une macro a partir d'un fichier xls pour que
cette macro agisse sur un autre fichier xls.
si oui, code dois-je écrire
bien cordialement
bonjour Michd
merci d'avoir pris le temps de me répondre
n'ayant pas compris toute les subtilités que tu m'as énoncé, tu trouveras ci dessous, la macro qui me permet de permuter automatiquement d'une feuille à l'autre toutes les 25 sec dans le fichier toto1
j'aimerai que cette macro puisse s'exécuter dans le fichier toto2 à partir du fichier toto1, bien sûre sans que cette macro agisse dans le fichier toto1
cordialement
Option Explicit
Dim T As Date
Sub Ma_Sub()
T = Now + TimeValue("00:00:25")
Application.OnTime T, "Ma_Sub"
If ActiveSheet.Name = "Feuil7" Then
Worksheets("Feuil10").Select
Else
Worksheets("Feuil7").Select
End If
End Sub
Sub Arrêt_procédure()
Dim Message
If Message = vbYes Then
On Error Resume Next
Application.OnTime T, "Ma_Sub", , False
End If
End Sub
Avatar
Michd
Bonjour,
Colle ce code dans un module STANDARD de ton classeur titi.
On ne peut pas utiliser "Select" si le classeur toto.xlsm n'est pas le classeur actif. J'ai modifié
"Select" pour "Activate"
À chaque 25 secondes, il va y avoir un changement de feuille active, et c'est le classeur toto.xlsm
qui va aussi s'activer!
Option Explicit
Dim T As Date
Dim Wk As Workbook
'---------------------------------------------------------------
Sub Ma_Sub()
Application.ScreenUpdating = False
T = Now + TimeValue("00:00:25")
With Wk
If .ActiveSheet.Name = "Feuil7" Then
.Worksheets("Feuil10").Activate
Else
.Worksheets("Feuil7").Activate
End If
End With
Application.OnTime T, "Ma_Sub"
End Sub
'---------------------------------------------------------------
Sub Départ_procédure()
'Si le fichier Toto est ouvert
Set Wk = Workbooks("Toto.xlsm") 'ou .xlsx
'C'est l'un ou l'autre...mais le fichier toto.xlsm
'doit être ouvert
'Si le fichier toto est fermé
'Set Wk = Workbooks.Open("C:usersTonProfilDocuments" & "Toto.xlsm")
'Choisir la feuille du fichier toto qui va être sélectionné en partant.
Wk.Worksheets("Feuil7").Activate
Call Ma_Sub
End Sub
'---------------------------------------------------------------
Sub Arrêt_procédure()
On Error Resume Next
Application.OnTime T, "Ma_Sub", T, False
End Sub
'---------------------------------------------------------------
MichD
Avatar
jeje02
Le mardi 01 Mai 2018 à 17:31 par jeje02 :
Bonjour,
est il possible d'exécuter une macro a partir d'un fichier xls pour que
cette macro agisse sur un autre fichier xls.
si oui, code dois-je écrire
bien cordialement
Encore merci MichD
Je fais va ce soir
Très cordialement