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

VB.NET Discussion :

Assigner un chiffre à une lettre


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 27
    Par défaut Assigner un chiffre à une lettre
    Bonjour,

    J'ai une question sur mon code que voici:

    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
    Imports System.IO
     
    Module Module1
        Sub Main()
     
            Dim monStreamReader As New StreamReader("C:\Documents and Settings\tanner\Desktop\liste.txt") 'Stream pour la lecture
            Dim ligne As String ' Variable contenant le texte de la ligne
            Dim test As String
            Dim excel As New Excel.Application
            Dim wb As Excel.Workbook
            Dim ws As Excel.Worksheet
            Dim Li As Long
     
            Li = 1
     
            excel.Visible = True 'la fenêtre excel est visible 
            wb = excel.Workbooks.Add(1) 'on ouvre un classeur dans excel
            ws = wb.Worksheets(1) 'on ouvre une feuille dans le classeur excel
            wb.Sheets("Feuil1").Select() 'on séléctionne la feuille nommé "Feuil1"
            wb.Sheets("Feuil1").Name = "Droits sur Y" 'on renomme la feuil1 en Alloga
            excel.Visible = True 'la fenêtre excel est visible 
     
     
            Do
                ligne = monStreamReader.ReadLine
     
                test = ligne.Chars(0)
     
                If test = "Y" Then
                    ws.Range("A" & Li).Value = ligne
                    Li = Li + 1
                Else
     
                    ws.Range("").Value = ligne
     
                End If
            Loop Until ligne Is Nothing
     
            wb.SaveAs("H:\droits Y\Liste.xls") 'Enregistrement du fichier
            monStreamReader.Close()
     
        End Sub
     
    End Module
    Le but du code est de récupérer des infos d'un fichier texte en lisant ligne par ligne et en écrivant dans un fichier excel. J'aimerais que mon fichier excel se présente sous cette forme:

    A1= Y:\blabla1 B1 = Droit 1 C1 = Droit2 etc...

    A2= Y:\blabla2 B2 = Droit 1 C2 = Droit 2 etc..


    Seulement le problème, C'est au niveau de mon else dans la boucle... il faudrait que je lui dise de d'abord mettre B1 ensuite C1 puis D1 etc... Le même principe que pour mon If mais cette fois pour les lettres et non les chiffres... ALors est-il possible d'assigner un chiffre à une lettre? si oui comment?

    Merci

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    si je me trompe pas on t'as donné la solution pour faire l'inverse y a pas longtemps
    avec asc ou chr selon le sens ca doit etre possible
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut
    Non c'était pour moi, et d'après moi sa ne marchera pas, car là il le prend en compte, mais faire l'inverse ça n'aurait pas de sens...

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    asc("A") = un nombre, je ne sais pas lequel mais disons 60
    donc vous faites asc("A") - 59 = 1
    asc("B") - 59 = 61 - 59 = 2
    comme par hasard asc(lettre) - 59 vous donne le nombre que vous cherchez

    et en générique ca donne : asc(lettre) - asc("A") + 1
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut
    Salut oublie pas de mettre les parenthèses car sa ne marchera pas sinon... Voici un extrès de mon code fais juste adapter le tient...

    Asc(("a") - 96)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 27
    Par défaut
    Merci beaucoup ça m'a beaucoup aidé mais j'ai un autre petit problème... Voici mon code maintenant:

    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
    49
    50
    51
    52
    53
    Imports System.IO
     
    Module Module1
        Sub Main()
     
            Dim monStreamReader As New StreamReader("C:\Documents and Settings\tanner\Desktop\liste.txt") 'Stream pour la lecture
            Dim ligne As String ' Variable contenant le texte de la ligne
            Dim test As String
            Dim excel As New Excel.Application
            Dim wb As Excel.Workbook
            Dim ws As Excel.Worksheet
            Dim Li As Long
            Dim Li2 As Long
            Dim tmp As Double
            Dim x As String
     
            x = Chr(66)
     
            Li = 1
            Li2 = 1
     
            excel.Visible = True 'la fenêtre excel est visible 
            wb = excel.Workbooks.Add(1) 'on ouvre un classeur dans excel
            ws = wb.Worksheets(1) 'on ouvre une feuille dans le classeur excel
            wb.Sheets("Feuil1").Select() 'on séléctionne la feuille nommé "Feuil1"
            wb.Sheets("Feuil1").Name = "Droits sur Y" 'on renomme la feuil1 en Alloga
            excel.Visible = True 'la fenêtre excel est visible 
     
            Do
                ligne = monStreamReader.ReadLine
     
                test = ligne.Chars(0)
                MsgBox(x)
     
                If test = "Y" Then
                    ws.Range("A" & Li).Value = ligne
                    Li = Li + 1
     
                Else
     
                    ws.Range(x + "1").Value = ligne
                    x = Chr(66 + Li2)
                    Li2 = Li2 + 1
     
                End If
            Loop Until ligne Is Nothing
     
            wb.SaveAs("H:\droits Y\Liste.xls") 'Enregistrement du fichier
            monStreamReader.Close()
     
        End Sub
     
    End Module
    Dans mon else toujours, Dans "ws.Range(x + "1").Value = ligne, Je voudrais pouvoir mettre "ws.Range(x + Li3).Value = ligne" Pour que ça change aussi le chiffre mais il me dis "Conversion from string "B" to type 'Double' is not valid." Comment dois je faire?

    Merci

Discussions similaires

  1. [XL-2003] Associer un chiffre à une lettre
    Par mg6321 dans le forum Excel
    Réponses: 4
    Dernier message: 15/04/2011, 14h27
  2. attribuer une valeur chiffrée a une lettre
    Par dede0860 dans le forum Excel
    Réponses: 6
    Dernier message: 17/04/2008, 16h59
  3. comment tester si un chiffre ou une lettre?
    Par marc_calagac dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/06/2007, 15h34
  4. Savoir si un caractère est un chiffre ou une lettre
    Par mael94420 dans le forum WinDev
    Réponses: 7
    Dernier message: 15/09/2006, 14h42
  5. Réponses: 3
    Dernier message: 13/12/2004, 14h14

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