OVH Cloud OVH Cloud

Localisation des macros

13 réponses
Avatar
rthompson
Boooooooonssoouuuuuuuurrrrrrrrr


Et BOOOOOONNNNNNNNNNEEEEE ANNNNNNNNEEEEEEEEEE

Je reviens vers vous avec un truc qui me bloque tellement souvent que j'en
deviens fou!!

Et pourtant même Misange (et une super bonne année pour toi) y est allé de
son petit cours


Voici le couac


Si on veut qu'une macro réagisse sur un seul fichier ou feuille,
on le met sous VAB dans la feuille question

Et si on veux qu'il soit accessible à tous il faut le mettre dans le fichier
XLStart et dans un module ?????

voilà pour le principe si j'ai bien compris??????????


J'ai récupéré une macro de chez Jack Rubin qui affiche dans la bar
supérieure le nom et le chemin complet du fichier ouvert

Mais il semblerait qu'il faille le mettre dans "This Workbook",

Ce qui fait qu'il faut le copier dans chacun des fichiers ou cette info est
requise

Je suis persuadé qu'il est possible de le rendre actif en permanence
J'ai essayé en le plaçant dans "This Workbook" de XLStart et dans un module
de ce fichier sans succès


Voici la macro


"""""""""""""""""""""""""""""""""""""""""""""""""""""
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Caption = ""
Application.StatusBar = ""
End Sub

Private Sub Workbook_Open()
Application.Caption = ThisWorkbook.Path
Application.StatusBar = ThisWorkbook.FullName

End Sub
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Un grand merci et une EXCELlente année à vous toutes et tous

Rex

10 réponses

1 2
Avatar
CAP2
Salut Rex,

en fait, c'est pas dans un fichier xlStart, mais plutôt dans le fichier
Perso.xls (qui se trouve généralement dans le dossier xlStart).

Perso.xls est le classeur de macros personnelles, qui s'ouvre (caché, mais
présent) dès que tu ouvres Excel...

Ouvre excel, va dans le menu Fenêtre --> Afficher et tu dois voir Perso.xls.

Si tu ne le vois pas, c'est qu'il n'existe pas, et tu peux le créer en
enregistrant une macro bidon (Outils, Macro, Nouvelle Macro et tu le mets
dans le classeur de macros personnelles, ça génèrera Perso, et tu n'auras
plus qu'à mettre ton code dedans pour qu'il soit utilisable quelquesoit le
fihcier...)

Ca marche ?

CAP2
Avatar
rthompson
Ca marche? Ca marche?

Attends une minute que j'essaie quand même, hein

A tout de suite

Rex



"CAP2" a écrit dans le message de news:
%
Salut Rex,

en fait, c'est pas dans un fichier xlStart, mais plutôt dans le fichier
Perso.xls (qui se trouve généralement dans le dossier xlStart).

Perso.xls est le classeur de macros personnelles, qui s'ouvre (caché, mais
présent) dès que tu ouvres Excel...

Ouvre excel, va dans le menu Fenêtre --> Afficher et tu dois voir
Perso.xls.

Si tu ne le vois pas, c'est qu'il n'existe pas, et tu peux le créer en
enregistrant une macro bidon (Outils, Macro, Nouvelle Macro et tu le mets
dans le classeur de macros personnelles, ça génèrera Perso, et tu n'auras
plus qu'à mettre ton code dedans pour qu'il soit utilisable quelquesoit le
fihcier...)

Ca marche ?

CAP2



Avatar
rthompson
Bonjour

Eh ben non!

Donc j'ai pas de perso

J'ouvre Excel (Fichier template s'appelle Start.xls et se trouve dans
xlstart

J'enrigistre une macro et dans VBA je vois un fichier Personal.xls

Je plante ma macro dans un module sans résultat
Je plante ma macro dans "This Worksheet" sans résultat

Donc j'ai l'impression que les fêtes ont été un peu plus lourde que prévu
pour moi

Alors si tu est assez gentil pour expliquer lentement, ou bien je laisse
tomber jusqu'à la semqine prochaine

Le cerveau sera sorti des brumes

A bientôt et encore merci

ET SURTOUT BONNE ANNEE


Rex


"CAP2" a écrit dans le message de news:
%
Salut Rex,

en fait, c'est pas dans un fichier xlStart, mais plutôt dans le fichier
Perso.xls (qui se trouve généralement dans le dossier xlStart).

Perso.xls est le classeur de macros personnelles, qui s'ouvre (caché, mais
présent) dès que tu ouvres Excel...

Ouvre excel, va dans le menu Fenêtre --> Afficher et tu dois voir
Perso.xls.

Si tu ne le vois pas, c'est qu'il n'existe pas, et tu peux le créer en
enregistrant une macro bidon (Outils, Macro, Nouvelle Macro et tu le mets
dans le classeur de macros personnelles, ça génèrera Perso, et tu n'auras
plus qu'à mettre ton code dedans pour qu'il soit utilisable quelquesoit le
fihcier...)

Ca marche ?

CAP2



Avatar
CAP2
Bon, ton fichier Personal.xls correspond à Perso.xls.

Donc à priori, tu devrais mettre ton code dans le ThisWorkbook de
personal.xls

Tu ouvres excel, Alt + F11, et sur la gauche de ton écran, tu dois voir le
ThisWorkbook de personal.xls. Tu doubles-cliques dessus et tu colles ton
code...

C'est mieux ?

CAP2
Avatar
rthompson
Bonjour et merci pour ta rapidité

Mais c'est ce que j'avais fait, je croyais avoir pigé, mais il ne se passe
rien

Pourtant la macro marche

Si je la colle dans le Worksheet de plusieurs fichiers
A chaque fois que j'ouvre un de ces fichiers, il me mets le chemin complet
en haut de l'écran

Je ne comprends pas

Alors si tu as une idée, je suis preneur,
sinon j'attends le week-end

En tous les cas merci pour ton aide

Rex


"CAP2" a écrit dans le message de news:
%23g1$
Bon, ton fichier Personal.xls correspond à Perso.xls.

Donc à priori, tu devrais mettre ton code dans le ThisWorkbook de
personal.xls

Tu ouvres excel, Alt + F11, et sur la gauche de ton écran, tu dois voir le
ThisWorkbook de personal.xls. Tu doubles-cliques dessus et tu colles ton
code...

C'est mieux ?

CAP2



Avatar
CAP2
Ben écoute Rex, je suis désolé, mais chez moi ça marche...

As-tu bien collé les deux macros dans le **ThisWorkbook** (et non pas le
Worksheet !!!!) de ton Personal.xls ?

As-tu sauvegardé les modifs apportées à ton Personal ?

As-tu fermé Excel et relancé avec un autre fichier pour voir s'il se
déclenche ?

Teste tout ça, et reviens ;o))

Ca marche ?

CAP2
Avatar
Ange Ounis
Et si on veux qu'il soit accessible à tous il faut le mettre dans le fichier
XLStart et dans un module ?????


Il faut mettre la macro dans le fichier perso.xls (ou personal.xls pour toi si
je comprends bien) ou dans une macro complémentaire. Par ailleurs, ce genre de
"service" est facilité par l'utilisation d'un module de classe qui créée une
instance d'Excel pour "surcharger" les événements d'Excel.
C'est plus simple à faire qu'à expliquer :

1- ouvre un nouveau classeur dans Excel et, dans l'éditeur de code, ajoute un
module de classe à son projet.

2- Nomme ce module de classe 'MonExcel' (par exemple) et recopies-y ce code :

'''''''''''''''''
Public WithEvents AppXl As Application

Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then _
Application.Caption = Wb.Path
End Sub

Private Sub AppXl_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
If Not Wb.Name = ThisWorkbook.Name Then _
Application.Caption = ""
End Sub
'''''''''''''''''

3- Dans le module ThisWorkbook de ce classeur, ajoute ce code :

'''''''''''''''''
Dim HookXL As New MonExcel

Private Sub Workbook_Open()
Set HookXL.AppXl = Application
End Sub
'''''''''''''''''

4- Enregistre ce classeur comme macro complémentaire et vérifie qu'elle est bien
installée (OutilsOptions).
(Tu peux détruire le classeur qui a servi à construire la macro complémentaire).

Voilà, c'est tout...

----------
Ange Ounis
----------

Boooooooonssoouuuuuuuurrrrrrrrr


Et BOOOOOONNNNNNNNNNEEEEE ANNNNNNNNEEEEEEEEEE

Je reviens vers vous avec un truc qui me bloque tellement souvent que j'en
deviens fou!!

Et pourtant même Misange (et une super bonne année pour toi) y est allé de
son petit cours


Voici le couac


Si on veut qu'une macro réagisse sur un seul fichier ou feuille,
on le met sous VAB dans la feuille question

Et si on veux qu'il soit accessible à tous il faut le mettre dans le fichier
XLStart et dans un module ?????

voilà pour le principe si j'ai bien compris??????????


J'ai récupéré une macro de chez Jack Rubin qui affiche dans la bar
supérieure le nom et le chemin complet du fichier ouvert

Mais il semblerait qu'il faille le mettre dans "This Workbook",

Ce qui fait qu'il faut le copier dans chacun des fichiers ou cette info est
requise

Je suis persuadé qu'il est possible de le rendre actif en permanence
J'ai essayé en le plaçant dans "This Workbook" de XLStart et dans un module
de ce fichier sans succès


Voici la macro


"""""""""""""""""""""""""""""""""""""""""""""""""""""
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Caption = ""
Application.StatusBar = ""
End Sub

Private Sub Workbook_Open()
Application.Caption = ThisWorkbook.Path
Application.StatusBar = ThisWorkbook.FullName

End Sub
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Un grand merci et une EXCELlente année à vous toutes et tous

Rex




Avatar
rthompson
Ben voui

Je fais exatement cela

Mais ne te casse pas la tête ce soir

Cela m'est déjà arrivée

Je passe des heures sur un trucs sans résultat et le jour après tout
fonctionne nickel

Donc encore une fois un grand merci

Et à la prochaine

Rex


"CAP2" a écrit dans le message de news:
%
Ben écoute Rex, je suis désolé, mais chez moi ça marche...

As-tu bien collé les deux macros dans le **ThisWorkbook** (et non pas le
Worksheet !!!!) de ton Personal.xls ?

As-tu sauvegardé les modifs apportées à ton Personal ?

As-tu fermé Excel et relancé avec un autre fichier pour voir s'il se
déclenche ?

Teste tout ça, et reviens ;o))

Ca marche ?

CAP2



Avatar
rthompson
Pas ce soir josephine


Mais promis, je regarde demain et je te tiens au courant

Merci et une très bonne année à toi

Rex


"Ange Ounis" a écrit dans le message de news:

Et si on veux qu'il soit accessible à tous il faut le mettre dans le
fichier
XLStart et dans un module ?????


Il faut mettre la macro dans le fichier perso.xls (ou personal.xls pour
toi si je comprends bien) ou dans une macro complémentaire. Par ailleurs,
ce genre de "service" est facilité par l'utilisation d'un module de classe
qui créée une instance d'Excel pour "surcharger" les événements d'Excel.
C'est plus simple à faire qu'à expliquer :

1- ouvre un nouveau classeur dans Excel et, dans l'éditeur de code, ajoute
un module de classe à son projet.

2- Nomme ce module de classe 'MonExcel' (par exemple) et recopies-y ce
code :

'''''''''''''''''
Public WithEvents AppXl As Application

Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then _
Application.Caption = Wb.Path
End Sub

Private Sub AppXl_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As
Boolean)
If Not Wb.Name = ThisWorkbook.Name Then _
Application.Caption = ""
End Sub
'''''''''''''''''

3- Dans le module ThisWorkbook de ce classeur, ajoute ce code :

'''''''''''''''''
Dim HookXL As New MonExcel

Private Sub Workbook_Open()
Set HookXL.AppXl = Application
End Sub
'''''''''''''''''

4- Enregistre ce classeur comme macro complémentaire et vérifie qu'elle
est bien installée (OutilsOptions).
(Tu peux détruire le classeur qui a servi à construire la macro
complémentaire).

Voilà, c'est tout...

----------
Ange Ounis
----------

Boooooooonssoouuuuuuuurrrrrrrrr


Et BOOOOOONNNNNNNNNNEEEEE ANNNNNNNNEEEEEEEEEE

Je reviens vers vous avec un truc qui me bloque tellement souvent que
j'en deviens fou!!

Et pourtant même Misange (et une super bonne année pour toi) y est allé
de son petit cours


Voici le couac


Si on veut qu'une macro réagisse sur un seul fichier ou feuille,
on le met sous VAB dans la feuille question

Et si on veux qu'il soit accessible à tous il faut le mettre dans le
fichier XLStart et dans un module ?????

voilà pour le principe si j'ai bien compris??????????


J'ai récupéré une macro de chez Jack Rubin qui affiche dans la bar
supérieure le nom et le chemin complet du fichier ouvert

Mais il semblerait qu'il faille le mettre dans "This Workbook",

Ce qui fait qu'il faut le copier dans chacun des fichiers ou cette info
est requise

Je suis persuadé qu'il est possible de le rendre actif en permanence
J'ai essayé en le plaçant dans "This Workbook" de XLStart et dans un
module de ce fichier sans succès


Voici la macro


"""""""""""""""""""""""""""""""""""""""""""""""""""""
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Caption = ""
Application.StatusBar = ""
End Sub

Private Sub Workbook_Open()
Application.Caption = ThisWorkbook.Path
Application.StatusBar = ThisWorkbook.FullName

End Sub
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Un grand merci et une EXCELlente année à vous toutes et tous

Rex





Avatar
rthompson
Bonjour


Quand je vous disais qu'il était con le Rex


Bien sur que cela fonctionne

Cela fonctionne même impeccable

MAIS

Les fichiers créer avant ne sont mis à jour

donc il me faidra faire un copié/collé dans tous mes anciens fichiers
;-((((((((

Merci à vous deux et Bonne Année

Rex


"Ange Ounis" a écrit dans le message de news:

Et si on veux qu'il soit accessible à tous il faut le mettre dans le
fichier
XLStart et dans un module ?????


Il faut mettre la macro dans le fichier perso.xls (ou personal.xls pour
toi si je comprends bien) ou dans une macro complémentaire. Par ailleurs,
ce genre de "service" est facilité par l'utilisation d'un module de classe
qui créée une instance d'Excel pour "surcharger" les événements d'Excel.
C'est plus simple à faire qu'à expliquer :

1- ouvre un nouveau classeur dans Excel et, dans l'éditeur de code, ajoute
un module de classe à son projet.

2- Nomme ce module de classe 'MonExcel' (par exemple) et recopies-y ce
code :

'''''''''''''''''
Public WithEvents AppXl As Application

Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then _
Application.Caption = Wb.Path
End Sub

Private Sub AppXl_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As
Boolean)
If Not Wb.Name = ThisWorkbook.Name Then _
Application.Caption = ""
End Sub
'''''''''''''''''

3- Dans le module ThisWorkbook de ce classeur, ajoute ce code :

'''''''''''''''''
Dim HookXL As New MonExcel

Private Sub Workbook_Open()
Set HookXL.AppXl = Application
End Sub
'''''''''''''''''

4- Enregistre ce classeur comme macro complémentaire et vérifie qu'elle
est bien installée (OutilsOptions).
(Tu peux détruire le classeur qui a servi à construire la macro
complémentaire).

Voilà, c'est tout...

----------
Ange Ounis
----------

Boooooooonssoouuuuuuuurrrrrrrrr


Et BOOOOOONNNNNNNNNNEEEEE ANNNNNNNNEEEEEEEEEE

Je reviens vers vous avec un truc qui me bloque tellement souvent que
j'en deviens fou!!

Et pourtant même Misange (et une super bonne année pour toi) y est allé
de son petit cours


Voici le couac


Si on veut qu'une macro réagisse sur un seul fichier ou feuille,
on le met sous VAB dans la feuille question

Et si on veux qu'il soit accessible à tous il faut le mettre dans le
fichier XLStart et dans un module ?????

voilà pour le principe si j'ai bien compris??????????


J'ai récupéré une macro de chez Jack Rubin qui affiche dans la bar
supérieure le nom et le chemin complet du fichier ouvert

Mais il semblerait qu'il faille le mettre dans "This Workbook",

Ce qui fait qu'il faut le copier dans chacun des fichiers ou cette info
est requise

Je suis persuadé qu'il est possible de le rendre actif en permanence
J'ai essayé en le plaçant dans "This Workbook" de XLStart et dans un
module de ce fichier sans succès


Voici la macro


"""""""""""""""""""""""""""""""""""""""""""""""""""""
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Caption = ""
Application.StatusBar = ""
End Sub

Private Sub Workbook_Open()
Application.Caption = ThisWorkbook.Path
Application.StatusBar = ThisWorkbook.FullName

End Sub
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Un grand merci et une EXCELlente année à vous toutes et tous

Rex





1 2