Reconstruction d'une séquence dans une chaine de caracteres

Résolu
ople Messages postés 3 Date d'inscription lundi 13 février 2012 Statut Membre Dernière intervention 12 mai 2013 - 29 mars 2013 à 15:51
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 29 mars 2013 à 19:24
Bonjour,

Je suis débutante en VBA.
J'ai une chaine de caractères de différents types et de longueurs variables.

Pour prendre un exemple, prenons juste "AZERTY".
Par ailleurs, j'ai une autre feuille de correspondances avec le caractère par lequel doit commencer la séquence. Cela change pour chaque ligne.

Par exemple, j'ai :
ligne 1 : "Z"
ligne 2 : "T"
etc

Je dois reconstruire la séquence en respectant la première occurrence.
concrètement je dois arriver à ça :

ligne 1 : "ZERTYA"
ligne 2 : "YAZERT"
etc.

Je ne vois pas comment m'en sortir à part en faisant du décodage lettre à lettre en fonction de la longueur de chaine. y a t il une méthode plus rapide ?

Merci beaucoup !

Aude

5 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 mars 2013 à 19:24
Je viens de le faire ===>> Vraiment trop facile avec uniquement Left, Mid et instr
On n'a même pas à se réoccuper de la longueur !
4 lignes de code, pas une de plus !



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 mars 2013 à 15:55
Bonjour,
En utilisant simplement les fonctions de traitement des chaînes de caractères (Left, Right, Len, Mid)
Montre le code que tu as tenté. On verra alors comment l'accélérer, si possible.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 mars 2013 à 15:57
J'en ai oublié une : Instr


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ople Messages postés 3 Date d'inscription lundi 13 février 2012 Statut Membre Dernière intervention 12 mai 2013
29 mars 2013 à 16:17
If Not Cellule Is Nothing Then
firstAddress = Cellule.Address
chaine= Cellule.Offset(0, -7).Value (lit la chaine "AZERTY", par exemple)

longueur= Len(chaine)
C1 ' lecture, dans un autre tableau, du premier caractere par lequel doit commencer la séquence
....
Select Case longueur
Case 1
CodeC1 = C1
sequence = Code1
Case 2
If C1 = Left(chaine, 1) Then
CodeC1 = C1
CodeC2 = Right(chaine, 1)
sequence =(trim (Code1 & Code2))
Elseif
C1 = Right(chaine, 1)
CodeC2 = C1
End If

Case 3
If C1 = Left(chaine, 1) Then
CodeC1 = C1
CodeC2 = Mid(chaine,2, 1)
CodeC3 = Right(chaine, 1)
Elseif C1 = Right(chaine, 1) Then
CodeC2 = left(chaine, 1)
CodeC3 = Mid(chaine, 2,1)
End If
........
Case 6 'cas de la chaine "AZERTY"
....
End If
End Select



C'est très lourd à traiter car il faut parcourir des centaines de lignes dans un tableau pour récupérer à chaque ligne le premier caractère, et faire la correspondance avec un autre tableau pour récupérer la séquence à reconstruire dans un troisième tableau pour chaque ligne du premier tableau. Et pour reconstruire la séquence, il faut gerer des longueurs de chaines allant de 1 à 8 caracteres.

Je me demande s'l n'y a pas moyen de mémoriser la position de chaque caractère d'une séquence dans un tableau de séquences pour ensuite faire une sorte de recopie de la séquence en fonction du premier caractère impose dans chaque ligne ?

Merci d'avance

Aude
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 mars 2013 à 19:14
Relis-moi.
Je t'ai parlé de la fonction Instr
Ouvre donc ton aide VBA sur ce mot. Lis. Tu devrais vite comprendre à quoi elle peut t'être utile.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Rejoignez-nous