Getsetting ailleurs que dans "VB and VBA prog set"

Creepy

XLDnaute Accro
Bonsoir à toutes & tous,

Voila ma question :

Peux-t-on faire un getsetting ailleurs dans la base de registre que dans 'VB and VBA Program Settings' ??

Si oui comment ??

En effet plutot que de demander à l'utilisateur d'indiquer le chemin d'une application, je souhaiterais aller chercher l'info dans :

HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths

Dans cette clef sont stockés tous les chemins des programmes installés sur votre machine. Comme je connais le nom de l'application ce serait tout simple

Merci d'avance

++

Creepy
 

Hellboy

XLDnaute Accro
Re:Getsetting ailleurs que dans

re

Je ne suis pas sur de comprendre. Si tu ne veux pas le demander à l'utilisateur, alors c'est que tu sais déjà ou est l'application. Donc tu connais le Path.

Donne un exemple plus précis s.v.p.

merci !
 

Creepy

XLDnaute Accro
Re:Getsetting ailleurs que dans

RE all,

Je vias essayer d'être plus claire.

Tu peux ouvrir un fichier txt avec Word, Wordpad, blocnote par exemple.

Je veux savoir quel logiciel à l'utilisateur du Fichier.

je lui demande quel logiciel avez vous avec des options boutons.
1- Word, 2- WordPad, 3 Bloc note.

si l(utilisateur me repond bloc note plutot que de lui demander ou se trouve word pour ouvrir le TXT, je vais chercher dans la base de registre :
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp Paths
La clef Winword et je prends le chemin

Et comme ca je peux ouvrir direct le fichier avec word sasn autre intervention de l'utilisateur !

Est-ce plus claire ?

++

Creepy
 

Hellboy

XLDnaute Accro
Re:Getsetting ailleurs que dans

re

Bon voila, pour partir n'importe quel application via VBA, il sagit d'abord de connaitre le chemin d'accès de l'application. Mais attention, je ne sais pas si le chemin varie en fonction des différentes version de windows. B)

Donc voici un exemple:
Code:
Dim stAppName As String

stAppName = 'C:\\Windows\\system32\\dllcache\\wordpad.exe'
Call Shell(stAppName, 1)

Donc, tu n'as ensuite qu'a appliquer un Select Case sur le choix de l'utilisateur !

Message édité par: Hellboy, à: 13/06/2005 00:00
 

ThomasR

XLDnaute Occasionnel
Re:Getsetting ailleurs que dans

Bonsoir à tous, le forum,

juste pour le fun car je pense que la recherche d'adresse par la clef du registre reste une bonne solution, j'ai pensé à une autre solution qui pourrait être une recherche dans le repertoire c: au noms du fichier recherché puis de le coller quelquepart dans le fichier avec une condition à l'ouverture du fichier qui dirait :

if sheet('test').range('A1') = '' then

procedure de recherche

end if

puis lancer une recherche avec les noms des logiciels recherché

dans le fichier que je joint j'ai un USF de recherche et si on indique le nom d'un soft il me donne l'adresse compléte.

je fait cette proposition juste pour le fun car je pense que cette procedure est longue (même si elle ne serait executé qu'une seul foi) et surtout je pense qu'une recherche dans regedit serait beaucoup plus rapide.

@+
Thomas®

ps je vais suivre ce poste car je suis curieux de savoir comment faire une recherche dans le registre. [file name=recherche_20050612233741.zip size=19241]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/recherche_20050612233741.zip[/file]
 

Pièces jointes

  • recherche_20050612233741.zip
    18.8 KB · Affichages: 29

MichelXld

XLDnaute Barbatruc
Re:Getsetting ailleurs que dans

bonjour Creepy , Philippe et Thomas

cet exemple pour WinWord et NotePad , mais je ne suis pas persuadé que cela fonctionne sur tous les postes

testé avec Office10 & WinXP


Code:
Public Declare Function FindExecutableA Lib 'shell32.dll' _
(ByVal lpFile As String, ByVal lpdirectory As String, ByVal lpResult As String) As Long
Public Const MAX_FILENAME_LEN = 256

Function FindExecutable(s As String) As String
Dim i As Integer
Dim S2 As String
S2 = String(MAX_FILENAME_LEN, 32) & Chr$(0)
i = FindExecutableA(s & Chr$(0), vbNullString, S2)
If i > 32 Then
FindExecutable = Left$(S2, InStr(S2, Chr$(0)) - 1)
Else
FindExecutable = ''
End If
     
End Function

Sub cheminApplication()
Dim LeFichier As String

'LeFichier = 'WinWord.exe'
LeFichier = 'NotePad.exe'
MsgBox FindExecutable(LeFichier)

End Sub


il est certainement possible de faire plus simple , mais je n'ai pas bien compris ce que tu cherches à faire :tu souhaites ouvrir un document existant ? tu veux le créer ?


bonne journée
MichelXld

Message édité par: MichelXld, à: 13/06/2005 06:04
 

Creepy

XLDnaute Accro
Re:Getsetting ailleurs que dans

Bonjour à toutes & tous,

Je vais essayer d’être plus claire :

Pour une macro, j’ai besoin d’indiquer le chemin où se trouve le programme qui va servir à ouvrir un fichier par exemple dede.txt.

Je peux ouvrir ce fichier soit avec bloc note, Word ou wordpad.

Comme je ne sais pas quel logiciel utilise la personne (je sais bloc note est dispo sur touts les micros, mais c’est un exemple !), lors de la première ouverture de la macro, je demande à l’utilisateur quel logiciel il utilise. J’écris ensuite ça dans la base de registre pour ne pas avoir à demander à chaque fois quel logiciel utiliser et où il se trouve.

Mais plutôt que de demander à l’utilisateur où se trouve le logiciel, avec une boite de dialogue, après qu’il est choisi parmi la liste des logiciels possibles, je me suis dit :
Regardons dans la base de registre dans la clef : HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp Paths où se trouve le logiciel.

Si la clef est pressente je récupère le chemin, si elle ne l’est pas c’est que l’application n’est pas installée !

Ainsi l’intervention de l’utilisateur est minime, d’ailleurs dans le cas d’une utilisation en entreprise, l’utilisateur final ne sait pas forcement où se trouve le logiciel.

Voilà

Ai-je été plus claire ?

++

Creepy
 

Statistiques des forums

Discussions
312 558
Messages
2 089 596
Membres
104 220
dernier inscrit
Fredericchau