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 :

Lire un fichier text [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 Lire un fichier text
    bonsoir a tous

    bon j'ai peut etre trouvé un moyen de conaitre la résolution de l'ecran pour toute version windows mais j'ai un petit soucis de lecture de fichier text

    alors voila j'exporte une cle de registre en fichier text jusque la tout va bien
    quand j'ouvre le fichier texte les cle sont bien a l'interieur
    seul probleme le fichier est enregistré en unicode
    et mon object fso ne peut pas le lire
    je réouvre le fichier et le réenregistre en ANSI et la mon fso l'ouvre bien
    donc ma question comment ouvrir ce fichier pour lire les lignes
    voila mon 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
    Sub test4()
    Dim fso, f, chemin, ligne,i
    chemin = " """ & ThisWorkbook.Path & "\rien.txt"" "
    Set sh = CreateObject("WScript.Shell")
    sh.Run "%comspec% /c REGEDIT /E " & chemin & """HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\VIDEO""", 0, True
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
     Set fso = CreateObject("Scripting.FileSystemObject")
     Set f = fso.OpenTextFile(ThisWorkbook.Path & "\rien2.txt", ForReading)
     mescle = f.ReadAll
     f.Close
    ligne = Split(mescle, vbCrLf)
    For i = 1 To UBound(ligne)
    '"DefaultSettings.XResolution"=dword:00000780
    '"DefaultSettings.YResolution"=dword:00000438
    If InStr(ligne(i), "DefaultSettings.XResolution") > 0 Then largeur = Val(Split(ligne(i), ":")(1)) * 2.46153
    If InStr(ligne(i), "DefaultSettings.YResolution") > 0 Then hauteur = Val(Split(ligne(i), ":")(1)) * 2.465: Exit For
    Next
     
    MsgBox largeur & " par " & hauteur
    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
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour Patrick

    As-tu songé à utiliser un fichier INI ? Facile à créer; facile à modifier; facile à lire.

    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
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
    Private Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
    Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
     
     
    Private Const CONFIG_FILE = "C:\Users\client\Documents\Test.ini"
     
     Sub Ecrire_Section_Clef_Valeur()
     
     Dim Section As String
     Dim Clef As String
     Dim sValeur As Variant
     
     Section = "Section3"
     Clef = "Clef10"
     
     sValeur = 12345
     
     xx = WriteINI(Section, Clef, sValeur)
     
     End Sub
     
     Sub Lire_Valeur()
     
     Dim Section As String
     Dim Clef As String
     
     Section = "Section3"
     Clef = "Clef10"
     
     xx = GetINIString(Section, Clef)
     
     End Sub

  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
    bonsoir docmarti

    les apis elles servent a quoi dans ton code?
    et puis ou est l'api ou la fontion "WriteINI"


    et dans un 2 eme temps je voudrais preciser mon souhait d'exclure l'utilisation des apis sinon a quoi bon autant utiliser getsystemmetrics voir meme plus direct l'apis showwindow sur un getactivewindow avec l'argument 3 pour afficher une fenetre plein ecran(meme pas besins de connaitre les dimensions )

    mon souhait est vraiment d'exclure les apis coute que coute

    y aurait il un moyen de resauver le fichier obtenu en ansi ?
    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
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    bonsoir docmarti

    les apis elles servent a quoi dans ton code?
    et puis ou est l'api ou la fontion "WriteINI"

    Oups ! J'ai oublié de copier 2 fonctions.

    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
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
    Private Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
    Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
     
     
    Private Const CONFIG_FILE = "C:\Users\client\Documents\Test.ini"
     
     Sub Ecrire_Section_Clef_Valeur()
     
     Dim Section As String
     Dim Clef As String
     Dim sValeur As Variant
     
     Section = "Section3"
     Clef = "Clef10"
     
     sValeur = 12345
     
     xx = WriteINI(Section, Clef, sValeur)
     
     End Sub
     
     Sub Lire_Valeur()
     
     Dim Section As String
     Dim Clef As String
     
     Section = "Section3"
     Clef = "Clef10"
     
     xx = GetINIString(Section, Clef)
     
     End Sub
     
     
    Public Function GetINIString(ByVal Section As String, ByVal Clef As String) As String
     
        Dim sBuf As String * 256
        Dim lBuf As Long
     
        lBuf = GetPrivateProfileString(Section, Clef, "", sBuf, Len(sBuf), CONFIG_FILE)
        GetINIString = Left$(sBuf, lBuf)
    End Function
     
     
    Public Function WriteINI(ByVal Section As String, ByVal Clef As String, ByVal sValeur As String) As String
        WritePrivateProfileString Section, Clef, sValeur, CONFIG_FILE
    End Function

  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 re
    bonjour docmarti
    pas mal du tout je connaissais pas ces 3 apis

    mais dans mon cas ca rendrais trop complexe le code de merger cette solution avec le regread
    neammoins je garde pour un autre projet

    je vais abandoner cette methode du fichier text
    j'ai trouver comment trouver la bonne clé de registre toute version window
    il me faut arranger une boucle récursive c'est tout et pour ca je ne suis pas le plus fort

    j'ouvre un autre post a ce sujet

    décidément j'en découvre tout les jour des apis
    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
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Salut !

    Citation Envoyé par patricktoulon Voir le message
    le fichier est enregistré en unicode et mon object fso ne peut pas le lire
    je réouvre le fichier et le réenregistre en ANSI et la mon fso l'ouvre bien
    donc ma question comment ouvrir ce fichier pour lire les lignes
    Peut-être via ADODB.Stream

    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

  7. #7
    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 marc tu a raison je n'y avais pas pensé j'essairais juste pour savoir ca peut toujour servir en cas de difficulté pour la lecture
    mais pour le moment j'ai reussi a atteindre l'objectif que je m'etais fixé a savoir connaitre la resolution de mon ecran sans avoir recours au apis

    kimy m'a aidé a transformer ma fonction en récursive afin de capturer un etage inconnu de l'arborescence de la cle de registre contenant ces données
    si ca t'interesse ca c'est passé ici
    puré j'ai souffert avec ce truc plus de 4 heures j'ai jamais vu 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

  8. #8
    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 a tous
    comme je suis testard et que je n'aime pas l'ehec
    j'ai cherher
    il se trouve que j'avais la solution sous les yeux( je suis un imbecile)

    en fait pour la fonction OpenTextFile de l objet (Scripting.FileSystemObject) il y a 4 arguments
    1 le chemin du fichier
    2 le mode (leture/ecriture)
    3 je sais pas je n'ai pas encore trouvé
    4 ANSI ou autre
    c'etait tou bète
    voila donc j'arrive bien a lire ma cle de registre exportée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
     dim cle as string, chemin as string ,ok as string 
     cle = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\0001\System\CurrentControlSet\Control\VIDEO\"
     chemin = ThisWorkbook.Path & "\cle.txt"
     lit_reg cle, chemin
     End Sub
    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
    Function lit_reg(cle, chemin)
    set fs as object,sh as object
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set sh = CreateObject("WScript.Shell")
    'adresse du fichier dans lequel on inscrit la valeur de la clé
    'export dev la clé (les guillements évitent les pb avec les adresses completes)
    sh.Run "%comspec% /c REGEDIT /E """ & chemin & """ """ & cle & """", 0, True
    'attendre que le fichier reg soit créé
    Do: ok = Dir(chemin): Loop While ok = ""
    'le deuxième argument booleen (true) pour lire en ANSI, dépend de la version de regedit !
    Set fich = fs.OpenTextFile(chemin, 1, False, True)
    texte = fich.readall 'texte récupere le contenu du fichier
    fich.Close
    MsgBox texte
    Kill chemin
    End Function
    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

  9. #9
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,


    Citation Envoyé par patricktoulon Voir le message
    bonjour a tous
    3 je sais pas je n'ai pas encore trouvé
    Regarde si tu n'aurais pas le fichier script56.chm sur ton disque. Avec un peu de chance, tu vas peut-être le trouver en Français.

    Il contient les infos sur Windows Scripting Host, VBScript, JScript (je sais, c'es vieux) et FSO.

    Sinon, en Anglais

    Je ne suis pas prêt à le jurer, mais il est peut-être "dans" le fichier scd56fr.exe du package complet:

    http://www.microsoft.com/fr-fr/downl...s.aspx?id=1406

  10. #10
    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 clement marcotte
    sinon msdn répond assez bien a la question bien que c'est assez ambigue

    https://msdn.microsoft.com/en-us/lib...(v=vs.60).aspx
    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

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/12/2005, 15h57
  2. [Applet] lire un fichier texte
    Par lebesnec dans le forum Applets
    Réponses: 2
    Dernier message: 07/07/2005, 10h09
  3. Réponses: 1
    Dernier message: 24/11/2004, 16h54
  4. [Fichier] Lire un fichier texte long
    Par _Eric_ dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 18/08/2004, 15h22
  5. Réponses: 2
    Dernier message: 26/05/2004, 17h53

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