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 :

Recherche récursive dans base de registre [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut Recherche récursive dans base de registre
    Bonjour a tous
    je fait une recherche dans la base de registre pour trouver une cle j'ai reussi a la trouver mais c'est pas jolie et en plus selon les version de windows
    la clé recherchée peut non seulement une souscle mais aussi une soussousclé

    il y a certainement le moyen de coder ca mais en boucle récursive la je plante je ne suis pas le plus fort dans ce domaine
    pour le moment j'ai fait ceci et je reussi parceque la cle est une sousclé mais si l'arborescence est plus longue ca risque de planter de sur meme!!!

    et par la suite je voudrais récupérer 2 variables dans les valeur dword
    alors voila ce que j'ai gribouillé
    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
    'POUR INFO :
    'HKEY_CLASSES_ROOT     = &H80000000
    'HKEY_CURRENT_USER = &H80000001
    'HKEY_LOCAL_MACHINE = &H80000002
    'HKEY_USERS = &H80000003
    'HKEY_CURRENT_CONFIG = &H80000005
    Dim cherche
    Sub test()
    cherche = True
    CheminCle = "System\CurrentControlSet\Control\VIDEO\"
    cherchecle &H80000005, CheminCle
    End Sub
    Function cherchecle(base, CheminCle)
     
    Set BDR = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    'on enumère nos sous clé, et on affecte à une variable SousCles
    BDR.EnumKey base, CheminCle, souscles
    'on recupere la chaine de chaque sous clé.
    For Each souscle In souscles
         If cherche = True Then cherchesoucle base, CheminCle & souscle, cherche
    Next
    End Function
    Function cherchesoucle(base, CheminCle, cherche)
    Set BDR = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    BDR.EnumKey base, CheminCle, souscles
    'on recupere la chaine de chaque sous clé.
    For Each souscle In souscles
       ' MsgBox "ttt" & souscle
        If souscle = "0000" Then cherche = False: lire (CheminCle & "\" & souscle): Exit For
    Next
    End Function
    Sub lire(cle)
    MsgBox "HKEY_CURRENT_CONFIG" & "\" & cle
    'Set Sh = CreateObject("WScript.Shell")
    'MsgBox Sh.RegRead("HKEY_CURRENT_CONFIG" & "\" & cle)
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour patrick,

    J'avais fait un truc il y a pas mal de temps à peu près dans le même esprit.
    J'ai réadapté pour toi :
    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
    Dim cherche
     
    Sub test()
     
    cherche = "TSDDD"
    CheminCle = "SYSTEM\CurrentControlSet"
    cherchecle &H80000005, CheminCle, ""
     
    End Sub
     
    Function cherchecle(base, CheminCle, savesouscle)
     
    Set BDR = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
     
    BDR.EnumKey base, CheminCle, souscles
     
    If Not IsNull(souscles) Then
        If savesouscle <> cherche Then
            For Each souscle In souscles
                cherchecle base, CheminCle & "\" & souscle, souscle
     
            Next
        Else
            lire (CheminCle & "\" & souscle)
        End If
    Else
        If savesouscle = cherche Then lire (CheminCle & "\" & souscle)
    End If
     
    End Function
     
    Sub lire(cle)
     
    MsgBox "HKEY_CURRENT_CONFIG" & "\" & cle
    'Set Sh = CreateObject("WScript.Shell")
    'MsgBox Sh.RegRead("HKEY_CURRENT_CONFIG" & "\" & cle)
    End Sub
    C'est ce que tu souhaites, ou j'ai rien compris ?

    Cordialement,
    Kimy

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour kimi
    a vrai dire j'ai rien compris a ce que tu a essayé de faire
    en tout cas le resultat me donne la base plus le chemin initié en debut de sub ca fait rien d'autre

    en gros il faudrait demarrer a partir de "HKCU\System\CurrentControlSet\Control\VIDEO\"
    et boucler sur les enfant,les petit enfant,les arrieres petits enfant jusqu'a arriver a la clé "0000"
    voila une idée?
    je n'ai toujours pas compris a quoi sert ton code ????????
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bon bah je dois être à côté de la plaque.
    Mon code recherche tous les répertoires de l'éditeur de registre (à partir du chemin défini) la valeur placée dans cherche et affiche leur chemin.

    Je passe donc la main. Déso.

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Kimy_Ire Voir le message
    Bon bah je dois être à côté de la plaque.
    Mon code recherche tous les répertoires de l'éditeur de registre (à partir du chemin défini) la valeur placée dans cherche et affiche leur chemin.

    Je passe donc la main. Déso.
    non! pas du tout il cherche juste les repertoires enfants et non pas tout les repertoire
    moi ce que je cherche c'est une boucle récursive qui boucle et sousboucle autant de fois que necessaire pour arriver a l'xxxxx arriere enfant
    autrement dis 2 boucle imbriquée devrait suffir

    on arrive a faire ca pour lister les fichier d'un disque dur on devrait pouvoir le faire pour ca
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Hum...
    Avec un répertoire comme ceci :
    Nom : recherche1.png
Affichages : 880
Taille : 8,6 Ko
    et une recherche comme ceci :
    Nom : recherche2.png
Affichages : 854
Taille : 6,0 Ko
    Je trouve bien :
    Nom : recherche3.png
Affichages : 850
Taille : 5,0 Ko
    Il y a quelque chose que je ne dois pas comprendre... Désolé.

    Kimy

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PowerShell] Recherche dans base de registre
    Par g.boutin dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 27/05/2014, 17h39
  2. variable d'environnement dans base de registre
    Par niro75 dans le forum Windows XP
    Réponses: 9
    Dernier message: 18/09/2008, 13h39
  3. Recherche approchante dans base de données (ou ailleurs)
    Par ZePostman dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/05/2007, 15h43
  4. Rechercher remplacer dans base MySQL
    Par mandala75 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/09/2006, 15h14
  5. pb pour lire/écrire dans base de registre
    Par Doksuri dans le forum Oracle
    Réponses: 6
    Dernier message: 21/06/2006, 13h34

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