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

VBScript Discussion :

[VBS] - Fonction de recherche avec etoile


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 48
    Par défaut [VBS] - Fonction de recherche avec etoile
    Bonjour,
    J'ai une liste de nom de personne sur excel du style
    ddurand.txt
    pmartinez.txt
    spic.txt
    chaque nom correspondent à des fichiers sur un share :
    daniel durand.txt
    philippe martinez.txt
    sophie pic.txt

    J'arrive bien à extraire les noms depuis ma feuille excel, mais comment tester sur le share qu'il existe le nom complet en face ?
    la commande dos serait dir \\share\*durand.txt pour renvoyer daniel durand.txt

    Je ne vois pas trop comment faire.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 48
    Par défaut
    J'ai plus de 20 000 noms du mon partage réseau.
    Es-ce que la solution serait de stocker le nom de chacun des fichiers et faire une comparaison avec la commande StrComp(string1, string2[, compare]) pour chacune de mes valeurs de mon tableau Excel ?

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Je comprends pas ..., ta feuille excel contient bien le nom complet du fichier, ne te suffit-il pas tester l'existence de ce fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Set ofso = CreateObject("Scripting.FileSystemObject")
     
    '(... rajoute le code pour ouvrir et boucler dans ta liste en faisant varier la valeur de la variable MonFichier
     
    If Not oFso.FileExists(MonFichier) then msgbox "Fichier manquant : " & MonFichier
     
    '(... fin boucle)

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 63
    Par défaut
    Apparament son fichier excell ne contient pas les noms de fichiers complet et il n'y a pas de fonction * en vbscript.

    Solution: Lancer un ordre en dos via Wshell.run et envoyer le résultat dans un fichier temporaire qu'on lira par la suite et où se trouvera logiquement le nom complet du fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WshShell.Run "%comspec% /c DIR """ & YourPath & "*" & IncompleteFileName & ".txt"" >> temp.txt" ,1,True
    Attention: code à améliorer!
    Soit sûr que la commande DIR donne bien le long nom de fichier si non tu seras de nouveau dans la gadoue.
    Aussi il faut effacer temp.txt à chaque fois.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 48
    Par défaut
    Merci de votre aide,
    En me servant de la commande "dir", je suis arrivé a réaliser 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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    'pas d'arrêt d'éxécution en cas d'erreur
    on error resume next
     
    'DECLARATION DES OBJETS COM
    'pour la manipulation des fichiers
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    'ouverture excel
    TextXL = "c:\temp\Base.xls"
    Set oXL = WScript.CreateObject("EXCEL.application")
    Set ws = WScript.CreateObject("WScript.Shell")
    oXL.Visible = True
    Set OutPut = fso.CreateTextFile("c:\temp\log.txt",true)
    OutPut.WriteLine("[Recherche des Fichiers avec etoile]")
     
    '----Ouverture du document passe en ligne de commande----
    oXL.workbooks.open TextXL
     
    '----Activer la feuille ----
    oXL.sheets("Feuil1").Activate
     
    '----Activer et la premiere cellule et lecture du root----
    oXL.ActiveSheet.range("B2").Activate 
     
    Do While oxl.activecell.value <> ""
    	id = oxl.activecell.Value
    	valeur=LEN(id)-1
    	Name=RIGHT(id,valeur)
    	Recherche="z:\*" & Name
    	set DossierEnCours = ("c:\temp\")
    	OutPut.WriteLine("Valeur de Name : " & Name &" [ valeur de strWildCard : ]"& Recherche &VbCrLf)
    	test(recherche)
    	oxl.activecell.offset(1,0).activate
    Loop
     
    sub test(Recherche)
    	'Option Explicit
     
    	Dim objShell, objExec
    	Dim strCommand
    	Dim strFiles, strFile
     
    	strCommand = "%comspec% /C DIR " & Recherche & " /B"
     
    ' Optional argument /S tells the DIR command to list files
    ' in the directory and its subdirectories.
    	'If WScript.Arguments.Named.Exists("S") Then _
        'strCommand = strCommand & " /S"
     
    Set objShell = CreateObject("WScript.Shell")
    Set objExec = objShell.Exec(strCommand)
     
    strFiles = Split(objExec.StdOut.ReadAll(), VbCrLf)
     
    ' Last Entry will be a blank line
    ReDim Preserve strFiles(UBound(strFiles) - 1)
     
    For Each strFile in strFiles
        ' Do Action
        WScript.Echo strFile
    	OutPut.WriteLine("Trouvée de strFile : " & strFile & VbCrLf)
    	oxl.activecell.offset(0,2).Value= strFile
    Next
     
    end sub
     
    'oxl.application.quit
    wscript.echo "Fin de traitement"	
    WScript.Quit
    Il me reste maintenant a trouver un moyen pour faire afficher tous les résultats dans la feuille Excel lorsque il existe plusieurs solutions style :
    pour ddurant.txt ==> daniel durant. txt didier durant.txt denis durant.txt

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/07/2010, 12h28
  2. Problemes avec la fonction de recherche sur sharepoint
    Par nico_pouchet dans le forum SharePoint
    Réponses: 3
    Dernier message: 29/11/2007, 17h10
  3. Linked list: problemes avec fonction de recherche
    Par virtuadrack dans le forum C
    Réponses: 13
    Dernier message: 11/11/2007, 21h43
  4. Problème avec la fonction de recherche Vista
    Par p026687 dans le forum Windows Vista
    Réponses: 5
    Dernier message: 03/10/2007, 11h18
  5. Validation de formulaire recherche avec fonction javascript
    Par Cdic dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 19/01/2006, 10h52

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