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

Macros et VBA Excel Discussion :

[E-03] Environnement de variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de scully2501
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 148
    Points
    148
    Par défaut [E-03] Environnement de variable
    Bonjour,

    J'ai cherché sur google et sur le forum et je n'ai pas trouvé la réponse à ma question.

    Comment récupérer le chemin d'environnement de variable que j'ai créé dans la propriété de poste de travail/ advanced/environnement de variable en code VBA sous Excel?

    J'ai essayé avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            chemin = Shell ("%FontRootDir%")
    Mais ca ne marche pas.

    Et quand je fais:
    avec la commande MS-DOS ca marche tres bien, ca me mets le chemin.

    Merci d'avance de votre aide.
    C'est tout un art de savoir programmer. Passant des heures à chercher une solution avec plaisir et joie.

  2. #2
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    Je ne crois pas qu'il soit possible de recuperer une variable d'environnement par ce biais là, j'ai moi même des variables personnalisées et elles n'apparraissent pas quand j'utilise le code suivant :

    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
    Private Sub G_Environ()
    Dim FEnviron As Worksheet
    ' Suppression de l'onglet s'il existe deja
    For Each FEnviron In Worksheets
        If FEnviron.Name = "Environ" Then
            FEnviron.Delete
        End If
    Next
     
    Set FEnviron = Worksheets.Add(Before:=Worksheets(Worksheets.Count))
    FEnviron.Name = "Environ"  
     
    For i = 1 To 255
        On Error Resume Next
        Debug.Print i & " : "; Environ(i)
        If Environ(i) > " " Then
            FEnviron.Cells(i + 1, 1).Value = i
            FEnviron.Cells(i + 1, 2).Value = Environ(i)
        End If
        On Error GoTo 0
    Next
    ' Separation au niveau de la variabel d'environnement
     
    Columns("B:B").TextToColumns Destination:=Range("B2"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
            :="=", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
     
    ' Formatage des cellules
     
    FEnviron.Cells(1, 1).Value = "Numéro"
    FEnviron.Cells(1, 2).Value = "Nom"
    FEnviron.Cells(1, 3).Value = "Chemin"
     
     
    With FEnviron.Range("A1").CurrentRegion
        .Columns.AutoFit
        ' .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .BorderAround Weight:=xlThick
        .Borders.LineStyle = xlContinuous
    End With
     
    With Union(FEnviron.Cells(1, 1), FEnviron.Cells(1, 2), FEnviron.Cells(1, 3))
    .Font.bold = True
        With .Interior
            .ThemeColor = xlThemeColorAccent3
            .TintAndShade = -0.249977111117893
        End With
    End With
    End Sub

  3. #3
    Membre habitué Avatar de scully2501
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 148
    Points
    148
    Par défaut
    elles n'apparraissent pas quand j'utilise le code suivant :
    Tu voulais dire que ca marche que avec ce code je suppose?

    Merci de ton aide je vais essayé de comprendre ton code et voir si ca marche car ca me parait tres tres long comme code pour que recuperer l'adresse d'un environnement de variable window.

    S'il y a d'autre proposition merci de votre aide

    A moins que je me trompe ton code n'a rien à voir avec les environnements de variable window?
    Tout ce passe dans Excel et c'est tout.

    Est ce que je me trompe?
    C'est tout un art de savoir programmer. Passant des heures à chercher une solution avec plaisir et joie.

  4. #4
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Non en fait ce que je voulais dire c'est que je n'arrive pas non plus a recupperer une variable d'environnement personnalisée.

    Mon code recupère seulement les variables d'environnement classiques.

    Par exemple ceci fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub x()
    MsgBox Environ("username")
    End Sub
    Par contre

    ne donne rien non plus chez moi alors que sous dos
    la commande set a me donne bien le chemin.


    Edit: en fait ce sujet m'intéresse mais je n'ai pas encore de réponse.

    Edit2: un essai avec une dll et toujours pas mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Declare Function GetEnvironmentVariable Lib "kernel32" Alias "GetEnvironmentVariableA" (ByVal lpName As String, ByVal lpBuffer As String, ByVal nSize As Long) As Long
    Sub testx()
    titi = GetEnvironmentVariable("Temp", "", 0)
    MsgBox titi '=> 36
    titi = GetEnvironmentVariable("a", "", 0)
    MsgBox titi '=> 0
    End Sub

  5. #5
    Membre habitué Avatar de scully2501
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 148
    Points
    148
    Par défaut
    J'ai trouvé cela comme possible solution:
    Mais "chemin" me retourne "%FontRootDir%"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub GetEnvVar()
     
       Dim WShell As Object    
       Set WShell = CreateObject("WScript.Shell")
     
       'Récupération du dossier
        On Error Resume Next
        chemin = WShell.ExpandEnvironmentStrings("%FontRootDir%")
         If Err.Number <> 0 Then
     message = MsgBox(Err.Description, vbCritical, "Error number " & Err.Number)
         End If 'If Err.Number = 0        
     
    End Sub 'GetEnvVar
    J'ai remarqué que tant je mets par exemple une variable créer par windows genre %TEMP%, ca marche mais quand c'est une variable personnalisé ca ne marche pas:

    Le chemin de %TEMP% est :
    %USERPROFILE%\Local Settings\Temp
    Et le mien est:
    %USERPROFILE%\Desktop\Font\Developpements\Filesystem\Client
    Et le mien ne marche pas.
    C'est tout un art de savoir programmer. Passant des heures à chercher une solution avec plaisir et joie.

  6. #6
    Membre habitué Avatar de scully2501
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 148
    Points
    148
    Par défaut
    J'ai trouvé la réponse, il faut redémarrer l'ordinateur après avoir créer la variable:

    Ci joint le code:

    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
    Sub GetEnvVar()
     
        Dim WShell As Object
     
        Const x = "%FontRootDir%"
     
     
        Set WShell = CreateObject("WScript.Shell")
     
            'Récupération du dossier 
            On Error Resume Next
     
            chemin = WShell.ExpandEnvironmentStrings("%FontRootDir%\")
     
            If Err.Number <> 0 Then
               message = MsgBox(Err.Description, vbCritical, "Error number " & Err.Number)
            End If 'If Err.Number = 0
     
     
    End Sub 'GetEnvVar
    C'est tout un art de savoir programmer. Passant des heures à chercher une solution avec plaisir et joie.

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

Discussions similaires

  1. [langage] Création de variable d'environnements
    Par Smaugg dans le forum Langage
    Réponses: 20
    Dernier message: 26/04/2004, 09h32
  2. [BES] Création d'une variable d'environnement
    Par NGI80 dans le forum Autres
    Réponses: 2
    Dernier message: 17/10/2002, 07h31
  3. nom de fichier et variables d'environnement
    Par joebarthib dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2002, 15h21
  4. Réponses: 4
    Dernier message: 18/07/2002, 13h32

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