OVH Cloud OVH Cloud

Instal de macro complémentaires

14 réponses
Avatar
Daniel
Bonjour à tout le groupe!

J'ai fait une application Excel. J'ai une macro complémentaire qui se lance
à chaque ouverture du classeur principale. Elle se déclenche à l'ouverture du
classeur. Mais de la manière dont l'application est faites, il se peut que le
classeur principal se ferme et s'ouvre!! Le résultat est que la macro
compléméntaire se réinstalle à chaque fois!!!!

quelle serait la macro qui vérifie si l;a macro est installé, et qui
l'insatlle s'il le faut ?

Le nom et le chemin d'accès de la macro est : Range("LIEN!C29") &
"LotusSendMail.xla"

Merci à vous!!!

4 réponses

1 2
Avatar
michdenis
Bonjour Daniel,

suppose que tu as une macro complémentaire s'appelant "Denis" dans ta liste de macros complémentaires ( barre des menus / outils /
macros complémentaires

Voici 2 procédures pour "COCHER" ou "DÉCOCHER" la macro complémentaire "Denis" dans la fenêtre. Selon qu'elle est cochée ou non, le
fichier .xla sera chargé ou déchargé et il sera visible ou non selon le cas dans la fenêtre VBE (visial basic editor)

'Pour décocher la macro complémentaire
If Application.AddIns("Denis").Installed = True Then
Application.AddIns("Denis").Installed = False
End If

'poru cocher la macro complémentaire
If Application.AddIns("Denis").Installed = False Then
Application.AddIns("Denis").Installed = True
End If

P.S. Ceci signifie que ton fichier xla est déjà présent sur ton disque dur. Et si tu désires que ta macro complémentaire s'affiche
d'elle-même dans la fenêtre des macros complémentaires, ton fichier doit être présent dans ce répertoire sous Windows XP

"C:Documents and SettingsDenisApplication DataMicrosoftMacros complémentairesdenis.xla"


Salutations!




"Daniel" a écrit dans le message de news:
En fait ça ne marche qu'une fois ? dès que la macro est installé, au
demarrage suivant ça plante !!!!!!

HELP!!


Heu ça marche mais maintenant l'installation est définitive ? Comment
l'enlver si je veux ??




peut être que cette instruction bloque parce que LotusSendMail n'est pas dans la liste des macro complémentaire.
essai en inversant les commandes,

Application.DisplayAlerts = False
AddIns.Add Filename:= Range("LIEN!C29") & "LotusSendMail.xla"
If Not AddIns("LotusSendMail").Installed Then
AddIns("LotusSendMail").Installed = True
End If
Application.DisplayAlerts = True

isabelle


La cellule contient cette information :
I:LOGISTIQUEETIQUETTESADMINISTRATIONLOTUS

Mais la macro bloque avant d'en arriver là !!!





bonjour Daniel,

est ce que la cellule Range("LIEN!C29") contient le chemin d'accès ou un lien hypertexte ?

isabelle



Bonjour Isabelle et merci pour le code

Par contre il ne passe pas la ligne :
If Not AddIns("LotusSendMail").Installed Then

Il marque "Erreur d'exécution 9. L'indice n'appartient pas à la selection"

??? j'ai essayé aussi en rajoutant l'extension : If Not
AddIns("LotusSendMail.xla"").Installed Then mais c'est pareil.

Pour info, elle s'installe habituellement de cette manière :
Workbooks.Open Range("LIEN!C29") & "LotusSendMail.xla"












bonjour Daniel,

Application.DisplayAlerts = False
If Not AddIns("LotusSendMail").Installed Then
AddIns.Add Filename:= Range("LIEN!C29") & "LotusSendMail.xla"
AddIns("LotusSendMail").Installed = True
End If
Application.DisplayAlerts = True

isabelle




Bonjour à tout le groupe!

J'ai fait une application Excel. J'ai une macro complémentaire qui se lance
à chaque ouverture du classeur principale. Elle se déclenche à l'ouverture du
classeur. Mais de la manière dont l'application est faites, il se peut que le
classeur principal se ferme et s'ouvre!! Le résultat est que la macro
compléméntaire se réinstalle à chaque fois!!!!

quelle serait la macro qui vérifie si l;a macro est installé, et qui
l'insatlle s'il le faut ?

Le nom et le chemin d'accès de la macro est : Range("LIEN!C29") &
"LotusSendMail.xla"

Merci à vous!!!
















Avatar
Daniel
Bonjour Michel!

Merci pour la réponse. je vais tenter de cettte manière aussi !


Bonjour Daniel,

Voici une proposition de Frédéric Sigonneau :


Les SendKeys qui sont dans la structure With...End With servent d'abord à se
mettre en début de la liste des macros complémentaires pour sélectionner la
première (SendKeys "{HOME}") puis à "descendre" dans la liste pour les
sélectionner une par une (SendKeys "{DOWN}").
Une fois la macro "manquante" (puisque déplacée en début de macro, ou supprimée
comme dans le code original) repérée le dernier SendKeys sert à répondre Oui à
la boite de dialogue qui informe qu'on ne trouve pas la macro complémentaire et
demande si on veut la supprimer de la liste puis à "sortir" de la liste avant de
refermer la boite de dialogue.

Cette version légèrement retravaillée pour déplacer la macro complémentaire à
supprimer de la liste sans la supprimer du disque dur pour autant fonctionne
chez moi avec Excel 2002 :

ce n'est pas le nom de la macro complémentaire (= le nom de son
fichier) qu'il faut passer en paramètre, mais son titre (c'est à dire son nom
tel qu'il s'affiche dans la boite de dialogue OutilsMacros complémentaires)

Appel cette macro à partir de l'interface de la feuille de calcul et non
de la fenêtre VBA.

Sub Test()
SupprimerMacroComplémentaire SonNom
End Sub

'================= > Sub SupprimerMacroComplémentaire(Nom As String)
Dim I As Integer, De$, Vers$
'dossier de stockage de la macro supprimée de la liste
If Dir("c:MesMacros", vbDirectory) = "" Then MkDir "c:MesMacros"
With AddIns
.Item(Nom).Installed = False
De = .Item(Nom).FullName
Vers = "c:MesMacros" & .Item(Nom).Name
Name De As Vers
DoEvents
SendKeys "{HOME}"
For I = 1 To .Count
If .Item(I).Name = Nom Then Exit Sub
SendKeys "{DOWN}"
Next I
End With
SendKeys "~{ESC}"
Application.CommandBars.FindControl(ID:”3).Execute
DoEvents
End Sub
'=================== >

Salutations!



"Daniel" a écrit dans le message de news:
En fait ça ne marche qu'une fois ? dès que la macro est installé, au
demarrage suivant ça plante !!!!!!

HELP!!


Heu ça marche mais maintenant l'installation est définitive ? Comment
l'enlver si je veux ??




peut être que cette instruction bloque parce que LotusSendMail n'est pas dans la liste des macro complémentaire.
essai en inversant les commandes,

Application.DisplayAlerts = False
AddIns.Add Filename:= Range("LIEN!C29") & "LotusSendMail.xla"
If Not AddIns("LotusSendMail").Installed Then
AddIns("LotusSendMail").Installed = True
End If
Application.DisplayAlerts = True

isabelle


La cellule contient cette information :
I:LOGISTIQUEETIQUETTESADMINISTRATIONLOTUS

Mais la macro bloque avant d'en arriver là !!!





bonjour Daniel,

est ce que la cellule Range("LIEN!C29") contient le chemin d'accès ou un lien hypertexte ?

isabelle



Bonjour Isabelle et merci pour le code

Par contre il ne passe pas la ligne :
If Not AddIns("LotusSendMail").Installed Then

Il marque "Erreur d'exécution 9. L'indice n'appartient pas à la selection"

??? j'ai essayé aussi en rajoutant l'extension : If Not
AddIns("LotusSendMail.xla"").Installed Then mais c'est pareil.

Pour info, elle s'installe habituellement de cette manière :
Workbooks.Open Range("LIEN!C29") & "LotusSendMail.xla"












bonjour Daniel,

Application.DisplayAlerts = False
If Not AddIns("LotusSendMail").Installed Then
AddIns.Add Filename:= Range("LIEN!C29") & "LotusSendMail.xla"
AddIns("LotusSendMail").Installed = True
End If
Application.DisplayAlerts = True

isabelle




Bonjour à tout le groupe!

J'ai fait une application Excel. J'ai une macro complémentaire qui se lance
à chaque ouverture du classeur principale. Elle se déclenche à l'ouverture du
classeur. Mais de la manière dont l'application est faites, il se peut que le
classeur principal se ferme et s'ouvre!! Le résultat est que la macro
compléméntaire se réinstalle à chaque fois!!!!

quelle serait la macro qui vérifie si l;a macro est installé, et qui
l'insatlle s'il le faut ?

Le nom et le chemin d'accès de la macro est : Range("LIEN!C29") &
"LotusSendMail.xla"

Merci à vous!!!





















Avatar
michdenis
Un dernier détail,

Pour la macro s'affiche d'elle-même, cela se fait à l'ouverture d'excel, par conséquent, la première fois, tu dois fermer excel et
le ré ouvrir.

Pour ce qui est d'automatiser le fait que la macro complémentaire soit cochée ou non, tu places la procédure dans le ThisWorkbook
de ton projet sous l'événement "Open".


Salutations!



"michdenis" a écrit dans le message de news:
Bonjour Daniel,

suppose que tu as une macro complémentaire s'appelant "Denis" dans ta liste de macros complémentaires ( barre des menus / outils /
macros complémentaires

Voici 2 procédures pour "COCHER" ou "DÉCOCHER" la macro complémentaire "Denis" dans la fenêtre. Selon qu'elle est cochée ou non, le
fichier .xla sera chargé ou déchargé et il sera visible ou non selon le cas dans la fenêtre VBE (visial basic editor)

'Pour décocher la macro complémentaire
If Application.AddIns("Denis").Installed = True Then
Application.AddIns("Denis").Installed = False
End If

'poru cocher la macro complémentaire
If Application.AddIns("Denis").Installed = False Then
Application.AddIns("Denis").Installed = True
End If

P.S. Ceci signifie que ton fichier xla est déjà présent sur ton disque dur. Et si tu désires que ta macro complémentaire s'affiche
d'elle-même dans la fenêtre des macros complémentaires, ton fichier doit être présent dans ce répertoire sous Windows XP

"C:Documents and SettingsDenisApplication DataMicrosoftMacros complémentairesdenis.xla"


Salutations!




"Daniel" a écrit dans le message de news:
En fait ça ne marche qu'une fois ? dès que la macro est installé, au
demarrage suivant ça plante !!!!!!

HELP!!


Heu ça marche mais maintenant l'installation est définitive ? Comment
l'enlver si je veux ??




peut être que cette instruction bloque parce que LotusSendMail n'est pas dans la liste des macro complémentaire.
essai en inversant les commandes,

Application.DisplayAlerts = False
AddIns.Add Filename:= Range("LIEN!C29") & "LotusSendMail.xla"
If Not AddIns("LotusSendMail").Installed Then
AddIns("LotusSendMail").Installed = True
End If
Application.DisplayAlerts = True

isabelle


La cellule contient cette information :
I:LOGISTIQUEETIQUETTESADMINISTRATIONLOTUS

Mais la macro bloque avant d'en arriver là !!!





bonjour Daniel,

est ce que la cellule Range("LIEN!C29") contient le chemin d'accès ou un lien hypertexte ?

isabelle



Bonjour Isabelle et merci pour le code

Par contre il ne passe pas la ligne :
If Not AddIns("LotusSendMail").Installed Then

Il marque "Erreur d'exécution 9. L'indice n'appartient pas à la selection"

??? j'ai essayé aussi en rajoutant l'extension : If Not
AddIns("LotusSendMail.xla"").Installed Then mais c'est pareil.

Pour info, elle s'installe habituellement de cette manière :
Workbooks.Open Range("LIEN!C29") & "LotusSendMail.xla"












bonjour Daniel,

Application.DisplayAlerts = False
If Not AddIns("LotusSendMail").Installed Then
AddIns.Add Filename:= Range("LIEN!C29") & "LotusSendMail.xla"
AddIns("LotusSendMail").Installed = True
End If
Application.DisplayAlerts = True

isabelle




Bonjour à tout le groupe!

J'ai fait une application Excel. J'ai une macro complémentaire qui se lance
à chaque ouverture du classeur principale. Elle se déclenche à l'ouverture du
classeur. Mais de la manière dont l'application est faites, il se peut que le
classeur principal se ferme et s'ouvre!! Le résultat est que la macro
compléméntaire se réinstalle à chaque fois!!!!

quelle serait la macro qui vérifie si l;a macro est installé, et qui
l'insatlle s'il le faut ?

Le nom et le chemin d'accès de la macro est : Range("LIEN!C29") &
"LotusSendMail.xla"

Merci à vous!!!
















Avatar
Daniel
Impeccable! ça devrai aller comme ça alors!

Merci beaucoup à Isabelle et Denis pour leurs réponse à mes questions et je
vous souhaite un excellent week-end


Bonjour Daniel,

suppose que tu as une macro complémentaire s'appelant "Denis" dans ta liste de macros complémentaires ( barre des menus / outils /
macros complémentaires

Voici 2 procédures pour "COCHER" ou "DÉCOCHER" la macro complémentaire "Denis" dans la fenêtre. Selon qu'elle est cochée ou non, le
fichier .xla sera chargé ou déchargé et il sera visible ou non selon le cas dans la fenêtre VBE (visial basic editor)

'Pour décocher la macro complémentaire
If Application.AddIns("Denis").Installed = True Then
Application.AddIns("Denis").Installed = False
End If

'poru cocher la macro complémentaire
If Application.AddIns("Denis").Installed = False Then
Application.AddIns("Denis").Installed = True
End If

P.S. Ceci signifie que ton fichier xla est déjà présent sur ton disque dur. Et si tu désires que ta macro complémentaire s'affiche
d'elle-même dans la fenêtre des macros complémentaires, ton fichier doit être présent dans ce répertoire sous Windows XP

"C:Documents and SettingsDenisApplication DataMicrosoftMacros complémentairesdenis.xla"


Salutations!




"Daniel" a écrit dans le message de news:
En fait ça ne marche qu'une fois ? dès que la macro est installé, au
demarrage suivant ça plante !!!!!!

HELP!!


Heu ça marche mais maintenant l'installation est définitive ? Comment
l'enlver si je veux ??




peut être que cette instruction bloque parce que LotusSendMail n'est pas dans la liste des macro complémentaire.
essai en inversant les commandes,

Application.DisplayAlerts = False
AddIns.Add Filename:= Range("LIEN!C29") & "LotusSendMail.xla"
If Not AddIns("LotusSendMail").Installed Then
AddIns("LotusSendMail").Installed = True
End If
Application.DisplayAlerts = True

isabelle


La cellule contient cette information :
I:LOGISTIQUEETIQUETTESADMINISTRATIONLOTUS

Mais la macro bloque avant d'en arriver là !!!





bonjour Daniel,

est ce que la cellule Range("LIEN!C29") contient le chemin d'accès ou un lien hypertexte ?

isabelle



Bonjour Isabelle et merci pour le code

Par contre il ne passe pas la ligne :
If Not AddIns("LotusSendMail").Installed Then

Il marque "Erreur d'exécution 9. L'indice n'appartient pas à la selection"

??? j'ai essayé aussi en rajoutant l'extension : If Not
AddIns("LotusSendMail.xla"").Installed Then mais c'est pareil.

Pour info, elle s'installe habituellement de cette manière :
Workbooks.Open Range("LIEN!C29") & "LotusSendMail.xla"












bonjour Daniel,

Application.DisplayAlerts = False
If Not AddIns("LotusSendMail").Installed Then
AddIns.Add Filename:= Range("LIEN!C29") & "LotusSendMail.xla"
AddIns("LotusSendMail").Installed = True
End If
Application.DisplayAlerts = True

isabelle




Bonjour à tout le groupe!

J'ai fait une application Excel. J'ai une macro complémentaire qui se lance
à chaque ouverture du classeur principale. Elle se déclenche à l'ouverture du
classeur. Mais de la manière dont l'application est faites, il se peut que le
classeur principal se ferme et s'ouvre!! Le résultat est que la macro
compléméntaire se réinstalle à chaque fois!!!!

quelle serait la macro qui vérifie si l;a macro est installé, et qui
l'insatlle s'il le faut ?

Le nom et le chemin d'accès de la macro est : Range("LIEN!C29") &
"LotusSendMail.xla"

Merci à vous!!!





















1 2