Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro accessible sans ouvrir le fichier d'origine

9 réponses
Avatar
Caroline L.
Bonjour,

je cherche comment avoir des boutons dans la barre d'outils où je vais
affecter une macro mais je désire que cette macro puisse fonctionner même
sans ouvrir le fichier à partir duquel elle a été créée. Vous comprenez ?

merci d'avance chers amis

Caroline

9 réponses

Avatar
michdenis
Bonjour Caroline,

Il est impossible d'exécuter une macro d'un classeur si ce dernier demeure fermer.

Voici quelques commandes qui peuvent être utile à cet effet :


Exécuter une macro d'un autre classeur ... ces lignes de commande ouvriront le classeur si il est fermé.
************************
A )
Nom de la macro : "test1"
Si ton classeur est fermé et que la macro appelée se retrouve dans un module standard :
Application.Run "'C:Mes documentsAnswer.xls'!test1"

Même chose mais si le classeur est déjà ouvert :
Application.Run "Answer.xls!test1"

B ) Si le nom de ton classeur contient des espaces :

L'utilisation des apostrophes "'" permet d'utiliser
un nom de classeur contenant des espaces , sans
ces dernières, point de salut.
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!test1"
Application.Run LaMacro

C) Si la macro appelée est dans un module feuille du classeur au lieu d'être dans un module Standard :

Dans la ligne de commande, tu dois insérer le nom de l'objet "Feuille" que tu retrouves dans la fenêtre VBE (visual basic editor).
Dans la fenêtre de gauche de ton projet, la liste des feuilles est affichée dans ce format : "toto"("Feuil4")
toto = Nom de l'onglet de la feuille
Feuil4 = Propriété Name de l'objet Feuille (worksheet)
Dans la commande suiivante, tu dois utiliser le nom de la feuille et non de l'onglet de la feuille

Si le fichier est ouvert :
Application.Run "modele.xls!Feuil4.test1"

Si le fichier est fermé :
Application.Run "'C:Mes documentsAnswer.xls'!Feuil4.test1"
************************



Salutations!



"Caroline L." a écrit dans le message de news:
Bonjour,

je cherche comment avoir des boutons dans la barre d'outils où je vais
affecter une macro mais je désire que cette macro puisse fonctionner même
sans ouvrir le fichier à partir duquel elle a été créée. Vous comprenez ?

merci d'avance chers amis

Caroline
Avatar
Caroline L.
Bonjour michdenis,

un gros merci pour tes explications très précises, c'est très apprécié.

Je vais préciser ma question (ou mon idée). J'ai créer une barre d'outils
personnalisée. J'y ai inséré des boutons avec macros. Je voudrais l'utiliser
pour plusieurs fichiers (ces fichiers ont la même mise en forme). Mais je ne
veux pas ouvrir ou faire ouvrir par macro le fichier.
J'ai déjà lu (ici sur le forum ou sur exelabo) que l'on peut avoir en
permanence un bouton macro (placé en haut, à côté d'une barre d'outils) et
que la macro fonctionne dans tous nos fichiers excel. Je l'avais même déjà
essayé mais je ne me souviens plus comment le refaire. Je crois qu'il s'agit
d'un projet VBA avec extension xla. J'ai supprimé le bouton que j'avais créé
lors de mes tests mais j'ai toujours un projet VBA dans ALT-F11 et il porte
l'extension xla.
Alors, vois-tu ce à quoi je pense ?

----------------------------------------------------------------------

Je peux aussi t'expliquer le pourquoi de ma question. J'ai créer un fichier
excel avec des macros et une barre d'outils personnalisées (avec macros à
l'intérieur). Lorsque ce fichier est ouvert, l'usager fait un Enregistrer
sous pour créer un nouveau fichier (il aura a faire cette procédure assez
souvent). Alors, tout est beau mais lorsqu'il ré-ouvre le premier fichier,
les macros ne fonctionnent pas, Excel demande d'ouvrir le 2e fichier (et
cela, je veux éviter, d'autant plus qu'il y a un mot de passe pour ouvrir
chaque fichier). J'avais attacher la barre d'outils au fichier mais j'ai
fait des tests sans attacher et c'est pareil.

Donc, je voudrais avoir la barre d'outils "indépendante" des fichiers. Par
exemple, dans la barre d'outils, il pourrait y avoir une macro qui applique
un fond rouge et police gras dans la cellule B5. Cette macro pourrait être
appliqué dans TOUS mes fichiers excel.
Doit-on enregistré la macro dans un fichier particulier ? Bibiothèque de
modèles ou de macros ?


Merci encore

Caroline


"michdenis" a écrit dans le message de news:

Bonjour Caroline,

Il est impossible d'exécuter une macro d'un classeur si ce dernier demeure
fermer.


Voici quelques commandes qui peuvent être utile à cet effet :


Exécuter une macro d'un autre classeur ... ces lignes de commande
ouvriront le classeur si il est fermé.

************************
A )
Nom de la macro : "test1"
Si ton classeur est fermé et que la macro appelée se retrouve dans un
module standard :

Application.Run "'C:Mes documentsAnswer.xls'!test1"

Même chose mais si le classeur est déjà ouvert :
Application.Run "Answer.xls!test1"

B ) Si le nom de ton classeur contient des espaces :

L'utilisation des apostrophes "'" permet d'utiliser
un nom de classeur contenant des espaces , sans
ces dernières, point de salut.
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!test1"
Application.Run LaMacro

C) Si la macro appelée est dans un module feuille du classeur au lieu
d'être dans un module Standard :


Dans la ligne de commande, tu dois insérer le nom de l'objet "Feuille" que
tu retrouves dans la fenêtre VBE (visual basic editor).

Dans la fenêtre de gauche de ton projet, la liste des feuilles est
affichée dans ce format : "toto"("Feuil4")

toto = Nom de l'onglet de la feuille
Feuil4 = Propriété Name de l'objet Feuille (worksheet)
Dans la commande suiivante, tu dois utiliser le nom de la feuille et non
de l'onglet de la feuille


Si le fichier est ouvert :
Application.Run "modele.xls!Feuil4.test1"

Si le fichier est fermé :
Application.Run "'C:Mes documentsAnswer.xls'!Feuil4.test1"
************************



Salutations!



"Caroline L." a écrit dans le message de news:


Bonjour,

je cherche comment avoir des boutons dans la barre d'outils où je vais
affecter une macro mais je désire que cette macro puisse fonctionner même
sans ouvrir le fichier à partir duquel elle a été créée. Vous comprenez ?

merci d'avance chers amis

Caroline





Avatar
LSteph
Bonsoir Caroline,

MichDenis te l'a dit ce n'est pas possible!

En revanche tu peux placer une macro dans un fichier masqué ou dans ton
Perso.xls
personne ne verra de fichier s'ouvrir.
Mais ton perso n'étant pas le perso des autres , mieux vaudra sans doute un
fichier.
Le fichier peut être placé dans xlstart ou xlouvrir selon la version d'excel

Le principe :
tu ouvres un classeur
tu y crée une macro tu fermes vbe
tu l'enregistres dans xlstart sans le fermer.
Puis tu va dans le menu fenêtre: Masquer
Tu quittes
Excel te demande si tu veux enregistrer les modifications
tu dis oui.
Quand tu rouvres excel le fichier est ouvert mais ne se voit pas.
Pour le faire réapparaître
menu fenêtre afficher.

lSteph


"Caroline L." a écrit dans le message de news:

Bonjour michdenis,

un gros merci pour tes explications très précises, c'est très apprécié.

Je vais préciser ma question (ou mon idée). J'ai créer une barre d'outils
personnalisée. J'y ai inséré des boutons avec macros. Je voudrais
l'utiliser
pour plusieurs fichiers (ces fichiers ont la même mise en forme). Mais je
ne
veux pas ouvrir ou faire ouvrir par macro le fichier.
J'ai déjà lu (ici sur le forum ou sur exelabo) que l'on peut avoir en
permanence un bouton macro (placé en haut, à côté d'une barre d'outils) et
que la macro fonctionne dans tous nos fichiers excel. Je l'avais même déjà
essayé mais je ne me souviens plus comment le refaire. Je crois qu'il
s'agit
d'un projet VBA avec extension xla. J'ai supprimé le bouton que j'avais
créé
lors de mes tests mais j'ai toujours un projet VBA dans ALT-F11 et il
porte
l'extension xla.
Alors, vois-tu ce à quoi je pense ?

----------------------------------------------------------------------

Je peux aussi t'expliquer le pourquoi de ma question. J'ai créer un
fichier
excel avec des macros et une barre d'outils personnalisées (avec macros à
l'intérieur). Lorsque ce fichier est ouvert, l'usager fait un Enregistrer
sous pour créer un nouveau fichier (il aura a faire cette procédure assez
souvent). Alors, tout est beau mais lorsqu'il ré-ouvre le premier fichier,
les macros ne fonctionnent pas, Excel demande d'ouvrir le 2e fichier (et
cela, je veux éviter, d'autant plus qu'il y a un mot de passe pour ouvrir
chaque fichier). J'avais attacher la barre d'outils au fichier mais j'ai
fait des tests sans attacher et c'est pareil.

Donc, je voudrais avoir la barre d'outils "indépendante" des fichiers. Par
exemple, dans la barre d'outils, il pourrait y avoir une macro qui
applique
un fond rouge et police gras dans la cellule B5. Cette macro pourrait être
appliqué dans TOUS mes fichiers excel.
Doit-on enregistré la macro dans un fichier particulier ? Bibiothèque de
modèles ou de macros ?


Merci encore

Caroline


"michdenis" a écrit dans le message de news:

Bonjour Caroline,

Il est impossible d'exécuter une macro d'un classeur si ce dernier
demeure
fermer.


Voici quelques commandes qui peuvent être utile à cet effet :


Exécuter une macro d'un autre classeur ... ces lignes de commande
ouvriront le classeur si il est fermé.

************************
A )
Nom de la macro : "test1"
Si ton classeur est fermé et que la macro appelée se retrouve dans un
module standard :

Application.Run "'C:Mes documentsAnswer.xls'!test1"

Même chose mais si le classeur est déjà ouvert :
Application.Run "Answer.xls!test1"

B ) Si le nom de ton classeur contient des espaces :

L'utilisation des apostrophes "'" permet d'utiliser
un nom de classeur contenant des espaces , sans
ces dernières, point de salut.
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!test1"
Application.Run LaMacro

C) Si la macro appelée est dans un module feuille du classeur au lieu
d'être dans un module Standard :


Dans la ligne de commande, tu dois insérer le nom de l'objet "Feuille"
que
tu retrouves dans la fenêtre VBE (visual basic editor).

Dans la fenêtre de gauche de ton projet, la liste des feuilles est
affichée dans ce format : "toto"("Feuil4")

toto = Nom de l'onglet de la feuille
Feuil4 = Propriété Name de l'objet Feuille (worksheet)
Dans la commande suiivante, tu dois utiliser le nom de la feuille et non
de l'onglet de la feuille


Si le fichier est ouvert :
Application.Run "modele.xls!Feuil4.test1"

Si le fichier est fermé :
Application.Run "'C:Mes documentsAnswer.xls'!Feuil4.test1"
************************



Salutations!



"Caroline L." a écrit dans le message de news:


Bonjour,

je cherche comment avoir des boutons dans la barre d'outils où je vais
affecter une macro mais je désire que cette macro puisse fonctionner même
sans ouvrir le fichier à partir duquel elle a été créée. Vous comprenez ?

merci d'avance chers amis

Caroline









Avatar
michdenis
Bonjour Caroline,


'-----CRÉATION DE LA MACRO COMPLÉMENTAIRE.......

Lorsque tu crées ton fichier qui va devenir
ta macro complémentaire,

A )
Dans VBE (visual basic editor) du classeur,
Rebaptise ton projetvba d'un nom qui soit
significatif au travail du classeur. Pour
cefaire, tu sélectionnes ton projetVba et
dans la fenêtre des propriétés, tu modifies
VBAProject pour "LeNomRetenu"

B ) Tu enregistres ton fichier comme macro
complémentaire (.xla)

C ) Tu fermes excel.

ENREGISTREMENT DE LA MACRO COMPLÉMENTAIRE...

Sous Windows Xp, lorsque tu sélectionnes comme
type de fichier, Macro complémentaire lors de
l'enregistrement de la macro complémentaire
cette dernière s'enregistre dans ce répertoire :

"C:Documents and SettingsDenisApplication Data
MicrosoftMacros complémentairesdenis.xla"

Si tu enregistres ta macro complémentaire dans ce
répertoire, la macro complémentaire va s'ajouter
tout seule à la liste des macros complémentaires
déjà présentes dans Outils / macro complémentaires.
Cependant pour qu'elle soit active dans ton classeur,
il te restera à la cocher.

Il t'est cependant loisible de choisir le répertoire
de ton choix pour accueuillir la macro complémentaire..
tu devras cependant à l'ouverture d'excel utiliser le
bouton parcourir de la fenêtre des macros complémentaires
pour retrouver et signifier à excel le chemin où tu l'as
enregistrée pour l'ajouter aux macros déjà existantes.

Pour que tes fonctions de ton fichier xla, soient aussi
disponible en VBA dans tes procédures, comme dernière étape,
tu ouvres VBE (visual basic editor), barres des menus / outils
/ références / et tu coches dans la liste, le
nom que tu as donné à ta macro complémentaire (pas le nom du
fichier mais le nom du projet VBA que tu as rebaptisé). Pour
cette dernière étape, elle soit être fait obligatoirement à
la main, il n'y a aucune façon prévue en VBA pour la cocher
dans la liste des références. Pour le développeur, c'est là
une différence majeur entre un Addin (xla) et une référence
(fichier de type dll, ocx ...)

Ainsi tu vas pouvoir appeler directement tous les macros et
les fonctions inscrites dans ce classeur comme s'ils appartenaient
au classeur actif. Cependant, Dans la fenêtre des macros que tu
peux ouvrir par la commande F8, elles ne sont pas visibles. Tu
dois les taper par leur nom.

Ouais ! Comment va pour retrouver le nom des fonctions ou
procédures, si tu les as oubliées :
Dans la fenêtre VBe, sélectionne ta macro complémentaires et
clique sur le bouton "explorateur d'objets", les procédures
de la macro xla vont être en caractère gras.


Voici une macro qui suit permet d'effectuer automatiquement
le chargement de la macro complémentaire et de la cocher
dans la fenêtre des macro complémentaires.( non pas dans la
fenêtre des références en vbe si tu dois l'utiliser.

'-------------------------------------------------
Private Sub Workbook_Open()

Dim Fichier As String

Fichier = "C:Documents and SettingsDenis" & _
"Application DataMicrosoftMacros complémentairesdenis.xla"

'Extraire seulement le nom du fichier de la chaîne de caractères
File = Right(Fichier, Len(Fichier) - InStrRev(Fichier, ""))
'Pour enlever l'extention du fichier
file = Left(file, Len(file) - 4)

'Cette ligne de code va ajouter la macro complémentaire
'à la liste des macros complémentaires du menu outils /
'macro complémentaires
Application.AddIns.Add Fichier

'cette ligne de code va cocher cette macro complémentaire
'dans la liste
Application.AddIns(File).Installed = True

End Sub
'-------------------------------------------------


P.S. Pour ce qui est de la gestion d'une barre d'outils,
tu pourras insérer le code dans ton fichier xla. La
création du code (exemple) existe déjà sur le site
de Frédéric Sigonneau.



Salutations!




"Caroline L." a écrit dans le message de news:
Bonjour michdenis,

un gros merci pour tes explications très précises, c'est très apprécié.

Je vais préciser ma question (ou mon idée). J'ai créer une barre d'outils
personnalisée. J'y ai inséré des boutons avec macros. Je voudrais l'utiliser
pour plusieurs fichiers (ces fichiers ont la même mise en forme). Mais je ne
veux pas ouvrir ou faire ouvrir par macro le fichier.
J'ai déjà lu (ici sur le forum ou sur exelabo) que l'on peut avoir en
permanence un bouton macro (placé en haut, à côté d'une barre d'outils) et
que la macro fonctionne dans tous nos fichiers excel. Je l'avais même déjà
essayé mais je ne me souviens plus comment le refaire. Je crois qu'il s'agit
d'un projet VBA avec extension xla. J'ai supprimé le bouton que j'avais créé
lors de mes tests mais j'ai toujours un projet VBA dans ALT-F11 et il porte
l'extension xla.
Alors, vois-tu ce à quoi je pense ?

----------------------------------------------------------------------

Je peux aussi t'expliquer le pourquoi de ma question. J'ai créer un fichier
excel avec des macros et une barre d'outils personnalisées (avec macros à
l'intérieur). Lorsque ce fichier est ouvert, l'usager fait un Enregistrer
sous pour créer un nouveau fichier (il aura a faire cette procédure assez
souvent). Alors, tout est beau mais lorsqu'il ré-ouvre le premier fichier,
les macros ne fonctionnent pas, Excel demande d'ouvrir le 2e fichier (et
cela, je veux éviter, d'autant plus qu'il y a un mot de passe pour ouvrir
chaque fichier). J'avais attacher la barre d'outils au fichier mais j'ai
fait des tests sans attacher et c'est pareil.

Donc, je voudrais avoir la barre d'outils "indépendante" des fichiers. Par
exemple, dans la barre d'outils, il pourrait y avoir une macro qui applique
un fond rouge et police gras dans la cellule B5. Cette macro pourrait être
appliqué dans TOUS mes fichiers excel.
Doit-on enregistré la macro dans un fichier particulier ? Bibiothèque de
modèles ou de macros ?


Merci encore

Caroline


"michdenis" a écrit dans le message de news:

Bonjour Caroline,

Il est impossible d'exécuter une macro d'un classeur si ce dernier demeure
fermer.


Voici quelques commandes qui peuvent être utile à cet effet :


Exécuter une macro d'un autre classeur ... ces lignes de commande
ouvriront le classeur si il est fermé.

************************
A )
Nom de la macro : "test1"
Si ton classeur est fermé et que la macro appelée se retrouve dans un
module standard :

Application.Run "'C:Mes documentsAnswer.xls'!test1"

Même chose mais si le classeur est déjà ouvert :
Application.Run "Answer.xls!test1"

B ) Si le nom de ton classeur contient des espaces :

L'utilisation des apostrophes "'" permet d'utiliser
un nom de classeur contenant des espaces , sans
ces dernières, point de salut.
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!test1"
Application.Run LaMacro

C) Si la macro appelée est dans un module feuille du classeur au lieu
d'être dans un module Standard :


Dans la ligne de commande, tu dois insérer le nom de l'objet "Feuille" que
tu retrouves dans la fenêtre VBE (visual basic editor).

Dans la fenêtre de gauche de ton projet, la liste des feuilles est
affichée dans ce format : "toto"("Feuil4")

toto = Nom de l'onglet de la feuille
Feuil4 = Propriété Name de l'objet Feuille (worksheet)
Dans la commande suiivante, tu dois utiliser le nom de la feuille et non
de l'onglet de la feuille


Si le fichier est ouvert :
Application.Run "modele.xls!Feuil4.test1"

Si le fichier est fermé :
Application.Run "'C:Mes documentsAnswer.xls'!Feuil4.test1"
************************



Salutations!



"Caroline L." a écrit dans le message de news:


Bonjour,

je cherche comment avoir des boutons dans la barre d'outils où je vais
affecter une macro mais je désire que cette macro puisse fonctionner même
sans ouvrir le fichier à partir duquel elle a été créée. Vous comprenez ?

merci d'avance chers amis

Caroline





Avatar
ClémentMarcotte
Bonjour,

Si tu as VB6, ou que tu connais quelqu'un qui a VB6 ( ou un autre langage
compilé qui le permet), et qui est prêt à mettre la main à la pâte, tu
pourrais te (faire) faire un complément COM (COM add-in) pour Excel.

(En fait, un complément COM, c'est un composant ActiveX, fait et compilé en
fonction d'une application particulière.)

P.S. Si tu v(p)eux poursuivre dans cette voie, il doit y avoir encore des
informations sur MSDN.


"Caroline L." a écrit dans le message de
news:
Bonjour michdenis,

un gros merci pour tes explications très précises, c'est très apprécié.

Je vais préciser ma question (ou mon idée). J'ai créer une barre d'outils
personnalisée. J'y ai inséré des boutons avec macros. Je voudrais
l'utiliser

pour plusieurs fichiers (ces fichiers ont la même mise en forme). Mais je
ne

veux pas ouvrir ou faire ouvrir par macro le fichier.
J'ai déjà lu (ici sur le forum ou sur exelabo) que l'on peut avoir en
permanence un bouton macro (placé en haut, à côté d'une barre d'outils) et
que la macro fonctionne dans tous nos fichiers excel. Je l'avais même déjà
essayé mais je ne me souviens plus comment le refaire. Je crois qu'il
s'agit

d'un projet VBA avec extension xla. J'ai supprimé le bouton que j'avais
créé

lors de mes tests mais j'ai toujours un projet VBA dans ALT-F11 et il
porte

l'extension xla.
Alors, vois-tu ce à quoi je pense ?

----------------------------------------------------------------------

Je peux aussi t'expliquer le pourquoi de ma question. J'ai créer un
fichier

excel avec des macros et une barre d'outils personnalisées (avec macros à
l'intérieur). Lorsque ce fichier est ouvert, l'usager fait un Enregistrer
sous pour créer un nouveau fichier (il aura a faire cette procédure assez
souvent). Alors, tout est beau mais lorsqu'il ré-ouvre le premier fichier,
les macros ne fonctionnent pas, Excel demande d'ouvrir le 2e fichier (et
cela, je veux éviter, d'autant plus qu'il y a un mot de passe pour ouvrir
chaque fichier). J'avais attacher la barre d'outils au fichier mais j'ai
fait des tests sans attacher et c'est pareil.

Donc, je voudrais avoir la barre d'outils "indépendante" des fichiers. Par
exemple, dans la barre d'outils, il pourrait y avoir une macro qui
applique

un fond rouge et police gras dans la cellule B5. Cette macro pourrait être
appliqué dans TOUS mes fichiers excel.
Doit-on enregistré la macro dans un fichier particulier ? Bibiothèque de
modèles ou de macros ?


Merci encore

Caroline


"michdenis" a écrit dans le message de news:

Bonjour Caroline,

Il est impossible d'exécuter une macro d'un classeur si ce dernier
demeure


fermer.

Voici quelques commandes qui peuvent être utile à cet effet :


Exécuter une macro d'un autre classeur ... ces lignes de commande
ouvriront le classeur si il est fermé.

************************
A )
Nom de la macro : "test1"
Si ton classeur est fermé et que la macro appelée se retrouve dans un
module standard :

Application.Run "'C:Mes documentsAnswer.xls'!test1"

Même chose mais si le classeur est déjà ouvert :
Application.Run "Answer.xls!test1"

B ) Si le nom de ton classeur contient des espaces :

L'utilisation des apostrophes "'" permet d'utiliser
un nom de classeur contenant des espaces , sans
ces dernières, point de salut.
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!test1"
Application.Run LaMacro

C) Si la macro appelée est dans un module feuille du classeur au lieu
d'être dans un module Standard :


Dans la ligne de commande, tu dois insérer le nom de l'objet "Feuille"
que


tu retrouves dans la fenêtre VBE (visual basic editor).
Dans la fenêtre de gauche de ton projet, la liste des feuilles est
affichée dans ce format : "toto"("Feuil4")

toto = Nom de l'onglet de la feuille
Feuil4 = Propriété Name de l'objet Feuille (worksheet)
Dans la commande suiivante, tu dois utiliser le nom de la feuille et non
de l'onglet de la feuille


Si le fichier est ouvert :
Application.Run "modele.xls!Feuil4.test1"

Si le fichier est fermé :
Application.Run "'C:Mes documentsAnswer.xls'!Feuil4.test1"
************************



Salutations!



"Caroline L." a écrit dans le message de news:


Bonjour,

je cherche comment avoir des boutons dans la barre d'outils où je vais
affecter une macro mais je désire que cette macro puisse fonctionner
même


sans ouvrir le fichier à partir duquel elle a été créée. Vous comprenez
?



merci d'avance chers amis

Caroline









Avatar
Caroline L.
Re-bonjour michdenis,

Pardonne-moi de te revenir aussi tard mais j'étais sortie pour une partie de
la journée et soirée.

Il y a beaucoup d'informations dans ce que tu m'expliques. Je vais imprimer
ta réponse et je vais faire des tests. Je te donnerai des nouvelles pour te
dire comment tout cela se passe.

Gros merci pour ton aide.

Bonne soirée

Caroline

"michdenis" a écrit dans le message de news:
upP6q$
Bonjour Caroline,


'-----CRÉATION DE LA MACRO COMPLÉMENTAIRE.......

Lorsque tu crées ton fichier qui va devenir
ta macro complémentaire,

A )
Dans VBE (visual basic editor) du classeur,
Rebaptise ton projetvba d'un nom qui soit
significatif au travail du classeur. Pour
cefaire, tu sélectionnes ton projetVba et
dans la fenêtre des propriétés, tu modifies
VBAProject pour "LeNomRetenu"

B ) Tu enregistres ton fichier comme macro
complémentaire (.xla)

C ) Tu fermes excel.

ENREGISTREMENT DE LA MACRO COMPLÉMENTAIRE...

Sous Windows Xp, lorsque tu sélectionnes comme
type de fichier, Macro complémentaire lors de
l'enregistrement de la macro complémentaire
cette dernière s'enregistre dans ce répertoire :

"C:Documents and SettingsDenisApplication Data
MicrosoftMacros complémentairesdenis.xla"

Si tu enregistres ta macro complémentaire dans ce
répertoire, la macro complémentaire va s'ajouter
tout seule à la liste des macros complémentaires
déjà présentes dans Outils / macro complémentaires.
Cependant pour qu'elle soit active dans ton classeur,
il te restera à la cocher.

Il t'est cependant loisible de choisir le répertoire
de ton choix pour accueuillir la macro complémentaire..
tu devras cependant à l'ouverture d'excel utiliser le
bouton parcourir de la fenêtre des macros complémentaires
pour retrouver et signifier à excel le chemin où tu l'as
enregistrée pour l'ajouter aux macros déjà existantes.

Pour que tes fonctions de ton fichier xla, soient aussi
disponible en VBA dans tes procédures, comme dernière étape,
tu ouvres VBE (visual basic editor), barres des menus / outils
/ références / et tu coches dans la liste, le
nom que tu as donné à ta macro complémentaire (pas le nom du
fichier mais le nom du projet VBA que tu as rebaptisé). Pour
cette dernière étape, elle soit être fait obligatoirement à
la main, il n'y a aucune façon prévue en VBA pour la cocher
dans la liste des références. Pour le développeur, c'est là
une différence majeur entre un Addin (xla) et une référence
(fichier de type dll, ocx ...)

Ainsi tu vas pouvoir appeler directement tous les macros et
les fonctions inscrites dans ce classeur comme s'ils appartenaient
au classeur actif. Cependant, Dans la fenêtre des macros que tu
peux ouvrir par la commande F8, elles ne sont pas visibles. Tu
dois les taper par leur nom.

Ouais ! Comment va pour retrouver le nom des fonctions ou
procédures, si tu les as oubliées :
Dans la fenêtre VBe, sélectionne ta macro complémentaires et
clique sur le bouton "explorateur d'objets", les procédures
de la macro xla vont être en caractère gras.


Voici une macro qui suit permet d'effectuer automatiquement
le chargement de la macro complémentaire et de la cocher
dans la fenêtre des macro complémentaires.( non pas dans la
fenêtre des références en vbe si tu dois l'utiliser.

'-------------------------------------------------
Private Sub Workbook_Open()

Dim Fichier As String

Fichier = "C:Documents and SettingsDenis" & _
"Application DataMicrosoftMacros complémentairesdenis.xla"

'Extraire seulement le nom du fichier de la chaîne de caractères
File = Right(Fichier, Len(Fichier) - InStrRev(Fichier, ""))
'Pour enlever l'extention du fichier
file = Left(file, Len(file) - 4)

'Cette ligne de code va ajouter la macro complémentaire
'à la liste des macros complémentaires du menu outils /
'macro complémentaires
Application.AddIns.Add Fichier

'cette ligne de code va cocher cette macro complémentaire
'dans la liste
Application.AddIns(File).Installed = True

End Sub
'-------------------------------------------------


P.S. Pour ce qui est de la gestion d'une barre d'outils,
tu pourras insérer le code dans ton fichier xla. La
création du code (exemple) existe déjà sur le site
de Frédéric Sigonneau.



Salutations!




"Caroline L." a écrit dans le message de news:


Bonjour michdenis,

un gros merci pour tes explications très précises, c'est très apprécié.

Je vais préciser ma question (ou mon idée). J'ai créer une barre d'outils
personnalisée. J'y ai inséré des boutons avec macros. Je voudrais
l'utiliser

pour plusieurs fichiers (ces fichiers ont la même mise en forme). Mais je
ne

veux pas ouvrir ou faire ouvrir par macro le fichier.
J'ai déjà lu (ici sur le forum ou sur exelabo) que l'on peut avoir en
permanence un bouton macro (placé en haut, à côté d'une barre d'outils) et
que la macro fonctionne dans tous nos fichiers excel. Je l'avais même déjà
essayé mais je ne me souviens plus comment le refaire. Je crois qu'il
s'agit

d'un projet VBA avec extension xla. J'ai supprimé le bouton que j'avais
créé

lors de mes tests mais j'ai toujours un projet VBA dans ALT-F11 et il
porte

l'extension xla.
Alors, vois-tu ce à quoi je pense ?

----------------------------------------------------------------------

Je peux aussi t'expliquer le pourquoi de ma question. J'ai créer un
fichier

excel avec des macros et une barre d'outils personnalisées (avec macros à
l'intérieur). Lorsque ce fichier est ouvert, l'usager fait un Enregistrer
sous pour créer un nouveau fichier (il aura a faire cette procédure assez
souvent). Alors, tout est beau mais lorsqu'il ré-ouvre le premier fichier,
les macros ne fonctionnent pas, Excel demande d'ouvrir le 2e fichier (et
cela, je veux éviter, d'autant plus qu'il y a un mot de passe pour ouvrir
chaque fichier). J'avais attacher la barre d'outils au fichier mais j'ai
fait des tests sans attacher et c'est pareil.

Donc, je voudrais avoir la barre d'outils "indépendante" des fichiers. Par
exemple, dans la barre d'outils, il pourrait y avoir une macro qui
applique

un fond rouge et police gras dans la cellule B5. Cette macro pourrait être
appliqué dans TOUS mes fichiers excel.
Doit-on enregistré la macro dans un fichier particulier ? Bibiothèque de
modèles ou de macros ?


Merci encore

Caroline


"michdenis" a écrit dans le message de news:

Bonjour Caroline,

Il est impossible d'exécuter une macro d'un classeur si ce dernier
demeure


fermer.

Voici quelques commandes qui peuvent être utile à cet effet :


Exécuter une macro d'un autre classeur ... ces lignes de commande
ouvriront le classeur si il est fermé.

************************
A )
Nom de la macro : "test1"
Si ton classeur est fermé et que la macro appelée se retrouve dans un
module standard :

Application.Run "'C:Mes documentsAnswer.xls'!test1"

Même chose mais si le classeur est déjà ouvert :
Application.Run "Answer.xls!test1"

B ) Si le nom de ton classeur contient des espaces :

L'utilisation des apostrophes "'" permet d'utiliser
un nom de classeur contenant des espaces , sans
ces dernières, point de salut.
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!test1"
Application.Run LaMacro

C) Si la macro appelée est dans un module feuille du classeur au lieu
d'être dans un module Standard :


Dans la ligne de commande, tu dois insérer le nom de l'objet "Feuille"
que


tu retrouves dans la fenêtre VBE (visual basic editor).
Dans la fenêtre de gauche de ton projet, la liste des feuilles est
affichée dans ce format : "toto"("Feuil4")

toto = Nom de l'onglet de la feuille
Feuil4 = Propriété Name de l'objet Feuille (worksheet)
Dans la commande suiivante, tu dois utiliser le nom de la feuille et non
de l'onglet de la feuille


Si le fichier est ouvert :
Application.Run "modele.xls!Feuil4.test1"

Si le fichier est fermé :
Application.Run "'C:Mes documentsAnswer.xls'!Feuil4.test1"
************************



Salutations!



"Caroline L." a écrit dans le message de news:


Bonjour,

je cherche comment avoir des boutons dans la barre d'outils où je vais
affecter une macro mais je désire que cette macro puisse fonctionner
même


sans ouvrir le fichier à partir duquel elle a été créée. Vous comprenez
?



merci d'avance chers amis

Caroline










Avatar
Caroline L.
Bonsoir Clément,

Merci pour l'idée mais non je ne connais personne qui a VB6.

Bonne soirée

Caroline

"ClémentMarcotte" a écrit dans le message de
news: #
Bonjour,

Si tu as VB6, ou que tu connais quelqu'un qui a VB6 ( ou un autre langage
compilé qui le permet), et qui est prêt à mettre la main à la pâte, tu
pourrais te (faire) faire un complément COM (COM add-in) pour Excel.

(En fait, un complément COM, c'est un composant ActiveX, fait et compilé
en

fonction d'une application particulière.)

P.S. Si tu v(p)eux poursuivre dans cette voie, il doit y avoir encore des
informations sur MSDN.


"Caroline L." a écrit dans le message de
news:
Bonjour michdenis,

un gros merci pour tes explications très précises, c'est très apprécié.

Je vais préciser ma question (ou mon idée). J'ai créer une barre
d'outils


personnalisée. J'y ai inséré des boutons avec macros. Je voudrais
l'utiliser

pour plusieurs fichiers (ces fichiers ont la même mise en forme). Mais
je


ne
veux pas ouvrir ou faire ouvrir par macro le fichier.
J'ai déjà lu (ici sur le forum ou sur exelabo) que l'on peut avoir en
permanence un bouton macro (placé en haut, à côté d'une barre d'outils)
et


que la macro fonctionne dans tous nos fichiers excel. Je l'avais même
déjà


essayé mais je ne me souviens plus comment le refaire. Je crois qu'il
s'agit

d'un projet VBA avec extension xla. J'ai supprimé le bouton que j'avais
créé

lors de mes tests mais j'ai toujours un projet VBA dans ALT-F11 et il
porte

l'extension xla.
Alors, vois-tu ce à quoi je pense ?

----------------------------------------------------------------------

Je peux aussi t'expliquer le pourquoi de ma question. J'ai créer un
fichier

excel avec des macros et une barre d'outils personnalisées (avec macros
à


l'intérieur). Lorsque ce fichier est ouvert, l'usager fait un
Enregistrer


sous pour créer un nouveau fichier (il aura a faire cette procédure
assez


souvent). Alors, tout est beau mais lorsqu'il ré-ouvre le premier
fichier,


les macros ne fonctionnent pas, Excel demande d'ouvrir le 2e fichier (et
cela, je veux éviter, d'autant plus qu'il y a un mot de passe pour
ouvrir


chaque fichier). J'avais attacher la barre d'outils au fichier mais j'ai
fait des tests sans attacher et c'est pareil.

Donc, je voudrais avoir la barre d'outils "indépendante" des fichiers.
Par


exemple, dans la barre d'outils, il pourrait y avoir une macro qui
applique

un fond rouge et police gras dans la cellule B5. Cette macro pourrait
être


appliqué dans TOUS mes fichiers excel.
Doit-on enregistré la macro dans un fichier particulier ? Bibiothèque de
modèles ou de macros ?


Merci encore

Caroline


"michdenis" a écrit dans le message de news:

Bonjour Caroline,

Il est impossible d'exécuter une macro d'un classeur si ce dernier
demeure


fermer.

Voici quelques commandes qui peuvent être utile à cet effet :


Exécuter une macro d'un autre classeur ... ces lignes de commande
ouvriront le classeur si il est fermé.

************************
A )
Nom de la macro : "test1"
Si ton classeur est fermé et que la macro appelée se retrouve dans un
module standard :

Application.Run "'C:Mes documentsAnswer.xls'!test1"

Même chose mais si le classeur est déjà ouvert :
Application.Run "Answer.xls!test1"

B ) Si le nom de ton classeur contient des espaces :

L'utilisation des apostrophes "'" permet d'utiliser
un nom de classeur contenant des espaces , sans
ces dernières, point de salut.
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!test1"
Application.Run LaMacro

C) Si la macro appelée est dans un module feuille du classeur au lieu
d'être dans un module Standard :


Dans la ligne de commande, tu dois insérer le nom de l'objet "Feuille"
que


tu retrouves dans la fenêtre VBE (visual basic editor).
Dans la fenêtre de gauche de ton projet, la liste des feuilles est
affichée dans ce format : "toto"("Feuil4")

toto = Nom de l'onglet de la feuille
Feuil4 = Propriété Name de l'objet Feuille (worksheet)
Dans la commande suiivante, tu dois utiliser le nom de la feuille et
non



de l'onglet de la feuille

Si le fichier est ouvert :
Application.Run "modele.xls!Feuil4.test1"

Si le fichier est fermé :
Application.Run "'C:Mes documentsAnswer.xls'!Feuil4.test1"
************************



Salutations!



"Caroline L." a écrit dans le message de news:


Bonjour,

je cherche comment avoir des boutons dans la barre d'outils où je vais
affecter une macro mais je désire que cette macro puisse fonctionner
même


sans ouvrir le fichier à partir duquel elle a été créée. Vous
comprenez



?

merci d'avance chers amis

Caroline













Avatar
Caroline L.
Bonsoir LSteph,

Tout plein d'information ! Je vais faire des tests pour voir... Je vais te
revenir et te donner des nouvelles.

Merci à toi !

Bonne soirée
Caroline

"LSteph" a écrit dans le message de news:
#
Bonsoir Caroline,

MichDenis te l'a dit ce n'est pas possible!

En revanche tu peux placer une macro dans un fichier masqué ou dans ton
Perso.xls
personne ne verra de fichier s'ouvrir.
Mais ton perso n'étant pas le perso des autres , mieux vaudra sans doute
un

fichier.
Le fichier peut être placé dans xlstart ou xlouvrir selon la version
d'excel


Le principe :
tu ouvres un classeur
tu y crée une macro tu fermes vbe
tu l'enregistres dans xlstart sans le fermer.
Puis tu va dans le menu fenêtre: Masquer
Tu quittes
Excel te demande si tu veux enregistrer les modifications
tu dis oui.
Quand tu rouvres excel le fichier est ouvert mais ne se voit pas.
Pour le faire réapparaître
menu fenêtre afficher.

lSteph


"Caroline L." a écrit dans le message de news:

Bonjour michdenis,

un gros merci pour tes explications très précises, c'est très apprécié.

Je vais préciser ma question (ou mon idée). J'ai créer une barre
d'outils


personnalisée. J'y ai inséré des boutons avec macros. Je voudrais
l'utiliser
pour plusieurs fichiers (ces fichiers ont la même mise en forme). Mais
je


ne
veux pas ouvrir ou faire ouvrir par macro le fichier.
J'ai déjà lu (ici sur le forum ou sur exelabo) que l'on peut avoir en
permanence un bouton macro (placé en haut, à côté d'une barre d'outils)
et


que la macro fonctionne dans tous nos fichiers excel. Je l'avais même
déjà


essayé mais je ne me souviens plus comment le refaire. Je crois qu'il
s'agit
d'un projet VBA avec extension xla. J'ai supprimé le bouton que j'avais
créé
lors de mes tests mais j'ai toujours un projet VBA dans ALT-F11 et il
porte
l'extension xla.
Alors, vois-tu ce à quoi je pense ?

----------------------------------------------------------------------

Je peux aussi t'expliquer le pourquoi de ma question. J'ai créer un
fichier
excel avec des macros et une barre d'outils personnalisées (avec macros
à


l'intérieur). Lorsque ce fichier est ouvert, l'usager fait un
Enregistrer


sous pour créer un nouveau fichier (il aura a faire cette procédure
assez


souvent). Alors, tout est beau mais lorsqu'il ré-ouvre le premier
fichier,


les macros ne fonctionnent pas, Excel demande d'ouvrir le 2e fichier (et
cela, je veux éviter, d'autant plus qu'il y a un mot de passe pour
ouvrir


chaque fichier). J'avais attacher la barre d'outils au fichier mais j'ai
fait des tests sans attacher et c'est pareil.

Donc, je voudrais avoir la barre d'outils "indépendante" des fichiers.
Par


exemple, dans la barre d'outils, il pourrait y avoir une macro qui
applique
un fond rouge et police gras dans la cellule B5. Cette macro pourrait
être


appliqué dans TOUS mes fichiers excel.
Doit-on enregistré la macro dans un fichier particulier ? Bibiothèque de
modèles ou de macros ?


Merci encore

Caroline


"michdenis" a écrit dans le message de news:

Bonjour Caroline,

Il est impossible d'exécuter une macro d'un classeur si ce dernier
demeure
fermer.


Voici quelques commandes qui peuvent être utile à cet effet :


Exécuter une macro d'un autre classeur ... ces lignes de commande
ouvriront le classeur si il est fermé.

************************
A )
Nom de la macro : "test1"
Si ton classeur est fermé et que la macro appelée se retrouve dans un
module standard :

Application.Run "'C:Mes documentsAnswer.xls'!test1"

Même chose mais si le classeur est déjà ouvert :
Application.Run "Answer.xls!test1"

B ) Si le nom de ton classeur contient des espaces :

L'utilisation des apostrophes "'" permet d'utiliser
un nom de classeur contenant des espaces , sans
ces dernières, point de salut.
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!test1"
Application.Run LaMacro

C) Si la macro appelée est dans un module feuille du classeur au lieu
d'être dans un module Standard :


Dans la ligne de commande, tu dois insérer le nom de l'objet "Feuille"
que
tu retrouves dans la fenêtre VBE (visual basic editor).

Dans la fenêtre de gauche de ton projet, la liste des feuilles est
affichée dans ce format : "toto"("Feuil4")

toto = Nom de l'onglet de la feuille
Feuil4 = Propriété Name de l'objet Feuille (worksheet)
Dans la commande suiivante, tu dois utiliser le nom de la feuille et
non



de l'onglet de la feuille

Si le fichier est ouvert :
Application.Run "modele.xls!Feuil4.test1"

Si le fichier est fermé :
Application.Run "'C:Mes documentsAnswer.xls'!Feuil4.test1"
************************



Salutations!



"Caroline L." a écrit dans le message de news:


Bonjour,

je cherche comment avoir des boutons dans la barre d'outils où je vais
affecter une macro mais je désire que cette macro puisse fonctionner
même



sans ouvrir le fichier à partir duquel elle a été créée. Vous comprenez
?




merci d'avance chers amis

Caroline













Avatar
ClémentMarcotte
Bonjour,

Merci pour l'idée mais non je ne connais personne qui a VB6


Tu peux vérifier si, à ton bureau, vous êtes abonnés à MSDN. Il est très
possible qu'il soit toujours sur un des DVD jaunes de MSDN.

P.S. Si tu n'es pas trop pressée et que cela ne demande pas trop de temps,
je pourrai peut-être regarder cela.

"Caroline L." a écrit dans le message de
news:
Bonsoir Clément,


Bonne soirée

Caroline

"ClémentMarcotte" a écrit dans le message
de

news: #
Bonjour,

Si tu as VB6, ou que tu connais quelqu'un qui a VB6 ( ou un autre
langage


compilé qui le permet), et qui est prêt à mettre la main à la pâte, tu
pourrais te (faire) faire un complément COM (COM add-in) pour Excel.

(En fait, un complément COM, c'est un composant ActiveX, fait et compilé
en

fonction d'une application particulière.)

P.S. Si tu v(p)eux poursuivre dans cette voie, il doit y avoir encore
des


informations sur MSDN.


"Caroline L." a écrit dans le message de
news:
Bonjour michdenis,

un gros merci pour tes explications très précises, c'est très
apprécié.




Je vais préciser ma question (ou mon idée). J'ai créer une barre
d'outils


personnalisée. J'y ai inséré des boutons avec macros. Je voudrais
l'utiliser

pour plusieurs fichiers (ces fichiers ont la même mise en forme). Mais
je


ne
veux pas ouvrir ou faire ouvrir par macro le fichier.
J'ai déjà lu (ici sur le forum ou sur exelabo) que l'on peut avoir en
permanence un bouton macro (placé en haut, à côté d'une barre
d'outils)



et
que la macro fonctionne dans tous nos fichiers excel. Je l'avais même
déjà


essayé mais je ne me souviens plus comment le refaire. Je crois qu'il
s'agit

d'un projet VBA avec extension xla. J'ai supprimé le bouton que
j'avais



créé
lors de mes tests mais j'ai toujours un projet VBA dans ALT-F11 et il
porte

l'extension xla.
Alors, vois-tu ce à quoi je pense ?

----------------------------------------------------------------------

Je peux aussi t'expliquer le pourquoi de ma question. J'ai créer un
fichier

excel avec des macros et une barre d'outils personnalisées (avec
macros



à
l'intérieur). Lorsque ce fichier est ouvert, l'usager fait un
Enregistrer


sous pour créer un nouveau fichier (il aura a faire cette procédure
assez


souvent). Alors, tout est beau mais lorsqu'il ré-ouvre le premier
fichier,


les macros ne fonctionnent pas, Excel demande d'ouvrir le 2e fichier
(et



cela, je veux éviter, d'autant plus qu'il y a un mot de passe pour
ouvrir


chaque fichier). J'avais attacher la barre d'outils au fichier mais
j'ai



fait des tests sans attacher et c'est pareil.

Donc, je voudrais avoir la barre d'outils "indépendante" des fichiers.
Par


exemple, dans la barre d'outils, il pourrait y avoir une macro qui
applique

un fond rouge et police gras dans la cellule B5. Cette macro pourrait
être


appliqué dans TOUS mes fichiers excel.
Doit-on enregistré la macro dans un fichier particulier ? Bibiothèque
de



modèles ou de macros ?


Merci encore

Caroline


"michdenis" a écrit dans le message de news:

Bonjour Caroline,

Il est impossible d'exécuter une macro d'un classeur si ce dernier
demeure


fermer.

Voici quelques commandes qui peuvent être utile à cet effet :


Exécuter une macro d'un autre classeur ... ces lignes de commande
ouvriront le classeur si il est fermé.

************************
A )
Nom de la macro : "test1"
Si ton classeur est fermé et que la macro appelée se retrouve dans
un




module standard :
Application.Run "'C:Mes documentsAnswer.xls'!test1"

Même chose mais si le classeur est déjà ouvert :
Application.Run "Answer.xls!test1"

B ) Si le nom de ton classeur contient des espaces :

L'utilisation des apostrophes "'" permet d'utiliser
un nom de classeur contenant des espaces , sans
ces dernières, point de salut.
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!test1"
Application.Run LaMacro

C) Si la macro appelée est dans un module feuille du classeur au
lieu




d'être dans un module Standard :

Dans la ligne de commande, tu dois insérer le nom de l'objet
"Feuille"




que
tu retrouves dans la fenêtre VBE (visual basic editor).
Dans la fenêtre de gauche de ton projet, la liste des feuilles est
affichée dans ce format : "toto"("Feuil4")

toto = Nom de l'onglet de la feuille
Feuil4 = Propriété Name de l'objet Feuille (worksheet)
Dans la commande suiivante, tu dois utiliser le nom de la feuille et
non



de l'onglet de la feuille

Si le fichier est ouvert :
Application.Run "modele.xls!Feuil4.test1"

Si le fichier est fermé :
Application.Run "'C:Mes documentsAnswer.xls'!Feuil4.test1"
************************



Salutations!



"Caroline L." a écrit dans le message de
news:





Bonjour,

je cherche comment avoir des boutons dans la barre d'outils où je
vais




affecter une macro mais je désire que cette macro puisse fonctionner
même


sans ouvrir le fichier à partir duquel elle a été créée. Vous
comprenez



?

merci d'avance chers amis

Caroline