Activer une macro sur un autre fichier

yakutake83

XLDnaute Occasionnel
Bonjour bonjour!

J'ai un petit problème, et je me disais que vous pourriez peut être m'aider à le résoudre! (en fait, y'a plusieurs problèmes qui sont liés entre eux, donc je préfère ne mettre qu'un seul post résumant tout ça)

1° Je souhaite faire un fichier Excel qui me permette de choisir différentes informations et, suivant les informations sélectionnées, qui active une macro!
Pour être précis, je veux principalement que, en choisissant le nom d'un fichier dans un bouton Parcourir (bouton créé et qui marche), la macro souhaitée s'applique sur le fichier choisi! Sachant que, quel que soit le fichier, il y a les mêmes colonnes avec les mêmes noms! (Pour les fonctions issues des autres informations, je pense que je peux bidouiller à partir de la réponse pour cette question)

2° Mes fichiers sur lesquels j'appliquerai la macro ont tous le même début de nom, mais la fin diffère suivant le mois où le fichier a été créé (si le fichier est créé début juillet 2007, son nom se termine par 0707, si c'est en Avril 2007, c'est 0704, etc...). J'ai besoin, dans la macro, d'utiliser le mois de création, donc de prendre les 2 derniers chiffres du titre! (J'ai besoin de la date de création marquée dans les propriétés, sous l'onglet General (et non celles sous l'onglet Statistiques), donc la méthode
Month(ActiveWorkbook.BuiltinDocumentProperties("creation date"))
ne marche pas!)

Voilà, vous avez les informations principales de mon problème! Si vous arriviez à m'aider, ça sera vraiment génial!
Merci d'avance pour votre aide! Et bonnes vacances à ceux qui en prennent (ce qui n'est pas mon cas)!
 

tirex28

XLDnaute Occasionnel
Re : Activer une macro sur un autre fichier

Bonjour,

1)

>en choisissant le nom d'un fichier dans un bouton Parcourir (bouton créé et qui marche)

Si tu as réussi à récupérer le nom du fichier il te suffit de le passer en parametre à ta macro:
Code:
Sub Parcourir()
Dim NomFichier As String
'Ton code pour obtenir le nom du fichier
MaMacro NomFichier'Appelle ta procédure
End Sub

Sub MaMacro(NomFichier As String)
Workbooks.Open FileName:=NomFichier
'suite
End Sub

2)
>si le fichier est créé début juillet 2007, son nom se termine par 0707, si c'est en Avril 2007, c'est 0704, etc...).

Tu peux donc extraire la date directement du nom du fichier:
Code:
Dim Mois As Integer
Dim nomFichier As String
nomFichier = "Monclasseur0704.xls"

Mois = CInt(Left(Right(nomFichier, 6), 2))
MsgBox Mois 'Renvoie 4

Cordialement,

Tirex28/
 

tirex28

XLDnaute Occasionnel
Re : Activer une macro sur un autre fichier

Bonjour,

C'etait pour faire simple, mais ce qu'il y a de bien avec VBA c'est que tu peux faire ton choix parmi différentes syntaxes:

Code:
NomMacro Argument
NomMacro (Argument)
Call NomMacro(Argument)
NomModule.NomMacro Argument
NomMacro NomArgument:=Argument
Call NomModule.NomMacro(Argument)
Call NomMacro(NomArgument:=Argument)
Application.Run "NomMacro", Argument
NomProjet.NomModule.NomMacro Argument
NomModule.NomMacro NomArgument:=Argument
Call NomProjet.NomModule.NomMacro(Argument)
NomProjet.NomModule.NomMacro NomArgument:=Argument
Call NomProjet.NomModule.NomMacro(NomArgument:=Argument)
Application.Run ThisWorkbook.Name & "!" & "NomMacro", Argument
Application.Run ThisWorkbook.FullName & "!" & "NomMacro", Argument
Application.Run Workbooks(ThisWorkbook.FullName).Name & "!" & "NomMacro", Argument
Application.Run Application.Workbooks(ThisWorkbook.FullName).Name & "!" & "NomMacro", Argument

Et enfin, une solution que j'ai renoncé à employer car elle suppose que la procédure soit la premiere du module:

Code:
Application.Run Application.Workbooks(ThisWorkbook.FullName).Name & "!" & _
ThisWorkbook.VBProject.VBComponents.Item("NomModule").CodeModule.ProcOfLine( _
ThisWorkbook.VBProject.VBComponents.Item("NomModule").CodeModule.CountOfDeclarationLines + 1, 0), _
Argument

Cordialement,:)

Manu/
 

Discussions similaires

Réponses
12
Affichages
317

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 186
dernier inscrit
Eliyass