Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : correspondance dans un tableaux [ Divers / Débutants ] (lolpop)

mercredi 10 octobre 2007 à 19:00:58 | correspondance dans un tableaux

lolpop

Bonjour, j'aurai une petite question.

j'ai un tableau qui contient les caracteres de l'alphabet de 0 a 25 pour a à z.

Je voudrai a partir d'un caractere obtenir le nombre lui correspondant dans le tableaux.
Par exemple a partir du caractere z obtenir 23 et du caractere b obtenir 1.

Mais je ne sais pas comment faire, ce que je sais faire c'est l'inverse moi :)

Pourriez vous m'aider?
Merci

mercredi 10 octobre 2007 à 20:03:23 | Re : correspondance dans un tableaux

jack

Administrateur CodeS-SourceS
Salut
Je suppose que tes lettres ne sont pas classées alphabétiquement dans ton tableau ... (ton exemple z:23 et b:1 est troublant)

Pour les tableaux, aucune autre solution que de scruter chaque élément du tableau pour retrouver celui qui t'intéresse :
For r = 0 To 25
   If monTableau(r) = LaLettreQueJeCherche Then
      MsgBox "La lettre """ & LaLettreQueJeCherche & """ est dans monTableau(" & CStr(r) & ")"
      Exit For
   End If
Next r
Avec une dimension à 26 éléments, cette boucle ne devrait pas allourdir tes programmes.

Une autre solution consiste à utiliser une Collection à la place d'un tableau.
Une Collection permet d'accéder aux données :
- Soit par l'index        maCollection(23)
- Soit par le contenu   maCollection("z")
Condition : Il faut que le contenu de chaque élément soit unique
Problème : Une collection est lente pour les méthodes Add et Remove, par contre, elle est plus rapide en recherche.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

mercredi 10 octobre 2007 à 20:09:33 | Re : correspondance dans un tableaux

Mikaels35

Sachant que la valeur Asc("a") est égale à 97

n=Asc("b")-97 -> 1

n=Asc("z")-97 -> 25

@+

mercredi 10 octobre 2007 à 21:39:35 | Re : correspondance dans un tableaux

lolpop

Réponse acceptée !
merci,
mais si j'agrandi mon tableau en rajoutant les majuscules et les chiffres de 0 a 9 :)
lol

mercredi 10 octobre 2007 à 22:36:54 | Re : correspondance dans un tableaux

caco64

Idem mais avec une condition.
Par exmple, je suppose que tu as mis les caractères dans l'ordre minuscule, puis majuscule puis chiffres de 0 à 9
Alors le "a" doit renvoyer 1, le "A" 27 et  le "0" 53.
Tu peux faire un truc du style :

sub  mon_tableau()
dim choix_caractere
dim num_asc as integer
dim indice_tableau as integer

'choisir le caractere, par exemple avec un inputbox
choix_caractere = "d"

num_asc = asc(choix_caractere)
if num_asc >= 48 and num_asc <= 57 then
    indice_tableau =  num_asc + 5
elseif num_asc >= 97 and num_asc <= 122 then
    indice_tableau =  num_asc - 96
elseif num_asc >= 65 and num_asc <= 90 then
    indice_tableau =  num_asc - 42
else
    msgbox "pb sur le choix du caractère"
end if
end sub

 il existe un code ascii différent pour les minuscules et les majuscules
La haine aveugle n'est pas sourde

mercredi 10 octobre 2007 à 22:43:02 | Re : correspondance dans un tableaux

xav0

Réponse acceptée !
Bonjour,

tu peux aussi créer un tableau inverse du premier. Ca marche quels que soient les caractères dans le premier tableau.

Dim monTableau(0 To taille_quelconque) As String
'monTableau doit être rempli entièrement avec des caractères...

Dim TableauInv(0 To 255) As Long, Lettre As String

'Initialise le tableau
For i = LBound(monTableau) To UBound(monTableau)
  Lettre = Asc(monTableau(i))
  TableauInv(Lettre) = i
Next i

'Maintenant, il suffit de consulter le deuxième tableau pour obtenir l'index à partir d'un caractère
MsgBox("La lettre A a pour indice " & TableauInv(Asc("A")))
MsgBox("La lettre L a pour indice " & TableauInv(Asc("L")))


mercredi 10 octobre 2007 à 23:28:18 | Re : correspondance dans un tableaux

jack

Administrateur CodeS-SourceS
Re
Hote moi d'un doute : Tu mets les lettres dans un ordre quelconque, on est d'accord ?
(puisque ton exemple, tu as mis le "z" est 23, alors qu'il serait le 26ème élément, donc d'index 25 dans un tableau classé)
Il ne peut donc pas y avoir de correspondance entre le code ASCII de la lettre et le numéro de l'index du tableau !

Si les lettres sont dans l'ordre alphabétique dans ton tableau, je te conseille vivement de prendre des cours de français avant de continuer en programmation. Une erreur pareil sur le numéro d'une lettre dans l'alphabet est quand même une base minimum, non ? et en plus, ça éviterait qu'on perde notre temps ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

jeudi 11 octobre 2007 à 18:26:37 | Re : correspondance dans un tableaux

lolpop

oui j'ai fait une erreur ca arrive non? c'est bien 25 et pas 23 pour le z

merci xav0 pour ta reponse c'est ce a quoi j'ai pensé cette nuit aussi :)



Cette discussion est classé dans : partir, caractere, tableaux, obtenir, correspondance


Répondre à ce message

Sujets en rapport avec ce message

Caractere ASCII x barre (moyenne) [ par Patrik ] Bonjour,Je souhaiterai obtenir le code latin ou ascii pour obtenir le symbole x barre représente l'abréviation de la moyenne.Patrik obtenir le nom d'un dossier [ par Fwdavy ] je voudrais a partir d'une boucle lister les nom des dossiers (ou fichier) a partir d'une adresse specifique. Pour : - supprimer un fichier ou un doss Lancer une procedure à partir d une chaine de caractere [ par farrakis ] Bonjour,J aimerais lancer une procédure partir d'une chaine de caractere, sans avoir à écrire du code du genreIf monTexte="toto" then call totomais pl obtenir une table a partir de 2 tables [ par aztcaLISS ] Salut,Je voudrais savoir comment faire une requete permettant d'obtenir une table contenant toutes les lignes d'une Table1 et toutes les lignes d'une Peut-on obtenir un code à partir d'un exe sans avoir VB6 ? [ par nono78220 ] Bonjour,Il est possible de faire des exe avec des logiciels tels que "inno_setup"Question: si notre code est compilé avec un tel logiciel, y-a t'il un Convertir byte() en caractere ASCII [ par Grinvald ] Bonjour,Je souhaiterai convertir un tableaux de byte en caractère ASCII.Le tableaux est le résultat d'un hachage.Merci de votre aide. Obtenir un Type à partir d'un String [ par The Meteorologist ] Bonjour, je cherche une méthode permettant d'obtenir un type à partir d'un String contenant son nom et ses namespaces. Par exemple : Dim nomDuType Peut'on obtenir un object à partir d'un hwnd ? [ par vicosta ] Bonjour,Peut'on obtenir un object à partir d'un hwnd  d'une façon quelquonque comme celle-ci ?D'abord, créer un object, dans ce cas, le calendrier:Dim Problème d'ouverture de fichiers à partir de mon VBA [ par mike56edwards ] Bonjour à tous,Je travaille sur un projet pour mes études. Sur certains de mes userform, j'ai des commandbutton qui permettent d'ouvrir un dossier dan scanner a partir de mon probramme VB [ par lessan ] Bonjour a tous, je fais un programme VB6 dans lequel je desire atteindre n'importe quel scanner dans le but de numeriser des documents. Merci de m


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,530 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.