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 :

[E-03] Affecter un fichier à une variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut [E-03] Affecter un fichier à une variable
    Bonjour,

    Je voudrais savoir comment on peut affecter un fichier texte à une variable.

    Mon but est de comparer tout le fichier pour vérifier s'il a des caractères minuscules.

    On en a la possibilité : il suffit pour celà de lire, avant importation, le fichier texte dans son ensemble (on va dire dans une variable toto) et de comparer toto et Ucase(toto) ===>> résultat dans une variable booléenne titi.
    Cette question est la suite de http://www.developpez.net/forums/d64...er-minuscules/

    Merci!

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Il doit y avoir qqc en FAQ sur le sujet.
    Il faut utiliser une bibli de script, comme 'Windows script host object model'.
    Regarde la méthode OpenAsTextstream de la class File, puis les méthodes de la classe TextStream.

    Bon courage,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonsoir (et merci d'avoir ouvert une discussion distincte).

    Ma manière (et, surtout, dans être dépendant de FSO qui alourdirait ...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Command1_Click()
     Dim FF As Integer: FF = FreeFile
       Open "d:\essai.txt" For Input As #FF
            toto = Input(LOF(FF), #FF)
       Close #FF
       MsgBox toto ' si tu veux le voir (pas nécessaire)
       MsgBox toto = UCase(toto) ' et là (ce que tu attends) : True = pas de minuscules. False = contient des minuscules
    End Sub
    EDIT : valable jusqu'à 2 GO. Si au delà, m'en parler (on décomposera en tant que de besoin...)

  4. #4
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Bonsoir,

    Une méthode plus moderne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     Dim oFso
     Dim yaFichier As String
     Set oFso = CreateObject("Scripting.FileSystemObject")
     yaFichier = oFso.OpenTextFile("c:\autoexec.bat").ReadAll
     MsgBox yaFichier = UCase(yaFichier)
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  5. #5
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    En gros merci!

    Les deux façons fonctionnent très bien.... mais la plus moderne est-elle la meilleure?

    Je sais que ça marche mais je ne comprends pas le pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Dim FF As Integer: FF = FreeFile
       Open "d:\essai.txt" For Input As #FF        toto = Input(LOF(FF), #FF)
    et j'aime comprendre ce que j'utilise

    Alors si tu veux bien m'expliquer un peu ta façon ucfoutu je serais heureux!

    Merci!

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    D'azccord :

    1) (et surtout) : je ne passe pas par FSO (qui est du VBS) pour finalement faire à travers d'un tremplin inutile, ce que fait VB...

    2) L'instruction Open permet d'ouvrir un fichier (ici en lecture) en lui attribuant un numéro identificateur libre (ici FF)

    LOF est tout simplement l'abréviation de LENGTH OF FILE (longueur du fichier), que l'on lit donc de son début jusqu'à sa fin par l'instruction Input, dans une variable toto

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     toto = Input(LOF(FF), #FF)
    puis on libère le fichier par un close.

    C'est tout et c'est très simple.

    Pour ton information : la solution "moderne" de référence à FSO a pour conséquence de charger la totalité de FSO !!! pour n'en utiliser au bout du compte qu'une minuscule partie ...
    Si toutefois (et en dépit de ma remarque), tu tiens à utiliser FSO, pense alors ... au moins... à terminer (dès utilisation) par un Set oFso = Nothing (libère ainsi, au moins, ta mémoire !)

  7. #7
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Parfait,
    tout est clair et tout fonctionne parfaitement!

    Merci de la réponse et des précisions!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/10/2007, 15h40
  2. Réponses: 1
    Dernier message: 15/09/2007, 17h50
  3. Affecter et récupérer une variable de session
    Par vhellers dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/08/2007, 17h57
  4. Affecter et récupérer une variable de session
    Par vhellers dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 16/08/2007, 15h15
  5. [DAO]Affecté résultat requête à une variable
    Par Lex O'Mil dans le forum VBA Access
    Réponses: 4
    Dernier message: 30/03/2007, 15h56

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