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 :

Récupérer une valeur unicode dans un fichier txt et le charger dans une var. String


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Dévelopeur Excel
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Dévelopeur Excel

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Par défaut Récupérer une valeur unicode dans un fichier txt et le charger dans une var. String
    Bonjour,

    J'aurais besoin de votre aide pour récupérer la première ligne d'un fichier "Lic.txt"
    Je précise que le fichier txt contient des caractères unicode du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ¿d*º(ìu²ýù×êo×aÿߝӣºÒüüšd¹uj÷Ú!ÜÓ

    Le fichier sera dans le même répertoire que l’application
    que je retrouve grâce à une variable As String "chemin".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chemin = Workbooks(ActiveWorkbook.Name).Path
    En vous remerciant d'avance

    Cordialement Eric

  2. #2
    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,

    Je ne suis pas vraiment sûr que VBA fasse bon ménage avec Unicode. Ceci dit, il y a peut-être un début de solution par là.

  3. #3
    Membre averti
    Homme Profil pro
    Dévelopeur Excel
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Dévelopeur Excel

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Par défaut
    Bonjour

    Je pense que les caractères unicode ne changent rien car j'ai déjà manipuler cela avec les variables As String qui ne posent aucun problème.

    Pour situer la chose il s'agit d'un code de licence pour mes applications grâce a un cryptage de Vigenère qui réside en l’occurrence dans une fonction
    En gros il y a 4 cellules qui pour générer le cryptage:

    a) le texte à crypter
    b) la Clé (un texte qui sert de support au cryptage
    c) Une cellule qui recopie le texte avec des caractères unicode
    d) la dernière qui génère le code

    J'ai donc cette série de cellule dans dans l’application que je souhaite transmettre
    et l'autre dans une petite application qui me sert a générer le code

    Le but est que l'utilisateur me transmet des infos perso qui seront concaténer avec des infos concernant l'application.
    Ainsi cela me permet de protéger mon application tout en permettant à l'utilisateur de pouvoir l'utiliser sur plusieurs postes,
    Car je souhaite que l’application soit utilisable gratuitement pendant un moi puis ensuite avec la licence.

    La licence se présenterait sous la forme d'un fichier txt
    que je viendrait charger à l'ouverture.

    Mon problème réside plus dans le fait d'aller chercher le code dans le fichier txt

    Cordialement Eric

  4. #4
    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,

    Ah, OK

    Le plus simple, c'est sans doute la vieille instruction Open. (Aucune crainte, elle était là bien avant Office 2013)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Un fichier texte est un fichier à accès séquentiel? Cela veut dire qu'il faut lire chaque lignes du fichier et en extraire le informations et vue que le fichier est sensé être crypter, j'ai comprend ton embarras.

    Il faut utiliser un fichier à accès directe (rendom), on défi un mask (nom,prénom,âge) par exemple et la lecture et/ou l'écriture ce fait autour du. Ce mask!

    Read #1, mask ainsi les informations sont bien rangé dans la variable mask (variable de type défini par l'utilisateur!)

    Pour moi le puis simple est encore de fournir un xml au utilisateur.

    C'est ce que j'utilisais avant d'opter pour du SqlLite, car plusieurs utilisateurs devaient lire et écrire dedans simultanément.

  6. #6
    Membre averti
    Homme Profil pro
    Dévelopeur Excel
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Dévelopeur Excel

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Par défaut
    Re-Bonjour

    Non Non, vous avez sans doute mal compris (ou bien c'est peut être moi), du coté application les données sont rentrée dans une feuille "administrateur" et le code est généré par l'application dans un feuille "programmeur" qui est fortement masqué et protégé.
    Je précise également que l'appli. gère des utilisateurs avec login et droits associés

    En fait ce que je souhaite c'est que l’application compare le code généré par celle-ci avec le code du fichier txt que je fournis après règlement de facture.

    Tout ce que j'ai besoin c'est de récupérer la première ligne du txt dans une variable As String pour la comparer

    Cordialement Eric

  7. #7
    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
    Bonjour.

    Citation Envoyé par Zarkann Voir le message
    J'aurais besoin de votre aide pour récupérer la première ligne d'un fichier "Lic.txt"
    Je précise que le fichier txt contient des caractères unicode
    C'est possible en utilisant l'ActiveX ADODB.Stream documenté sur le site MSDN et il doit y avoir des exemples sur ce forum …

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour Marc,

    ¿d*º(ìu²ýù×êo×aÿßÓ£ºÒüüšd¹uj÷Ú!ÜÓ

    a) le texte à crypter
    b) la Clé (un texte qui sert de support au cryptage
    c) Une cellule qui recopie le texte avec des caractères unicode
    d) la dernière qui génère le code
    est-ce des valeur Unicode ou crypté?


    voila par exemple ce que j'ai dans Licence.dll poste #7!
    5虳ýà þˆ¹ýÃÒƒÿm¼N U²

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    A.Age = Crypt.Encrypt("Cle", "25")
    A.Pnom = Crypt.Encrypt("Cle", "Robert")
    A.Nom = Crypt.Encrypt("Cle", "dysorthographie")
    Citation Envoyé par developpez.net
    un membre averti en vaut 2
    je peux estimer que j'en ai Nom : Sans titre.png
Affichages : 671
Taille : 723 octets?
    Dernière modification par Invité ; 04/11/2016 à 14h01.

  9. #9
    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 Robert !

    J'ai effectivement répondu à la question telle que posée initialement (voir aussi le titre de cette discussion !),
    à savoir pour du texte au format Unicode et non pour un quelconque cryptage.

    « c) Une cellule qui recopie le texte avec des caractères unicode » : c'est à se demander si l'auteur sait de quoi il est question !
    Y aurait-il une confusion entre encodage Unicode et caractères cryptés ? …

  10. #10
    Membre averti
    Homme Profil pro
    Dévelopeur Excel
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Dévelopeur Excel

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Par défaut
    Bonjour

    Excusez moi pour la réponse tardive mais le travail m’a prit tout mon temps

    Je me suis peut être mal exprimé pour les symbole "unicode" il s'agit bien d'un cryptage
    Sinon j'ai trouver la solution

    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
    Dim i As Long, j As Long, ar
       Dim sRepertoire As String, sNomFichier As String
       Dim iFile As Integer
       Dim data
       Dim Ws As Worksheet
     
       Dim Licence As String '(fichier init)
       Dim Code As String   'Cellule (DB101)
     
       sRepertoire = "E:\Aplications\Prodution\"             '// doit terminer avec un "\"
       sNomFichier = "Licence.init"
     
     
     
     
       'Ouvrir le  fichier
       iFile = FreeFile
       Open sRepertoire & sNomFichier For Input As #iFile
     
     
     
       'Lecture du 1er fichier et écriture dans Excel
       i = 1
       Do Until EOF(iFile)
          Line Input #iFile, data
          Licence = data
          Ws.Cells(i, 5) = data
          i = i + 1
       Loop
     
     
     
       'Fermer le fichier
       Close #iFile
    C'est un bout de code que j'ai trouvé sur internet et qui était prévu pour travailler sur plusieurs fichier et plusieurs lignes.

    Ensuite il ne me suffit plus qu'a comparer la valeur du fichier txt (ou plutôt init) avec le code généré dans l'application

    En tout cas merci à ceux qui se sont penché sur mon problème.

    Merci également à dysorthographie pour son code de licence qui à l'air excellent, mais j'avoue que mon niveau en programmation n'est pas suffisant pour comprendre précisément son fonctionnement


    Cordialement Eric

  11. #11
    Invité
    Invité(e)
    Par défaut
    bonjour,
    note cependant q'il sera facile de craquer l'application, car le fait que les donné soient cryptées, ne changera rien l’affaire!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if décrypte(a) = décrypte(b) then
    il est possible de contourner le test (IF)!

    si tu veux faire un système de licence efficace, apprends le développement dans un environnement évolué! Visual studio 6 {c'est le même langage que VBA} est passé dans le domaine publique.

    https://mon-partage.fr/f/05A1tQvN/

    aprends à développer une DLL avec tout ton code vba dedans et utilise la dans tes projets vba. tu pourras ainsi forcer la reconnaissance de licence sans que personne ne puissent la contourner!

    Code module de classe dans la DLL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Class_Initialize()
    If Environ("username") <> "TOTO" Then Err.Raise 1664, "vb6", "La mise en bière est à 15 heure!"
    End Sub
    Public Sub programme()
    MsgBox "ton est OK"
    End Sub
    Code programme dans Excel VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub TEST()
    Dim a As New Login
    a.programme
    End Sub
    Dernière modification par Invité ; 08/11/2016 à 17h47.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/05/2015, 00h41
  2. Réponses: 6
    Dernier message: 09/03/2015, 13h38
  3. Réponses: 6
    Dernier message: 30/12/2010, 11h55
  4. Réponses: 4
    Dernier message: 25/01/2010, 16h07
  5. Réponses: 5
    Dernier message: 01/03/2009, 22h32

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