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 :

[VBA - E] Controler recherche windows


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de alex_elder1_1
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut [VBA - E] creation liens fichier
    bjr a tous

    j'ai trouve une meilleur maniere de formuler mon probleme dc je cree un nveau post pour que ce soit plus clair.
    d'une part j'ai
    j'ai ds ma feuille 2 de book1 colonne b des numeros de moteur
    et d'autre part un fichier appele motor test data dump dont le chemin d'acces est \\Ctdwks055\motor test data dump. ds ce fichier j'ai un sous dossier par numero de moteur
    je veux donc que pour chaque moteur ds la colonne b de ma feuille 2 apparaisse le lien vers le sous dossier du fichier motor test data dump propre a chaque moteur.
    deuxieme probleme
    chaque sous dossier est appele de la maniere suivante ID 1555 (exemple num de moteur) 15224jg555 (exemple description moteur)
    je voudrais qu'il ne recherche que par rapport au num de moteur sachant que ID est constante.
    je voudrais avoir la commande pour chercher le lien et que par rapport au num de moteur
    cette recherche jusqu'a tps qu'il n'y ait plus de moteurs ds la colonne b


    je vous serais reconnaissant de m'aider
    merci d'avance

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Des trucs qui vont te paraître des détails :
    Quel est le format de tes noms de dossiers réunissant num de moteur et description moteur ?
    As-tu un espace entre les deux ?
    Le format du n° de moteur comporte-t-il toujours 4 chiffres ?
    Pourquoi tes dossiers n'ont-ils pas tout simplement le N° de moteur ?

    Enfin,
    Citation Envoyé par Tu
    ds ce fichier j'ai un sous dossier par numero de moteur
    Je pense que tu as voulu dire ds ce dossier... sinon je ne comprends pas
    Selon tes réponses, tu as plusieurs solutions sont possibles
    A+

  3. #3
    Membre confirmé Avatar de alex_elder1_1
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    le num de moteur peut comporter de 0 a 4 chiffres
    pour le nom du sous dossier je n'y suis pour rien je suis dsl c'est le laboratoire de l'entreprise qui gere ca comme ca depuis des annees dsl
    oui c'etait bien dossier et non fichier dsl prob d'ecriture
    pour exemple chemin acces sous dossier \\Ctdwks055\motor test data dump\ID 903 190UMD200CACAA le dossier source ou sont les sous dossiers est donc motor test data dump

    sachant que ID est fixe 903 = num de moteur et le reste description mais je ne voudrais aps en tenir compte comme ID
    merci de maider

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu ne m'as pas répondu à "As-tu un espace entre les deux ?" (N° de moteur et description. Dans ton exemple, 1555 et 15224jg555 sont-ils séparés par un espace ?
    A+

  5. #5
    Membre confirmé Avatar de alex_elder1_1
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    oui ils le sont dsl il y en a un aussi entre ID et num de moteur
    j'avais pas compris pour ca
    en fait la fonctionnalite d'excel n'est pas adaptee parce que je veux mettre cette commande ds ma recherche et je peux avoir plus de 1000 numeors de moteurs dc je veux quelque chose qui va les creer seul et non moi m manuellement tu comprends?
    merci

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Comme on me réclame pour manger, je te donne des bouts
    Pour insérer le lien hypertexte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub InsérerUnLienHypertexte()
        With Worksheets("Feuil1")
            .Hyperlinks.Add Anchor:=.Range("a5"), Address:="D:\xls\Liste pour fusion.xls"
        End With
    End Sub
    Pour retrouver tes sous-dossiers, tu listes les dossier et tu compares chaque nom de sous-répertoire avec le nom fourni par ça NoMoteur dans le code ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TableuRep = Split(NomSousRep, " ")
    NoMoteur = TableuRep (1)
    Bon app

  7. #7
    Membre confirmé Avatar de alex_elder1_1
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    Address:="D:\xls\Liste pour fusion.xls"
    que dois je mettre a la place de \xls\Liste pour fusion.xls
    le nom de mon programme excel ou le chamin d'acces vers le dossier ou sont les sous dossiers
    n'y a t-il pas un moyen de trouver une commande qui va rechercher le sous dossier au lieu de rentrer tous les sous dossier un par un? merci d'avance bon app

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu dois parcourir le dossier d:\Ctdwks055\motor test data dump\ afin d'obtenir les noms des sous-dossiers
    Parmi ces noms, tu vas en trouver un dont le No de moteur correspondra à celui de ta colonne B. Une fois identifié, tu auras le nom complet du sous-dossier et donc son chemin complet.
    Ceci dit, tu ne nous donnes pas de précision sur le fichier à ouvrir.
    Tu ne dis pas non plus dans quelle colonne tu veux placer le lien.
    Mais je verrais assez un truc comme ça
    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
    Sub Principale()
    NoDernièreLigneColonneB =  Range("B1").SpecialCells(xlCellTypeLastCell).Row
        For i = 2 to NoDernièreLigneColonneB
              LireRep Cells(i,2).value, i    'i = No de la ligne du N° de moteur lu
        Next
    End sub
    
    Sub LireRep(NoMoteur, NoLigne)
        Chemin =  "d:\Ctdwks055\motor test data dump\"
        ' Affiche les noms des sous-répertoires contenus dans ce répertoire
        NomRep = Dir(Chemin, vbDirectory)
        Do While NomRep <> ""
            If NomRep <> "." And NomRep <> ".." And NomRep <> "" Then
                ' vérifie que NomRep est un répertoire.
                rep = (GetAttr(NomRep) And vbDirectory)  = vbDirectory
                If rep then
                       TableauRep = Split(NomRep , " ")
                       if NoMoteur = TableuRep (1) Then
                             'Là, il manque le nom du fichier                         NomComplet = Chemin & NomRep & "\" & NomFich
                             InsérerUnLienHypertexte NomComplet, NoLigne
                       endif
                End If
            End If
            NomRep = Dir    ' Extrait l'entrée suivante.
        Loop
    End sub
    
    Sub InsérerUnLienHypertexte(NomLien, NoLigne)
        With Worksheets("Feuil1")
            .Hyperlinks.Add Anchor:=.Cells(NoLigne, NoColonne), Address:=NomLien
        End With
    End Sub
    Tu adaptes le nom du fichier et le N° de colonne de tes liens et tu nous dis
    A+

    NB - JE N'AI PAS LE TEMPS DE TESTER

  9. #9
    Membre confirmé Avatar de alex_elder1_1
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    dsl j'ai des doutes pour remplacer
    mon programme s'appelle Book1
    j'ai mes codes colonne b feuille 2 de ce programme
    et je veux que les hyperliens apparaissent soit m place en cliquant sur le nombre ou sinon colonne L => le plus facile a faire
    a ouvrir je veux juste qu'il ouvre le sous dossier propre a cahque moteur (cad ouvrir la fenetre ou sont ranges les diff fichiers) je veux juste ouvrir un sous dossier en fait pas de fichier j veux avoir la fenetre de chaque sous dossier propre au moteur s'ouvrir => pas de fichier excsue moi si j'ai pas ete clair
    \\Ctdwks055\motor test data dump\ID 903 190UMD200CACAA => sous dossier
    le chamin d'acces de mon programme est:\\Ctdynamics1\r&d\General\Students\CPlat\Visual Basic\LAB MANAGER\Book1(.xls)
    est ce mieux?
    peux tu me montrer un exemple avec le sous dossier \\Ctdwks055\motor test data dump\ID 1032 142U2B600 steplait sachant dc que le num de moteur sera 1032
    merci d'avance

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Alors si ce n'est qu'ouvrir le répertoire, tu n'as pas besoin de lien hypertexte
    Regarde Dialogs dans l'aide et gère tout ça dans la feuille de code de la feuille de calcul contenant les N° de moteurs. Fais ça dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    'Target te donne l'adresse de la cellule selectionnée
    NoMoteur = Target.Value
    'Là tu utilises ce que t'ai passé pour rechercher le chemin complet du sous-Rep 
    'sans créer de lien et une fois que tu as le nom du répertoire,
    'tu te places dedans. 
    ChDir nomComplet 'Ex : "D:\Ctdwks055\motor test data dump\" & NomSousRep 
    'et tu appelles Dialogs.xlDialogOpen	
    End Sub
    Là je n'ai plus le temps, mais tu as tous les éléments.
    Bon courage
    A+

  11. #11
    Membre confirmé Avatar de alex_elder1_1
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    dsl en fait je voudrais ouvrir le bon sous fichier pour chaque moteur sans avoir a choisir ds le repertoire
    comme si j'avais un lien pas vers un fichier mais vers le sous rep directement
    pour le code que tu viens de me donner je n'y arrive pas en l'occurence j'arrive pas a l'actualiser
    jette y un coup d'oeil qd tu peux
    merci d'avance

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je ne comprends pas. Tu veux lancer l'Explorateur sur le bon répertoire ?

  13. #13
    Membre confirmé Avatar de alex_elder1_1
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    en fait je veux ouvrir directement le bon repertoire pour chaque moteur ds ce repertoire de base
    => que ce soit directement ouvert bon dossier par moteur
    mais si je dois le faire un par un c a exclure
    merci

  14. #14
    Membre confirmé Avatar de alex_elder1_1
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut [VBA - E] Controler recherche windows
    Bjr a tous

    Est il possible de commander la recherche windows ds un repertoire (vs savez pour chercher des fichiers qd vous rentrez le nom) depuis VBA - E
    merci

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Une question : Pourquoi veux-tu ouvrir le répertoire ? Je n'ai toujours pas compris ce que tu veux faire une fois le répertoire du bon N° de moteur ouvert. De là dépend la réponse.
    Une autre question : Veux-tu ouvrir le répertoire dans VBA/EXCEL ou à l'aide de l'Explorateur Windows ?
    Ça éclairerait le débat si tu pouvais répondre précisément à ces deux questions.
    A+

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je t'ai donné la réponse avec VBA-E. Mais je n'ai toujours pas compris ce que tu cherches à faire.
    Ta recherche, A QUOI DOIT-ELLE TE SERVIR ? Si c'est pour ouvrir un fichier, dis-le.
    Si c'est pour connaître simplement la liste des fichiers qu'il contient, précise-le.
    Comme cette question est la même que ce post http://www.developpez.net/forums/sho...d.php?t=249734 je fusionne les messages

  17. #17
    Membre confirmé Avatar de alex_elder1_1
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    je te propose autre chose c'est d'ouvrir l'explorateur windows pour chaque ligne et de rechercher le ID le num du moteur et les 3 premiers caracteres de sa description tjrs ds le dossier \\Ctdwks055\motor test data dump
    est ce possible?
    sachant que cette recherche se fait automatiquement (entree de la recherche et mise en marche recherche) et que entre ID, num de moteur et descrip il y a un espace.
    mon num de moteur est colonne B et ma description est colonne E
    les deux sont feuille 2.
    je ne veux plus que ca me l'ouvre juste que ca me le recherche et que apres j'ai le dossier du moteur ds la fenetre recherche qui correspond dc aux criteres que je t'ai donnes (ID_nummoteur(1 a 4 caracteres)_(3premiers caracteres descript))
    je veux que ca me cree un lien vers la recherche pour chaque ligne qui a un num de moteur et donc une recherche propre par ligne
    "do while .cells(i,2)<>"" And cells(i+1,2)<>"" ."
    en fait je veux que la commande m'affiche le dossier du moteur ds le dossier source \\Ctdwks055\motor test data dump et donc juste a avoir a cliquer pour l'ouvrir qd je clique sur le lien que la recherche se fasse
    est ce possible s'il te plait
    ca m'aiderait bcp

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    J'ai bien compris ça. Avec l'Explorateur Windows, une recherche depuis VBA, je ne sais pas faire et, en admettant que tu aies les paramètres à passer à l'Explorateur, n'a pas de réel intérêt par rapport à ce que tu veux faire.
    La solution que je t'ai donnée dans les toutes premières réponses affiche la liste des fichiers contenus dans le sous-répertoire correspondant au N° moteur que tu as sélectionné dans une cellule (1 clic).
    Est-ça que tu veux ?

  19. #19
    Membre confirmé Avatar de alex_elder1_1
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    dsl mais je ne comprends pas en fait le code que tu m'avais file parce que je dois avoir le sous dossier ouvert ds ma fenetre automatiquement donc avoir tous les fichiers (le contenu du sous dossier)
    mais je ne veux pas ouvrir de fichier juste un dossier
    le probleme que j'ai si tu peux me donner un exemple avec un dossier par exemple contenu ds le dossier principal \\Ctdwks055\motor test data dump avec le moteur ID 1032 142U2B600 donc son repertoire sera:\\Ctdwks055\motor test data dump\ID 1032 142U2B600 je veux que en fait il m'ouvre le bon rep pour le moteur
    un lien par ligne (par num de moteur)
    mais le prob je crois que j'avais c'est de fixer lequivalent un par un parce que j'ai plus de 3000 codes
    en fait je suis perdu ds ce que tu m'as donne dsl
    peux tu me mettre un exemple qui marcherait avec le code que tu me donnes
    mais l'explorateur de recherches c'est juste une possibilite je n'en suis pas sur
    mais je veux que l'explorateur soit ouvert sur le bon repertoire dc que je vois le contenu.
    steplait
    merci

  20. #20
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ok. Ce coup-ci on est d'accord.
    Mets le code suivant dans la feuille de code de la feuille de calcul (Dans l'éditeur VBA, deux clics sur le nom de la feuille contenant les N° de moteurs dans la colonne B ouvre cette feuille de 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
    21
    22
    23
    24
    25
    26
    27
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    'Target te donne l'adresse de la cellule selectionnée
    If Target.Column <> 2 Then Exit Sub
    NoMoteur = Target.Value
    Chemin = "d:\Ctdwks055\motor test data dump\"
    NomComplet = Chemin & NomDuRépertoire(Chemin, CStr(NoMoteur)) & "\"
    ChDir NomComplet 'Ex : "D:\Ctdwks055\motor test data dump\" & NomSousRep
    dlgAnswer = Application.Dialogs(xlDialogOpen).Show
    End Sub
     
    Function NomDuRépertoire(Chemin, NoMoteur)
        ' Affiche les noms des sous-répertoires contenus dans ce répertoire
        NomRep = Dir(Chemin, vbDirectory)
        Do While NomRep <> ""
            If NomRep <> "." And NomRep <> ".." And NomRep <> "" Then
                ' vérifie que NomRep est un répertoire.
                If (GetAttr(Chemin & NomRep) And vbDirectory) = vbDirectory Then
                       TableauRep = Split(NomRep, " ")
                       If NoMoteur = TableauRep(1) Then
                             NomDuRépertoire = NomRep
                             Exit Do
                       End If
                End If
            End If
            NomRep = Dir    ' Extrait l'entrée suivante.
        Loop
    End Function
    Ensuite, fais un clic sur un des N° de moteurs et raconte
    Ceci dit, j'ai fait ton boulot, alors essaie de comprendre le code que je te mets
    Tu peux faire ça pour moi ?
    A+

    NB - Déclare les variables, je ne l'ai pas fait pour aller plus vite. Mais fais d'abord l'essai sans les déclarer (juste pour qu'une erreur de déclaration ne bug pas les procédures )

    PS - J'ai testé ce code, il fonctionne très bien chez moi.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. VBA + Recherche windows sur contenu
    Par torix31-fr dans le forum Général VBA
    Réponses: 4
    Dernier message: 19/06/2014, 21h39
  2. [VBA] Excel control de touche tab
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/01/2006, 15h24
  3. [Vba + Excel] requete rechercher en vba
    Par Emcy dans le forum Access
    Réponses: 2
    Dernier message: 14/11/2005, 09h38
  4. [VBA-E] Controle Webbrowser
    Par Mystify dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/10/2004, 21h30
  5. [VBA] Algo de recherche de doublons
    Par guams dans le forum VBA Access
    Réponses: 6
    Dernier message: 27/07/2004, 17h10

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