Excel vba

Signaler
Messages postés
2
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
18 mars 2012
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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

9 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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
Messages postés
7
Date d'inscription
lundi 20 septembre 2010
Statut
Membre
Dernière intervention
20 mars 2012

ucfoutu, tu serais pas légèrement en train de troller ce pauvre type?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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
Messages postés
1
Date d'inscription
mardi 19 décembre 2000
Statut
Membre
Dernière intervention
20 mars 2012

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.

Le type est de toute évidence un apprenti.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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