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

VBA Word Discussion :

Comment passer un variable string sans "" pour savoir si un repétoire existe


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Par défaut Comment passer un variable string sans "" pour savoir si un repétoire existe
    Bonjour,
    je suis à la recherche d'un petit peu votre temps en beaucoup de votre grand savoir.
    je souhaite "automatiser" la function FolderExist en lui envoyant comme argument une variable de type String (exemple: garageTO) et non par ("garageTO") . En effet, j'ai créé une macro word qui recherche dans tout le document le nom de différents garages et je souhaite qu'à chaque fois qu'il trouve un nom de garage, l'on vérifie s'il y a ou non un répertoire comportant le mon de garage.

    la function fonctionne lors qu'un lui passe en argument "D:Exemple\garageTO" mais pas quand je lui passe ""D:Exemple\"&garageTO.
    je ne sais pas si c'est possible de ne passer que la variable string (sans les " ")?. mais je suis preneur est'il possible
    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Function FolderExists(ByVal PathName As String) As Boolean
    Dim lngAttr As Long
         On Error GoTo NoFolder
         lngAttr = GetAttr(PathName)
         If (lngAttr And vbDirectory) = vbDirectory Then ' on vérifie que c'est bien un répertoire
             FolderExists = True
         Else: FolderExists = False
         'Else: CreateFolders (PathName)
         Debug.Print FolderExists & "n'existe pas"
         End If
    NoFolder:
     
     End Function

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Par défaut
    je souhaite assigner le 'path File' en une variable

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par Tintin72TCS Voir le message
    Bonjour,
    la function fonctionne lors qu'un lui passe en argument "D:Exemple\garageTO" mais pas quand je lui passe ""D:Exemple\"&garageTO.
    Ben quoi! ton ""D:Exemple\"&garageTO est un string de broche à foin que VBA ne considèrera jamais valide.

    je ne sais pas si c'est possible de ne passer que la variable string (sans les " ")?. mais je suis preneur est'il possible
    Merci d'avance
    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
    Sub BeauDossier()
         Dim a as string
         Dim b as string
         dim c as string
         dim d as string
         dim e as string
         a = "c"
         b= ":\"
         c= "Windows" & "\"
         d = "System32"
         e = a & b & c & d
          MontreMoiCeQueCelaDonne e
    end sub
     
    Sub MontreMoiCeQueCelaDonne(texte as string)
         msgbox(texte)
    end sub

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Par défaut
    Hi Clément,
    merci pour ta réponse, malheureusement cela ne répond pas à ma problématique. En effet, je voudrai passer en argument de ma function FolderExists une variable de type string, par exemple FolderExist ( garage Mathieu) et non pas FolderExist("garage Mathieu"). cela suppose évidemment que le chemin (path) du répertoire soit connue par la function


    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
     Sub TesterCode01() ' macro pour tester le code
     Dim test As Boolean  
     test = FolderExists001("Garage Michel") '----------- cette ligne fonctionne, malheureusement je voudrai passer uniquement le nom sans les ""   c'est à dire FolderExists001(Garage Michel) 
     Debug.Print test
     End Sub
     
     
     
    Public Function FolderExists001(ByVal garageName As String) As Boolean
    Dim StrFolder As String
     
     StrFolder = "C:\Users\Yann\Desktop\VBA repertoire\Garage_Eval_N2\" 'j'indique ici le répertoire ou regarder si le répertoire attribuée à la variable garageName existe
                                                                                                             ' en effet la valeur de garageName est le résultat d'une recherche dans mon document
     Dim lngAttr As Long
     On Error GoTo NoFolder
     
     lngAttr = GetAttr(StrFolder & garageName)
     If (lngAttr And vbDirectory) = vbDirectory Then ' on vérifie que c'est bien un répertoire
     FolderExists001 = True
     Else: FolderExists001 = False
     'Else: CreateFolders (PathName)
     Debug.Print FolderExists001 & "n'existe pas"
     End If
    NoFolder:
     End Function
    Je ne sais pas si je suis très clair !!! Merci de l'aide que vous pourrez m' apporter

    bonne nuit

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Tu perds ton temps. Tu dois transférer une valeur en string à ta fonction. Pour cela, il y a deux moyens, pas plus.

    1) Une chaîne de caractères entre guillemets, sinon cela plante parce que sans guillemets ou non identifié par une variable de type string, cela ne peut pas être un type string. Et puis, de toutes façons, les guillemets sont automatiquement éliminés par VBA avant de les utiliser.

    2) Une variable de type string.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim machin as string
    machin = "garage Mathieu"
    test = FolderExists001(machin) '
    De toutes façons, si tu passes garage Mathieu, sans guillemet tu passes deux variables de type variant, et même pas des chaînes de caractères, à une fonction qui demande un string. C'est la quadrature du cercle.

    Citation Envoyé par Tintin72TCS Voir le message
    Hi Clément,
    merci pour ta réponse, malheureusement cela ne répond pas à ma problématique. En effet, je voudrai passer en argument de ma function FolderExists une variable de type string, par exemple FolderExist ( garage Mathieu) et non pas FolderExist("garage Mathieu"). cela suppose évidemment que le chemin (path) du répertoire soit connue par la function

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Par défaut
    bonjour Clément,
    merci pour ta réponse qui m'a parfaitement éclairée sur la non possibilité de ma requête. je vais donc essayé d'attaquer ma problématique sous un autre angle.
    Bien à toi

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Par défaut
    De retour sur mon interrogation concernant l'existante d'un répertoire:

    la variable Strfolder est bien de type string. A cette variable, j'affecte 2 autres variables PathName et garageName toutes 2 de type string.

    debug.print me donne bien un résultat de type string dans la fenêtre exécution (idem via l'espion vba)

    C:\Users\Yann\Desktop\VBA repertoire\Garage_Eval_N2\garage Mathieu

    or ma macro FolderExists bloque à getAttr(Strolder) en indiquant "argument ou appel procédure incorrect" (il est entendu que le chemin d'accès est correcte et que le répertoire existe bien)

    j'avoue en prendre mon latin

    quelqu'un pour m'aider, merci?

  8. #8
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Tintin72TCS Voir le message
    De retour sur mon interrogation concernant l'existante d'un répertoire:

    la variable Strfolder est bien de type string. A cette variable, j'affecte 2 autres variables PathName et garageName toutes 2 de type string.

    debug.print me donne bien un résultat de type string dans la fenêtre exécution (idem via l'espion vba)

    C:\Users\Yann\Desktop\VBA repertoire\Garage_Eval_N2\garage Mathieu

    or ma macro FolderExists bloque à getAttr(Strolder) en indiquant "argument ou appel procédure incorrect" (il est entendu que le chemin d'accès est correcte et que le répertoire existe bien)

    j'avoue en prendre mon latin

    quelqu'un pour m'aider, merci?
    Ton code appelles la fonction VBA getattr() qui sert à retourner les attributs "Normal", "Lecture seule", "Caché", "Système", "Dossier" et "Archive" du fichier/dossier.
    Chose certaine, tu peux expérimenter ceci. Cela fonctionne pour pratiquement tous les mots-clefs de VBA.

    Dans l'Éditeur VBE tu cliques sur getattr et immédiatement après, tu appuies sur

    Tu vas arriver sur la page d'aide de VBA sur getattr. Il y a un lien vers un exemple.

  9. #9
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    En prime le dossier est créé, s'il n'existe pas. En passant, tu devrais oublier l'histoire de rabouter des instructions sur la même ligne. C'était utile pour économiser de la mémoire sur une machine à 16 k de mémoire, mais aujourd'hui, le fait que cela complique le débogage est plus important que de ménager quelques octets de mémoire.

    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
    Sub Dossierexistetil()
        Dim StrFolder As String
        Dim garageName As String
        garageName = "Hector"
        'StrFolder = "C:\Users\Yann\Desktop\VBA repertoire\Garage_Eval_N2\" 'j'indique ici le répertoire ou regarder si le répertoire attribuée à la variable garageName existe
        ' en effet la valeur de garageName est le résultat d'une recherche dans mon document
        StrFolder = "C:\Temp\"
        StrFolder = StrFolder & garageName
        Dim estlà As Boolean
        estlà = FolderExists001(StrFolder)
        Select Case estlà
            Case True
                MsgBox ("Le dossier existe")
            Case False
                MkDir (StrFolder)
                MsgBox ("Si le programme n'a pas planté, le dossier est créé. Cependant, ce ne serait pas fou de traiter l'erreur.")
        End Select
    End Sub
     
     
    Public Function FolderExists001(ByVal garageName As String) As Boolean
     
        Dim lngAttr As Long
        On Error GoTo NoFolder
     
        lngAttr = GetAttr(garageName)
        If (lngAttr And vbDirectory) = vbDirectory Then ' on vérifie que c'est bien un répertoire
            FolderExists001 = True
        Else
            FolderExists001 = False
        End If
        Exit Function
    NoFolder:
        FolderExists001 = False
    End Function

Discussions similaires

  1. Comment convertir une variable string en double?
    Par quentinoux dans le forum C++
    Réponses: 12
    Dernier message: 31/07/2006, 10h46
  2. Comment passer une variable jsp à un script ?
    Par MAJIK_ENIS dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 28/05/2006, 20h50
  3. Réponses: 4
    Dernier message: 26/05/2006, 17h17
  4. [struts jsp/serveur] comment passer uen variable
    Par chouchou93 dans le forum Struts 1
    Réponses: 5
    Dernier message: 11/05/2006, 11h55
  5. Réponses: 6
    Dernier message: 14/02/2004, 14h01

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