IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Retrouver le chemin de "\Program Files\Fichiers communs\"


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 143
    Points : 177
    Points
    177
    Par défaut Retrouver le chemin de "\Program Files\Fichiers communs\"
    Bonjours, dans mon programme j'ai besoin de créer un fichier dans le répertoire :

    "\Program Files\Fichiers communs\"

    sachant que la lettre de lecteur peut varier, le répertoire/disque d'installation de mon logiciel peut varier etc...

    J'avais choisi d'utiliser la fonction Environ() pour récupérer ce chemin d'accès.

    Ca fonctionnais très bien sur mon pc mais à la première installation sur un autre poste, mauvaise surprise : la valeur retournée par cette fonction varie d'un pc à un autre...

    Quelqu'un a une idée sachant que je ne peut pas me contenter du chemin d'accès de program files car mon logiciel sera amené à être installé sur des machines tournant dans des langues différentes.

    Merci d'avance !

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ENVIRON("CommonProgramFiles")

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    ou encore en passant directement l'index concerné :


  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Bonsoir ucfoutu

    Chez moi, ton code me retourne
    CI_HOLOS_CLI=C:\Program Files\Seagate Software\Open Olap\
    alors que la solution in extenso de DarkVader me renvoie la valeur attendue... Autre exemple, donc, de ce que j'appelle la "surcharge de réponse"...

    De plus, l'aide précise que dans le cas de l'utilisation d'un argument numérique, c'est la chaine complète qui est renvoyée, dont il faut donc extraire ce qui suit le signe "="


    Mais bon, comme je te le disais ce matin... chacun sa méthode... quitte à polluer le forum ( c'est désolant, en fait!)...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 143
    Points : 177
    Points
    177
    Par défaut
    Chez moi, ton code me retourne
    Citation:
    CI_HOLOS_CLI=C:\Program Files\Seagate Software\Open Olap\
    alors que la solution in extenso de DarkVader me renvoie la valeur attendue... Autre exemple, donc, de ce que j'appelle la "surcharge de réponse"...

    De plus, l'aide précise que dans le cas de l'utilisation d'un argument numérique, c'est la chaine complète qui est renvoyée, dont il faut donc extraire ce qui suit le signe "="
    C'est exactement le problème que j'avais et pour l'extraction pas de soucis je devais déjà la faire, je vais tester tous ça et vous tenir au courant en essayant la solution de DarkVader.

    ucfoutu > c'est comme ça que je faisait mais d'un poste à l'autre la valeur retournée change.

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 143
    Points : 177
    Points
    177
    Par défaut
    Citation Envoyé par DarkVader Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ENVIRON("CommonProgramFiles")
    Cette solution marche parfaitement sur tous les postes !!!

    Merci beaucoup !

  7. #7
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Pour résoudre ce genre de problème, de façon plus générale, j'utilise un modukle qui est capable de retourner n'importe quel répertoire spécial de windows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    Option Explicit
     
    Private Const S_OK = &H0                ' Success
    Private Const S_FALSE = &H1             ' The Folder is valid, but does not exist
    Private Const E_INVALIDARG = &H80070057 ' Invalid CSIDL Value
     
    Public Enum CSIDL_VALUES
        CSIDL_DESKTOP = &H0
        CSIDL_INTERNET = &H1
        CSIDL_PROGRAMS = &H2
        CSIDL_CONTROLS = &H3
        CSIDL_PRINTERS = &H4
        CSIDL_PERSONAL = &H5
        CSIDL_FAVORITES = &H6
        CSIDL_STARTUP = &H7
        CSIDL_RECENT = &H8
        CSIDL_SENDTO = &H9
        CSIDL_BITBUCKET = &HA
        CSIDL_STARTMENU = &HB
        CSIDL_MYDOCUMENTS = &HC
        CSIDL_MYMUSIC = &HD
        CSIDL_MYVIDEO = &HE
        CSIDL_DESKTOPDIRECTORY = &H10
        CSIDL_DRIVES = &H11
        CSIDL_NETWORK = &H12
        CSIDL_NETHOOD = &H13
        CSIDL_FONTS = &H14
        CSIDL_TEMPLATES = &H15
        CSIDL_COMMON_STARTMENU = &H16
        CSIDL_COMMON_PROGRAMS = &H17
        CSIDL_COMMON_STARTUP = &H18
        CSIDL_COMMON_DESKTOPDIRECTORY = &H19
        CSIDL_APPDATA = &H1A
        CSIDL_PRINTHOOD = &H1B
        CSIDL_LOCAL_APPDATA = &H1C
        CSIDL_ALTSTARTUP = &H1D
        CSIDL_COMMON_ALTSTARTUP = &H1E
        CSIDL_COMMON_FAVORITES = &H1F
        CSIDL_INTERNET_CACHE = &H20
        CSIDL_COOKIES = &H21
        CSIDL_HISTORY = &H22
        CSIDL_COMMON_APPDATA = &H23
        CSIDL_WINDOWS = &H24
        CSIDL_SYSTEM = &H25
        CSIDL_PROGRAM_FILES = &H26
        CSIDL_MYPICTURES = &H27
        CSIDL_PROFILE = &H28
        CSIDL_SYSTEMX86 = &H29
        CSIDL_PROGRAM_FILESX86 = &H2A
        CSIDL_PROGRAM_FILES_COMMON = &H2B
        CSIDL_PROGRAM_FILES_COMMONX86 = &H2C
        CSIDL_COMMON_TEMPLATES = &H2D
        CSIDL_COMMON_DOCUMENTS = &H2E
        CSIDL_COMMON_ADMINTOOLS = &H2F
        CSIDL_ADMINTOOLS = &H30
        CSIDL_CONNECTIONS = &H31
        CSIDL_COMMON_MUSIC = &H35
        CSIDL_COMMON_PICTURES = &H36
        CSIDL_COMMON_VIDEO = &H37
        CSIDL_RESOURCES = &H38
        CSIDL_RESOURCES_LOCALIZED = &H39
        CSIDL_COMMON_OEM_LINKS = &H3A
        CSIDL_CDBURN_AREA = &H3B
        CSIDL_COMPUTERSNEARME = &H3D
        CSIDL_FLAG_PER_USER_INIT = &H800
        CSIDL_FLAG_NO_ALIAS = &H1000
        CSIDL_FLAG_DONT_VERIFY = &H4000
        CSIDL_FLAG_CREATE = &H8000
        CSIDL_FLAG_MASK = &HFF00
    End Enum
     
     
    Private Const SHGFP_TYPE_CURRENT = 0
    Private Const SHGFP_TYPE_DEFAULT = 1
    Private Const MAX_PATH = 260
     
    Private Declare Function SHGetFolderPath Lib "shfolder" _
        Alias "SHGetFolderPathA" _
        (ByVal hwndOwner As Long, ByVal nFolder As Long, _
        ByVal hToken As Long, ByVal dwFlags As Long, _
        ByVal pszPath As String) As Long
     
     
     
    Public Function GetSpecialFolder(FolderType As CSIDL_VALUES, Optional ForceCreate As Boolean = False) As String
      Dim sPath As String
      Dim RetVal As Long
     
      ' Fill our string buffer
      sPath = String(MAX_PATH, 0)
      If ForceCreate Then
        RetVal = SHGetFolderPath(0, FolderType And CSIDL_FLAG_CREATE, 0, SHGFP_TYPE_CURRENT, sPath)
      Else
        RetVal = SHGetFolderPath(0, FolderType, 0, SHGFP_TYPE_CURRENT, sPath)
      End If
      Select Case RetVal
          Case S_OK
              ' We retrieved the folder successfully
     
              ' All C strings are null terminated
              ' So we need to return the string upto the first null character
              sPath = Left(sPath, InStr(1, sPath, Chr(0)) - 1)
              GetSpecialFolder = sPath
          Case S_FALSE
              ' The CSIDL in nFolder is valid, but the folder does not exist.
              ' Use CSIDL_FLAG_CREATE to have it created automatically
              MsgBox "The folder does not exist"
              GetSpecialFolder = ""
          Case E_INVALIDARG
              ' nFolder is invalid
              MsgBox "An invalid folder ID was specified"
              GetSpecialFolder = ""
      End Select
     
    End Function
    Une fois ce module ajouté a votre projet, vous disposez d'une nouivelle fonction : GetSpecialFolder
    Pour obtenier le repertoire programme, par exemple, on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MsgBox GetSpecialFolder(CSIDL_PROGRAM_FILES)
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Chemin d'accès "Program Files"
    Par nono le golfeur dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/09/2009, 15h36
  2. Retrouver le chemin complet d'un fichier
    Par metalcoyote dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/11/2008, 13h50
  3. [Vista] supprimer fichier en Program Files
    Par Droïde Système7 dans le forum Débuter
    Réponses: 14
    Dernier message: 01/09/2008, 19h32
  4. Program Files et Fichiers Communs
    Par vg-matrix dans le forum Windows XP
    Réponses: 1
    Dernier message: 27/08/2008, 15h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo