Johnlightnin
Messages postés1Date d'inscriptiondimanche 22 janvier 2012StatutMembreDernière intervention18 mars 2012
-
18 mars 2012 à 17:16
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
20 mars 2012 à 18:48
Bonjour à tous (VBA)
Je voudrais vérifier la présence d'un fichier .xls dans une arborescence
d'un disque connue, mais dont l'emplacement dépend de l'utilisateur.
Je commence par recueillir le nom de l'utilisateur
Module1
Private Declare Function apiUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) as Long
Public FunctionbUserName() As String
Dim Bufstr As String
Bufstr = Space$(50)
If apiUserName (Bufstr,50)>0 Then
UserName=Bufstr
Else
UserName=""
End If
End Function
'Puis :
Module2
Sub auto_open()
Set fso= CreateObject("scripting.filesystemobject")
If fso.fileexists("C:\Documents and Settings\Username\Application Data\Microsoft\...\classeur.xls") = False Then
MsgBox "Le fichier est absent"
Else : MsgBox "Le fichier est présent"
End If
End Sub
Ma recherche s'arrête à C:\Documents and Settings\Username
Excel ne cherche pas après Username
Je ne comprends pas pourquoi? Merci, je débute seulement
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 18 mars 2012 à 17:25
Bonjour,
1) As-tu vérifier le contenu de UserName
2) étonnant, d'utiliser une fonction de l'Api de Windows alors que, sous VB.Net ===>> Tapez le texte de l'url ici. 3) "C:\Documents and Settings\Username\Application Data\Microsoft\...\classeur.xls"
Fait que "Username" figurera comme tel dans cette chaine !
Alors que tu veut y mettre le contenu de la variable UserName (B.A. BA !)
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 18 mars 2012 à 17:33
DEt je vois qu'en plus, tu semblerais développer sous VBA (Qu'es-tu alors venu faire ici : section VN.Net ? )
Et sous VBA : encore plus drôle de passer par une fonction de l'Api de Windows pour obtenir ce que te retourne :
Environ("username")
Reste le "coup" de la construction d'une chaîne de caractère par concaténation d'une chaîne avec le contenu d'une variable !
Et là, quand-même ===>> NON (trop rudimentaire de chez rudimentaire et je ne peux, personnellement, accepter de constater le paradoxe d'utilisation d'un code complexe sans même connaître ce fondement rudimentaire !).
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 18 mars 2012 à 17:44
Si tu veux de l'aide, tu vas me faire le plaisir de :
- ouvrir ton aide VBA et y lire comment on fait une concaténation de chaînes (opérateur &)
-ouvrir ton aide VBA et voir ce qu'est la fonction Dir, à utiliser tout bêtement en lieu et place du lourdaud FSO que tu as utilisé
- tester ce que retourne Environ("username") et l'utiliser.
Tu commenceras ainsi à apprendre et constateras à quoi se réduit finalement tout le code que tu es aller pêché je ne sais où.
Reviens sur ces bases (et je t'aiderai alors si nécessaire). Ou sans moi.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 18 mars 2012 à 17:55
et je n'avais pas vu le reste du chemin !
Alors regarde aussi ce que retourne :
Environ("APPDATA")
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 18 mars 2012 à 18:23
Allez va (c'est dimanche) :
regarde cet exemple qui va rechercher l'existence du classeur saisie6.xls dans le dossier adéquat (qui peut, en plus être différent d'une machine à l'autre). là : le chemin sera toujours vrai et exact jusqu'à Application Data\ inclus
If Dir(Environ("APPDATA") & "\Microsoft\Excel\saisie6.xls", vbHidden Or vbNormal) <> "" Then
MsgBox "fichier présent"
Else
MsgBox "fichier absent"
End If
et commence à réfléchir sur l'intérêt (évident) qu'il y a à se servir de son aide VBA plutôt qu'à perdre tout son temps à aller rechercher sur le Net des bouts de code (de surcroît lourdauds).
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 20 mars 2012 à 17:51
ucfoutu, tu serais pas légèrement en train de troller ce pauvre type?
tu trouves (c'est qu'alors tu n'y comprends rien) ? Moi pas
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Rubicant
Messages postés1Date d'inscriptionmardi 19 décembre 2000StatutMembreDernière intervention20 mars 2012 20 mars 2012 à 18:36
Pourquoi tirer des conclusions douteuse dans le genre (c'est qu'alors tu n'y comprends rien).
Tu es condéscendant avec le type, tu lui écris 4 réponses sans qu'il puisse réagir pour finalement décider de lui répondre correctement. Peut-être que pour toi c'est standard, à mon oeil, ce n'est pas constructif.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 20 mars 2012 à 18:48
Je fais comme JE l'entends, en m'efforçant, surtout avec un débutant, de le conduire à chercher un peu. C'est cela, que j'appelle "constructif".
Tu n'as manifestement pas la même manière de poser un regard sur les choses.
Je me demande ce que toi, tu es venu faire dans cette discussion, par contre !
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient