OVH Cloud OVH Cloud

Accès au registre

18 réponses
Avatar
John Fuss
Bonjour,

SaveSetting, GetSetting & co sont bien gentils mais comment accèder à
d'autres clefs ? API ?

Merci

John

10 réponses

1 2
Avatar
Alain CROS
Bonjour.

Il y a moyen de passer par un objet Shell.

Sub EcrireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
ObjShell.RegWrite "HKCUJohnFuzzTonic", 5
Set ObjShell = Nothing
End Sub
Sub LireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
MsgBox ObjShell.RegRead("HKCUJohnFuzzTonic")
Set ObjShell = Nothing
End Sub
Sub EffaceReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
ObjShell.RegDelete "HKCUJohnFuzz"
Set ObjShell = Nothing
End Sub

C'est faisable par les API avec les fonctions :
RegCloseKey
RegCreateKeyEx
RegDeleteKey
mais c'est un peu plus compliqué.

Un petit conseil, si tu manipule la bdr, fais bien attention a ce que tu fais.

Alain CROS.

"John Fuss" a écrit dans le message de news: br1pjq$s46$
Bonjour,

SaveSetting, GetSetting & co sont bien gentils mais comment accèder à
d'autres clefs ? API ?

Merci

John




Avatar
John Fuss
Merci pour tes infos, je veux juste remettre dans l'ordre que je veux
l'execution des macros complémentaires d'Excel.

Merci

John

"Alain CROS" a écrit dans le message de
news:%23%
Bonjour.

Il y a moyen de passer par un objet Shell.

Sub EcrireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
ObjShell.RegWrite "HKCUJohnFuzzTonic", 5
Set ObjShell = Nothing
End Sub
Sub LireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
MsgBox ObjShell.RegRead("HKCUJohnFuzzTonic")
Set ObjShell = Nothing
End Sub
Sub EffaceReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
ObjShell.RegDelete "HKCUJohnFuzz"
Set ObjShell = Nothing
End Sub

C'est faisable par les API avec les fonctions :
RegCloseKey
RegCreateKeyEx
RegDeleteKey
mais c'est un peu plus compliqué.

Un petit conseil, si tu manipule la bdr, fais bien attention a ce que tu
fais.


Alain CROS.

"John Fuss" a écrit dans le message de news:
br1pjq$s46$

Bonjour,

SaveSetting, GetSetting & co sont bien gentils mais comment accèder à
d'autres clefs ? API ?

Merci

John








Avatar
John Fuss
J'ai essayé en utilisant

msgbox(LireReg("HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0ExcelOption
sOPEN"))

Mais sans succès, ou est-ce que je me trompe ? Sinon si qq'un a un bout de
code utilisant les API je suis preneur....

Sachant que le but de mon opération est de classer à ma guise tous les
"OPEN*" de la clef
"HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0ExcelOptions" pour
qu'Excel charge mes macros complémentaires dans l'ordre que je veux.

Merci pour votre aide

John


"Alain CROS" a écrit dans le message de
news:%23%
Bonjour.

Il y a moyen de passer par un objet Shell.

Sub EcrireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
ObjShell.RegWrite "HKCUJohnFuzzTonic", 5
Set ObjShell = Nothing
End Sub
Sub LireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
MsgBox ObjShell.RegRead("HKCUJohnFuzzTonic")
Set ObjShell = Nothing
End Sub
Sub EffaceReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
ObjShell.RegDelete "HKCUJohnFuzz"
Set ObjShell = Nothing
End Sub

C'est faisable par les API avec les fonctions :
RegCloseKey
RegCreateKeyEx
RegDeleteKey
mais c'est un peu plus compliqué.

Un petit conseil, si tu manipule la bdr, fais bien attention a ce que tu
fais.


Alain CROS.

"John Fuss" a écrit dans le message de news:
br1pjq$s46$

Bonjour,

SaveSetting, GetSetting & co sont bien gentils mais comment accèder à
d'autres clefs ? API ?

Merci

John








Avatar
John Fuss
du coup j'ai utilisé :

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q145679

John

"John Fuss" a écrit dans le message de
news:brpfn6$i36$
J'ai essayé en utilisant


msgbox(LireReg("HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0ExcelOption

sOPEN"))

Mais sans succès, ou est-ce que je me trompe ? Sinon si qq'un a un bout de
code utilisant les API je suis preneur....

Sachant que le but de mon opération est de classer à ma guise tous les
"OPEN*" de la clef
"HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0ExcelOptions" pour
qu'Excel charge mes macros complémentaires dans l'ordre que je veux.

Merci pour votre aide

John


"Alain CROS" a écrit dans le message de
news:%23%
Bonjour.

Il y a moyen de passer par un objet Shell.

Sub EcrireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
ObjShell.RegWrite "HKCUJohnFuzzTonic", 5
Set ObjShell = Nothing
End Sub
Sub LireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
MsgBox ObjShell.RegRead("HKCUJohnFuzzTonic")
Set ObjShell = Nothing
End Sub
Sub EffaceReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
ObjShell.RegDelete "HKCUJohnFuzz"
Set ObjShell = Nothing
End Sub

C'est faisable par les API avec les fonctions :
RegCloseKey
RegCreateKeyEx
RegDeleteKey
mais c'est un peu plus compliqué.

Un petit conseil, si tu manipule la bdr, fais bien attention a ce que tu
fais.


Alain CROS.

"John Fuss" a écrit dans le message de news:
br1pjq$s46$

Bonjour,

SaveSetting, GetSetting & co sont bien gentils mais comment accèder à
d'autres clefs ? API ?

Merci

John












Avatar
Frédéric Sigonneau
Bonsoir,

Je ne sais pas ce que tu veux dire exactement par "sans succès" (qu'est-ce qui
ne marche pas exatement ?). Mais je me permets de te rappeler la fin de ma
réponse à ta question du 1er décembre dernier (16:36), sur le même sujet :

'========début
Tu peux essayer de les renommer, dans l'éditeur du registre, pour que la macro
complémentaire que tu veux lancer en premier soit dans la première clé OPEN
(celle qui n'a pas de numéro).
*Excel doit être fermé pour cette manip*.
(...)Il est impossible en effet, Excel étant ouvert, de modifier les clés du
registre qu'il utilise.
'========fin

C'est la dernière phrase, bien sûr, sur laquelle j'attire ton attention, parce
qu'elle peut expliquer ton échec : quelle que soit la méthode utilisée pour
accéder au registre (celle qu'Alain Cros t'a proposée comme les fonctions de
l'API que tu as trouvées sur le site de Microsoft), *aucune modification du
registre* ne sera réellement effectuée si tu la fais depuis Excel (par du code,
j'entends).

D'autre part, pour lire dans le registre avec la procédure LireReg, ta syntaxe
ne convient pas pour une procédure (elle pourrait convenir pour une fonction).
Egalement le chemin d'accès à la clé Options n'est pas correct pour la fonction
RegRead.
Essaye plutôt de copier/coller ce code dans un module standard et de l'exécuter
:

Sub LireReg()
Dim ObjShell As Object, Clé$
Set ObjShell = CreateObject("WScript.Shell")
Clé = "HKCUSoftwareMicrosoftOffice9.0ExcelOptionsOPEN"
On Error Resume Next
MsgBox ObjShell.RegRead(Clé)
Set ObjShell = Nothing
End Sub

Je te conseille, mais tu en fais ce que tu veux, de persévérer avec les
méthodes/fonctions de l'objet "WScript.Shell" pour travailler dans le registre.
D'une part, parce qu'elles sont beaucoup plus facile à utiliser que les
fonctions API, et d'autre part parce que, si tu dois, ce que je crois, modifier
les clés du registre en dehors d'Excel, tu pourrais le faire avec un script .vbs
qui accepte sans difficulté cet objet ("WScript.Shell") mais ignore superbement
les fonctions API.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


J'ai essayé en utilisant

msgbox(LireReg("HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0ExcelOption
sOPEN"))

Mais sans succès, ou est-ce que je me trompe ? Sinon si qq'un a un bout de
code utilisant les API je suis preneur....

Sachant que le but de mon opération est de classer à ma guise tous les
"OPEN*" de la clef
"HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0ExcelOptions" pour
qu'Excel charge mes macros complémentaires dans l'ordre que je veux.

Merci pour votre aide

John

"Alain CROS" a écrit dans le message de
news:%23%
Bonjour.

Il y a moyen de passer par un objet Shell.

Sub EcrireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
ObjShell.RegWrite "HKCUJohnFuzzTonic", 5
Set ObjShell = Nothing
End Sub
Sub LireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
MsgBox ObjShell.RegRead("HKCUJohnFuzzTonic")
Set ObjShell = Nothing
End Sub
Sub EffaceReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
ObjShell.RegDelete "HKCUJohnFuzz"
Set ObjShell = Nothing
End Sub

C'est faisable par les API avec les fonctions :
RegCloseKey
RegCreateKeyEx
RegDeleteKey
mais c'est un peu plus compliqué.

Un petit conseil, si tu manipule la bdr, fais bien attention a ce que tu
fais.


Alain CROS.

"John Fuss" a écrit dans le message de news:
br1pjq$s46$

Bonjour,

SaveSetting, GetSetting & co sont bien gentils mais comment accèder à
d'autres clefs ? API ?

Merci

John










Avatar
John Fuss
Bonjour,

je n'arrivait pas à utiliser les f° données par Alain pour l'accès au
registre, j'ai essayé différentes syntaxes (HKEY complet ou HKCU) mais je
n'arrivait pas à lire mes clefs. J'ai tester ta fonction qui marche très
bien, pour ce qui est de la modification de l'ordre d'execution des xla, mon
but est de placer un de mes xla en 1er. J'ai donc mis en place les API pour
tester si le placement du bon xla dans OPEN fonctionne, apparement c le cas.

Pourrais-tu me dire prkoi ma syntaxe ne convient pas pour un procédure ?

En abusant, pourrais-tu me dire qq trucs sur les .vbs ? Comment ça s'utilise
? Comment peux t'on les créer ? Comment se déclenche un .vbs ? Merci.

Effectivement la syntaxe de l'accès au registre est plus simple par
WScript.Shell que par les API, je vais de ce pas les remplacer...

Merci bcp pour ta réponse.

John

"Frédéric Sigonneau" a écrit dans le message
de news:
Bonsoir,

Je ne sais pas ce que tu veux dire exactement par "sans succès" (qu'est-ce
qui

ne marche pas exatement ?). Mais je me permets de te rappeler la fin de ma
réponse à ta question du 1er décembre dernier (16:36), sur le même sujet :

'========début
Tu peux essayer de les renommer, dans l'éditeur du registre, pour que la
macro

complémentaire que tu veux lancer en premier soit dans la première clé
OPEN

(celle qui n'a pas de numéro).
*Excel doit être fermé pour cette manip*.
(...)Il est impossible en effet, Excel étant ouvert, de modifier les clés
du

registre qu'il utilise.
'========fin

C'est la dernière phrase, bien sûr, sur laquelle j'attire ton attention,
parce

qu'elle peut expliquer ton échec : quelle que soit la méthode utilisée
pour

accéder au registre (celle qu'Alain Cros t'a proposée comme les fonctions
de

l'API que tu as trouvées sur le site de Microsoft), *aucune modification
du

registre* ne sera réellement effectuée si tu la fais depuis Excel (par du
code,

j'entends).

D'autre part, pour lire dans le registre avec la procédure LireReg, ta
syntaxe

ne convient pas pour une procédure (elle pourrait convenir pour une
fonction).

Egalement le chemin d'accès à la clé Options n'est pas correct pour la
fonction

RegRead.
Essaye plutôt de copier/coller ce code dans un module standard et de
l'exécuter

:

Sub LireReg()
Dim ObjShell As Object, Clé$
Set ObjShell = CreateObject("WScript.Shell")
Clé = "HKCUSoftwareMicrosoftOffice9.0ExcelOptionsOPEN"
On Error Resume Next
MsgBox ObjShell.RegRead(Clé)
Set ObjShell = Nothing
End Sub

Je te conseille, mais tu en fais ce que tu veux, de persévérer avec les
méthodes/fonctions de l'objet "WScript.Shell" pour travailler dans le
registre.

D'une part, parce qu'elles sont beaucoup plus facile à utiliser que les
fonctions API, et d'autre part parce que, si tu dois, ce que je crois,
modifier

les clés du registre en dehors d'Excel, tu pourrais le faire avec un
script .vbs

qui accepte sans difficulté cet objet ("WScript.Shell") mais ignore
superbement

les fonctions API.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


J'ai essayé en utilisant


msgbox(LireReg("HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0ExcelOption


sOPEN"))

Mais sans succès, ou est-ce que je me trompe ? Sinon si qq'un a un bout
de


code utilisant les API je suis preneur....

Sachant que le but de mon opération est de classer à ma guise tous les
"OPEN*" de la clef
"HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0ExcelOptions" pour
qu'Excel charge mes macros complémentaires dans l'ordre que je veux.

Merci pour votre aide

John

"Alain CROS" a écrit dans le message de
news:%23%
Bonjour.

Il y a moyen de passer par un objet Shell.

Sub EcrireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
ObjShell.RegWrite "HKCUJohnFuzzTonic", 5
Set ObjShell = Nothing
End Sub
Sub LireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
MsgBox ObjShell.RegRead("HKCUJohnFuzzTonic")
Set ObjShell = Nothing
End Sub
Sub EffaceReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
ObjShell.RegDelete "HKCUJohnFuzz"
Set ObjShell = Nothing
End Sub

C'est faisable par les API avec les fonctions :
RegCloseKey
RegCreateKeyEx
RegDeleteKey
mais c'est un peu plus compliqué.

Un petit conseil, si tu manipule la bdr, fais bien attention a ce que
tu



fais.

Alain CROS.

"John Fuss" a écrit dans le message de news:
br1pjq$s46$

Bonjour,

SaveSetting, GetSetting & co sont bien gentils mais comment accèder
à




d'autres clefs ? API ?

Merci

John













Avatar
Michel Pierron
Bonjour Frédéric;
Si Excel est ouvert et que tu exécutes ton projet dans une autre instance après
modif de la base de registre, il n'y a pas de problème et la fermeture de la
première instance ne réinitialise pas les modifications effectuées.
MP

"Frédéric Sigonneau" a écrit dans le message de
news:
Bonsoir,

Je ne sais pas ce que tu veux dire exactement par "sans succès" (qu'est-ce qui
ne marche pas exatement ?). Mais je me permets de te rappeler la fin de ma
réponse à ta question du 1er décembre dernier (16:36), sur le même sujet :

'========début
Tu peux essayer de les renommer, dans l'éditeur du registre, pour que la macro
complémentaire que tu veux lancer en premier soit dans la première clé OPEN
(celle qui n'a pas de numéro).
*Excel doit être fermé pour cette manip*.
(...)Il est impossible en effet, Excel étant ouvert, de modifier les clés du
registre qu'il utilise.
'========fin

C'est la dernière phrase, bien sûr, sur laquelle j'attire ton attention, parce
qu'elle peut expliquer ton échec : quelle que soit la méthode utilisée pour
accéder au registre (celle qu'Alain Cros t'a proposée comme les fonctions de
l'API que tu as trouvées sur le site de Microsoft), *aucune modification du
registre* ne sera réellement effectuée si tu la fais depuis Excel (par du code,
j'entends).

D'autre part, pour lire dans le registre avec la procédure LireReg, ta syntaxe
ne convient pas pour une procédure (elle pourrait convenir pour une fonction).
Egalement le chemin d'accès à la clé Options n'est pas correct pour la fonction
RegRead.
Essaye plutôt de copier/coller ce code dans un module standard et de l'exécuter
:

Sub LireReg()
Dim ObjShell As Object, Clé$
Set ObjShell = CreateObject("WScript.Shell")
Clé = "HKCUSoftwareMicrosoftOffice9.0ExcelOptionsOPEN"
On Error Resume Next
MsgBox ObjShell.RegRead(Clé)
Set ObjShell = Nothing
End Sub

Je te conseille, mais tu en fais ce que tu veux, de persévérer avec les
méthodes/fonctions de l'objet "WScript.Shell" pour travailler dans le registre.
D'une part, parce qu'elles sont beaucoup plus facile à utiliser que les
fonctions API, et d'autre part parce que, si tu dois, ce que je crois, modifier
les clés du registre en dehors d'Excel, tu pourrais le faire avec un script .vbs
qui accepte sans difficulté cet objet ("WScript.Shell") mais ignore superbement
les fonctions API.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


J'ai essayé en utilisant

msgbox(LireReg("HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0ExcelOption
sOPEN"))

Mais sans succès, ou est-ce que je me trompe ? Sinon si qq'un a un bout de
code utilisant les API je suis preneur....

Sachant que le but de mon opération est de classer à ma guise tous les
"OPEN*" de la clef
"HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0ExcelOptions" pour
qu'Excel charge mes macros complémentaires dans l'ordre que je veux.

Merci pour votre aide

John

"Alain CROS" a écrit dans le message de
news:%23%
Bonjour.

Il y a moyen de passer par un objet Shell.

Sub EcrireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
ObjShell.RegWrite "HKCUJohnFuzzTonic", 5
Set ObjShell = Nothing
End Sub
Sub LireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
MsgBox ObjShell.RegRead("HKCUJohnFuzzTonic")
Set ObjShell = Nothing
End Sub
Sub EffaceReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
ObjShell.RegDelete "HKCUJohnFuzz"
Set ObjShell = Nothing
End Sub

C'est faisable par les API avec les fonctions :
RegCloseKey
RegCreateKeyEx
RegDeleteKey
mais c'est un peu plus compliqué.

Un petit conseil, si tu manipule la bdr, fais bien attention a ce que tu
fais.


Alain CROS.

"John Fuss" a écrit dans le message de news:
br1pjq$s46$

Bonjour,

SaveSetting, GetSetting & co sont bien gentils mais comment accèder à
d'autres clefs ? API ?

Merci

John













Avatar
John Fuss
Si je comprend bien, à l'ouverture d'excel je modifie l'ordre d'execution
des xla en BdR, je relance une instance d'Excel qui se charge avec les xla
dans l'ordre voulut et je ferme la 1ère instance ?

c ça ?

John

"Michel Pierron" a écrit dans le message de
news:
Bonjour Frédéric;
Si Excel est ouvert et que tu exécutes ton projet dans une autre instance
après

modif de la base de registre, il n'y a pas de problème et la fermeture de
la

première instance ne réinitialise pas les modifications effectuées.
MP

"Frédéric Sigonneau" a écrit dans le
message de

news:
Bonsoir,

Je ne sais pas ce que tu veux dire exactement par "sans succès"
(qu'est-ce qui


ne marche pas exatement ?). Mais je me permets de te rappeler la fin de
ma


réponse à ta question du 1er décembre dernier (16:36), sur le même sujet
:



'========début
Tu peux essayer de les renommer, dans l'éditeur du registre, pour que la
macro


complémentaire que tu veux lancer en premier soit dans la première clé
OPEN


(celle qui n'a pas de numéro).
*Excel doit être fermé pour cette manip*.
(...)Il est impossible en effet, Excel étant ouvert, de modifier les
clés du


registre qu'il utilise.
'========fin

C'est la dernière phrase, bien sûr, sur laquelle j'attire ton attention,
parce


qu'elle peut expliquer ton échec : quelle que soit la méthode utilisée
pour


accéder au registre (celle qu'Alain Cros t'a proposée comme les
fonctions de


l'API que tu as trouvées sur le site de Microsoft), *aucune modification
du


registre* ne sera réellement effectuée si tu la fais depuis Excel (par
du code,


j'entends).

D'autre part, pour lire dans le registre avec la procédure LireReg, ta
syntaxe


ne convient pas pour une procédure (elle pourrait convenir pour une
fonction).


Egalement le chemin d'accès à la clé Options n'est pas correct pour la
fonction


RegRead.
Essaye plutôt de copier/coller ce code dans un module standard et de
l'exécuter


:

Sub LireReg()
Dim ObjShell As Object, Clé$
Set ObjShell = CreateObject("WScript.Shell")
Clé = "HKCUSoftwareMicrosoftOffice9.0ExcelOptionsOPEN"
On Error Resume Next
MsgBox ObjShell.RegRead(Clé)
Set ObjShell = Nothing
End Sub

Je te conseille, mais tu en fais ce que tu veux, de persévérer avec les
méthodes/fonctions de l'objet "WScript.Shell" pour travailler dans le
registre.


D'une part, parce qu'elles sont beaucoup plus facile à utiliser que les
fonctions API, et d'autre part parce que, si tu dois, ce que je crois,
modifier


les clés du registre en dehors d'Excel, tu pourrais le faire avec un
script .vbs


qui accepte sans difficulté cet objet ("WScript.Shell") mais ignore
superbement


les fonctions API.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


J'ai essayé en utilisant


msgbox(LireReg("HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0ExcelOption



sOPEN"))

Mais sans succès, ou est-ce que je me trompe ? Sinon si qq'un a un
bout de



code utilisant les API je suis preneur....

Sachant que le but de mon opération est de classer à ma guise tous les
"OPEN*" de la clef
"HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0ExcelOptions" pour
qu'Excel charge mes macros complémentaires dans l'ordre que je veux.

Merci pour votre aide

John

"Alain CROS" a écrit dans le message de
news:%23%
Bonjour.

Il y a moyen de passer par un objet Shell.

Sub EcrireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
ObjShell.RegWrite "HKCUJohnFuzzTonic", 5
Set ObjShell = Nothing
End Sub
Sub LireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
MsgBox ObjShell.RegRead("HKCUJohnFuzzTonic")
Set ObjShell = Nothing
End Sub
Sub EffaceReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
ObjShell.RegDelete "HKCUJohnFuzz"
Set ObjShell = Nothing
End Sub

C'est faisable par les API avec les fonctions :
RegCloseKey
RegCreateKeyEx
RegDeleteKey
mais c'est un peu plus compliqué.

Un petit conseil, si tu manipule la bdr, fais bien attention a ce
que tu




fais.

Alain CROS.

"John Fuss" a écrit dans le message de news:
br1pjq$s46$

Bonjour,

SaveSetting, GetSetting & co sont bien gentils mais comment
accèder à





d'autres clefs ? API ?

Merci

John

















Avatar
Michel Pierron
Salut John;
Si tu as modifié la BDR à l'aide de macros contenues dans la première instance, je
pense que fermer excel et le réouvrir devrait charger les add-ins dans l'ordre que
tu as modifié lors de sa réouverture. Si tu as modifié l'ordre dans la BDR, il n'y
a aucune raison que la BDR soit remodifiée.
MP

"John Fuss" a écrit dans le message de
news:brrrj8$j03$
Si je comprend bien, à l'ouverture d'excel je modifie l'ordre d'execution
des xla en BdR, je relance une instance d'Excel qui se charge avec les xla
dans l'ordre voulut et je ferme la 1ère instance ?

c ça ?

John

"Michel Pierron" a écrit dans le message de
news:
Bonjour Frédéric;
Si Excel est ouvert et que tu exécutes ton projet dans une autre instance
après

modif de la base de registre, il n'y a pas de problème et la fermeture de
la

première instance ne réinitialise pas les modifications effectuées.
MP

"Frédéric Sigonneau" a écrit dans le
message de

news:
Bonsoir,

Je ne sais pas ce que tu veux dire exactement par "sans succès"
(qu'est-ce qui


ne marche pas exatement ?). Mais je me permets de te rappeler la fin de
ma


réponse à ta question du 1er décembre dernier (16:36), sur le même sujet
:



'========début
Tu peux essayer de les renommer, dans l'éditeur du registre, pour que la
macro


complémentaire que tu veux lancer en premier soit dans la première clé
OPEN


(celle qui n'a pas de numéro).
*Excel doit être fermé pour cette manip*.
(...)Il est impossible en effet, Excel étant ouvert, de modifier les
clés du


registre qu'il utilise.
'========fin

C'est la dernière phrase, bien sûr, sur laquelle j'attire ton attention,
parce


qu'elle peut expliquer ton échec : quelle que soit la méthode utilisée
pour


accéder au registre (celle qu'Alain Cros t'a proposée comme les
fonctions de


l'API que tu as trouvées sur le site de Microsoft), *aucune modification
du


registre* ne sera réellement effectuée si tu la fais depuis Excel (par
du code,


j'entends).

D'autre part, pour lire dans le registre avec la procédure LireReg, ta
syntaxe


ne convient pas pour une procédure (elle pourrait convenir pour une
fonction).


Egalement le chemin d'accès à la clé Options n'est pas correct pour la
fonction


RegRead.
Essaye plutôt de copier/coller ce code dans un module standard et de
l'exécuter


:

Sub LireReg()
Dim ObjShell As Object, Clé$
Set ObjShell = CreateObject("WScript.Shell")
Clé = "HKCUSoftwareMicrosoftOffice9.0ExcelOptionsOPEN"
On Error Resume Next
MsgBox ObjShell.RegRead(Clé)
Set ObjShell = Nothing
End Sub

Je te conseille, mais tu en fais ce que tu veux, de persévérer avec les
méthodes/fonctions de l'objet "WScript.Shell" pour travailler dans le
registre.


D'une part, parce qu'elles sont beaucoup plus facile à utiliser que les
fonctions API, et d'autre part parce que, si tu dois, ce que je crois,
modifier


les clés du registre en dehors d'Excel, tu pourrais le faire avec un
script .vbs


qui accepte sans difficulté cet objet ("WScript.Shell") mais ignore
superbement


les fonctions API.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


J'ai essayé en utilisant


msgbox(LireReg("HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0ExcelOption



sOPEN"))

Mais sans succès, ou est-ce que je me trompe ? Sinon si qq'un a un
bout de



code utilisant les API je suis preneur....

Sachant que le but de mon opération est de classer à ma guise tous les
"OPEN*" de la clef
"HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0ExcelOptions" pour
qu'Excel charge mes macros complémentaires dans l'ordre que je veux.

Merci pour votre aide

John

"Alain CROS" a écrit dans le message de
news:%23%
Bonjour.

Il y a moyen de passer par un objet Shell.

Sub EcrireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
ObjShell.RegWrite "HKCUJohnFuzzTonic", 5
Set ObjShell = Nothing
End Sub
Sub LireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
MsgBox ObjShell.RegRead("HKCUJohnFuzzTonic")
Set ObjShell = Nothing
End Sub
Sub EffaceReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
ObjShell.RegDelete "HKCUJohnFuzz"
Set ObjShell = Nothing
End Sub

C'est faisable par les API avec les fonctions :
RegCloseKey
RegCreateKeyEx
RegDeleteKey
mais c'est un peu plus compliqué.

Un petit conseil, si tu manipule la bdr, fais bien attention a ce
que tu




fais.

Alain CROS.

"John Fuss" a écrit dans le message de news:
br1pjq$s46$

Bonjour,

SaveSetting, GetSetting & co sont bien gentils mais comment
accèder à





d'autres clefs ? API ?

Merci

John





















Avatar
Clément Marcotte
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm?&gssnb=1

début de copie:

Soignez votre orthographe, le langage de type "chat" ne s'applique pas
au groupe de discussion,

fin de copie

"John Fuss" a écrit dans le message de
news:brroqg$g07$
Bonjour,

je n'arrivait pas à utiliser les f° données par Alain pour l'accès
au

registre, j'ai essayé différentes syntaxes (HKEY complet ou HKCU)
mais je

n'arrivait pas à lire mes clefs. J'ai tester ta fonction qui marche
très

bien, pour ce qui est de la modification de l'ordre d'execution des
xla, mon

but est de placer un de mes xla en 1er. J'ai donc mis en place les
API pour

tester si le placement du bon xla dans OPEN fonctionne, apparement c
le cas.


Pourrais-tu me dire prkoi ma syntaxe ne convient pas pour un
procédure ?


En abusant, pourrais-tu me dire qq trucs sur les .vbs ? Comment ça
s'utilise

? Comment peux t'on les créer ? Comment se déclenche un .vbs ?
Merci.


Effectivement la syntaxe de l'accès au registre est plus simple par
WScript.Shell que par les API, je vais de ce pas les remplacer...

Merci bcp pour ta réponse.

John

"Frédéric Sigonneau" a écrit dans le
message

de news:
Bonsoir,

Je ne sais pas ce que tu veux dire exactement par "sans succès"
(qu'est-ce


qui
ne marche pas exatement ?). Mais je me permets de te rappeler la
fin de ma


réponse à ta question du 1er décembre dernier (16:36), sur le même
sujet :



'========début
Tu peux essayer de les renommer, dans l'éditeur du registre, pour
que la


macro
complémentaire que tu veux lancer en premier soit dans la première
clé


OPEN
(celle qui n'a pas de numéro).
*Excel doit être fermé pour cette manip*.
(...)Il est impossible en effet, Excel étant ouvert, de modifier
les clés


du
registre qu'il utilise.
'========fin

C'est la dernière phrase, bien sûr, sur laquelle j'attire ton
attention,


parce
qu'elle peut expliquer ton échec : quelle que soit la méthode
utilisée


pour
accéder au registre (celle qu'Alain Cros t'a proposée comme les
fonctions


de
l'API que tu as trouvées sur le site de Microsoft), *aucune
modification


du
registre* ne sera réellement effectuée si tu la fais depuis Excel
(par du


code,
j'entends).

D'autre part, pour lire dans le registre avec la procédure
LireReg, ta


syntaxe
ne convient pas pour une procédure (elle pourrait convenir pour
une


fonction).
Egalement le chemin d'accès à la clé Options n'est pas correct
pour la


fonction
RegRead.
Essaye plutôt de copier/coller ce code dans un module standard et
de


l'exécuter
:

Sub LireReg()
Dim ObjShell As Object, Clé$
Set ObjShell = CreateObject("WScript.Shell")
Clé = "HKCUSoftwareMicrosoftOffice9.0ExcelOptionsOPEN"
On Error Resume Next
MsgBox ObjShell.RegRead(Clé)
Set ObjShell = Nothing
End Sub

Je te conseille, mais tu en fais ce que tu veux, de persévérer
avec les


méthodes/fonctions de l'objet "WScript.Shell" pour travailler dans
le


registre.
D'une part, parce qu'elles sont beaucoup plus facile à utiliser
que les


fonctions API, et d'autre part parce que, si tu dois, ce que je
crois,


modifier
les clés du registre en dehors d'Excel, tu pourrais le faire avec
un


script .vbs
qui accepte sans difficulté cet objet ("WScript.Shell") mais
ignore


superbement
les fonctions API.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


J'ai essayé en utilisant





msgbox(LireReg("HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0Excel

Option
sOPEN"))

Mais sans succès, ou est-ce que je me trompe ? Sinon si qq'un a
un bout



de
code utilisant les API je suis preneur....

Sachant que le but de mon opération est de classer à ma guise
tous les



"OPEN*" de la clef
"HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0ExcelOptions"
pour



qu'Excel charge mes macros complémentaires dans l'ordre que je
veux.




Merci pour votre aide

John

"Alain CROS" a écrit dans le message de
news:%23%
Bonjour.

Il y a moyen de passer par un objet Shell.

Sub EcrireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
ObjShell.RegWrite "HKCUJohnFuzzTonic", 5
Set ObjShell = Nothing
End Sub
Sub LireReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
MsgBox ObjShell.RegRead("HKCUJohnFuzzTonic")
Set ObjShell = Nothing
End Sub
Sub EffaceReg()
Dim ObjShell As Object
Set ObjShell = CreateObject("WScript.Shell")
On Error Resume Next
ObjShell.RegDelete "HKCUJohnFuzz"
Set ObjShell = Nothing
End Sub

C'est faisable par les API avec les fonctions :
RegCloseKey
RegCreateKeyEx
RegDeleteKey
mais c'est un peu plus compliqué.

Un petit conseil, si tu manipule la bdr, fais bien attention a
ce que




tu
fais.

Alain CROS.

"John Fuss" a écrit dans le message de
news:




br1pjq$s46$
Bonjour,

SaveSetting, GetSetting & co sont bien gentils mais comment
accèder





à
d'autres clefs ? API ?

Merci

John

















1 2