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 :

incrémentation alphabétique en VB [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Par défaut
    Salut,
    je voudrais intégrer des lettre dans une boucle For, or je sais qu'on ne peut y mettre que des entiers.
    j'ai trouver une parade, je les transforment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dim i as integer
    For i = 8 To 11
                    j = Chr(i + 65)
    Next
    Ici, cela me donne donc une incrémentation des lettres I,J,K,L.

    Or cette méthode ne fonctionne plus pour tranformer ma liste lorsqu'elle est du type AA, AB.....CP etc...

    quelqun à t'il une idée?
    merci d'avance

  2. #2
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Pourquoi ne pas faire une fonction, qui prends en paramètre :
    - Le nombre à convertir en lettres
    - Le nombre de lettres à afficher

    Ensuite tu fais un modulo 26 sur le nombre pour savoir quelle est la lettre la plus à droite.
    Ensuite, tu divises le nombre par 26 puis tu fais un modulo 26 dessus pour avoir la lettre suivante.
    Etc. jusqu'à ce que tu aie toutes tes lettres...

    En C# ça donnerais un truc du genre :
    (Exemple avec un step de 10 histoire d'avoir moins de lignes)

    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
     
    using System;
     
    namespace DigitToChar
    {
        class Program
        {
            static void Main(string[] args)
            {
                for (int i = 0; i < 200; i += 10)
                {
                    Console.WriteLine(DigitToChar(i, 2));
                }
     
                Console.ReadKey(true);
            }
     
            static string DigitToChar(int number, int charcount)
            {
                char[] chars = new char[charcount];
     
                for (int i = 0; i < charcount;)
                {
                    chars[charcount - ++i] = (char)(65 + number % 26);
                    number /= 26;
                }
     
                return new string(chars);
            }
        }
    }
    AA
    AK
    AU
    BE
    BO
    BY
    CI
    CS
    DC
    DM
    DW
    EG
    EQ
    FA
    FK
    FU
    GE
    GO
    GY
    HI

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Par défaut
    Ah ouai daccord...bon j'ai pas tout saisi mais c'est pas grave parce que en fait j'aimerai être plus précis dans mon incrémentation.

    j'aimerai incrémenter à partir de AP jusqua CI :
    (AP,AQ,AR,[...]AZ,BA,[...]BZ,CA,CB,[...]CI)

    du coup si j'ai pas compris ton code de travers sa ne fonctionne pas..

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Par défaut
    Du coup en y repensant je voyais plutôt une boucle comme sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for i=0 to 2
    j=Chr(i+65)
    for l = 0 to 25
    m=Chr(l+65)
    lettre=j & m
    next
    next
    mais le problème c'est que cette boucle exclue le fait que l'on commence par AP et non par AA

  5. #5
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Bah si, AP = 15
    CI = 60

    (si je ne me trompe pas, en partant du principe que A = 0)

    Donc, après transcription de ma fonction DigitToChar :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = 15 to 60 Step 1
        Console.Write(DigitToChar(i, 2))
    Next
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = 0 to 45 Step 1
        Console.Write(DigitToChar(i + 15, 2))
    Next

  6. #6
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Je me rends compte d'un truc...

    http://www.developpez.net/forums/d11...n/#post6560245

    En fait, c'est un méga-bordel de compter en lettres, car on n'est pas dans une base à proprement parler : le chiffre 0 n'a pas d'existance dans cette "base". Du coup vas-y le bordel. Excel a été inventé par un romain

  7. #7
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Toujours en C# (désolé ) voici une solution basée sur :
    - Une énumération de toutes les valeurs entre A et ZZZ
    - Des extensions des types int et string afin de convertir l'un dans l'autre facilement.

    http://www.developpez.net/forums/d11...e/#post6560434

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

Discussions similaires

  1. incrémentation alphabétique pour éviter les doublons
    Par Vincent32 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/10/2010, 13h00
  2. Comment Incrémenter une chaine dans l'ordre alphabétique ?
    Par Bobsinglar dans le forum Général Java
    Réponses: 4
    Dernier message: 14/11/2008, 15h06
  3. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10
  4. Post incrémentation?
    Par Defrag dans le forum C
    Réponses: 4
    Dernier message: 08/10/2002, 10h36
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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