Transposition de lettres dans des mots
Bonjour,
Je souhaiterais remplacer les lettres d’une liste de mots par d’autres lettres et créer ainsi une autre liste de mots. (voir le fichier exemple)
Je possède un tableau de transcription de 27 lignes/2 colonnes contenant 27 sigles et les 26 lettres de l’alphabet + le zéro (clavier spécial).
J’ai cherché parmi les fonctions excels mais n’ai rien trouvé .
Existe il une/des fonctions ou un programme vba qui pourrait réaliser cela ?
Pour info je suis débutant ++ en excel et visual basic ….
Merci pour votre aide
A.D
Bonsoir Pantajali et bienvenu, bonsoir le forum,
Une proposition VBA avec le code ci-dessous :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim NE As Byte 'déclare la variable NE (Nombre d'Espaces)
Dim T As String 'déclare la variable T (Texte)
Dim TI As String 'déclare la variable TI (Texte Inversé)
Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
TV = O.Range("D1").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
T = "": TI = "" 'vide le texte T, vide le texte TI
NE = UBound(Split(TV(I, 1), " ")) 'définit le nombre d'espace qu'il y a dans la donnée ligne I colonne 1 de TV
If NE > 0 Then 'condition s'il y a au moin un espace dans la donnée ligne I colonne 1 (le mot)
For J = 0 To NE 'boucle 2 : sur toutes les parties entre les espaces
'définit le texte T (recherche dans la colonne 1 la partie entre les espaces et renvoie sa correspondance en colonne B et, si non vide rajoute un espace entre les recherches)
T = IIf(T = "", O.Columns(1).Find(Split(TV(I, 1), " ")(J), , xlValues, xlWhole).Offset(0, 1).Value, T & " " & O.Columns(1).Find(Split(TV(I, 1), " ")(J), , xlValues, xlWhole).Offset(0, 1).Value)
'définit le texte TI (recherche dans la colonne 1 la partie entre les espaces et renvoie sa correspondance en colonne B et, si non vide rajoute un espace entre les recherches mais place la valeur trouvée en dernier)
TI = IIf(TI = "", O.Columns(1).Find(Split(TV(I, 1), " ")(J), , xlValues, xlWhole).Offset(0, 1).Value, O.Columns(1).Find(Split(TV(I, 1), " ")(J), , xlValues, xlWhole).Offset(0, 1).Value & " " & TI)
Next J 'prochain espace de la boucle 2
Else 'sinon
T = O.Columns(1).Find(TV(I, 1), , xlValues, xlWhole).Offset(0, 1).Value 'définit le texte T
TI = T 'définit le texte TI
End If 'fin de la condition
O.Cells(I, "E") = T 'renvoie T dans la cellule ligne I colonne E
O.Cells(I, "F") = TI 'renvoie TI dans la cellule ligne I colonne F
O.Cells(I, "G") = TI 'renvoie TI dans la cellule ligne I colonne G
Next I 'prochaine ligne de la boucle
End SubMerci TauTheme pour ta réponse si rapide !
J'essaye de comprendre ton programme, et je te tiens au courant du fonctionnement.
A+
Waouh !
J'ai même essayé en modifiant la table de correspondance avec d'autre sigle, je vais pouvoir avancer plus loin....
Merci encore ThauTheme pour le travail fournit !!