Remplacer un caracère précis par un autre à une position définie

  • Initiateur de la discussion Initiateur de la discussion RaidJan
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

RaidJan

XLDnaute Nouveau
Bonjour à tous,


J'ai fais une petite recherche sur le forum et je ne pense pas avoir trouvé ce cas de figure, en plus je suis complètement rouillé sous Excel depuis le temps que je ne l'ouvrais plus :'(. Je sais faire ma manipulation en formule mais pas en macro:
=SI(D168="";"";SI(STXT(DROITE(D168;1);1;1)="A";"Z";SI(STXT(DROITE(D168;2);1;2)="A";"Z";""))) puis les contatener... mais bon c'est pas super à metre en place car le fichier s'allimente tout seul.

Disons qu'en colonne D, j'ai une chaine de caractère allant de 7 à 8 caractères. Ce qui m'intéresse c'est d'abord de savoir si le dernier caractère est A, si c'est le cas je le change par Z, sinon je teste le 7ème caractère pour faire le changement.

Si aucun des deux je ne fais rien car les données que j'ai recues me conviennent.


Quelques exemples:


D1 : UEH75CDA -> deviendrait UEH75CDZ
D2 : UEH75CAA -> deviendrait UEH75CAZ (je m'arrête au premier caractère A trouvé)
D3: UEH75CAE -> deviendrait UEH75CZE

Si quelqu'un a un début de piste ça m'aiderait beaucoup,
merci
 
bonsoir,
mon_texte = Cells(1, 4)
der = Right(mon_texte, 1)
avant_der = Mid(mon_texte, Len(mon_texte) - 1, 1)
If der <> "A" And avant_der = "A" Then Cells(1, 4) = Mid(mon_texte, 1, Len(mon_texte) - 2) & "Z"
If der = "A" Then Cells(1, 4) = Mid(mon_texte, 1, Len(mon_texte) - 1) & "Z" '& der

à tester
 
Du coup j'ai modifié pour le problem du dernier caractère...


mon_texte = Cells(1, 4)
der = Right(mon_texte, 1)
avant_der = Mid(mon_texte, Len(mon_texte) - 1, 1)
If der <> "A" And avant_der = "A" Then Cells(1, 4) = Mid(mon_texte, 1, Len(mon_texte) - 2) & "Z" & Mid(mon_texte, 8, 1)
If der = "A" Then Cells(1, 4) = Mid(mon_texte, 1, Len(mon_texte) - 1) & "Z" '& der


et ça marche niquel pour la cellule en question, maintenant ce qui m'intéresse c'est de scanner toute la colonne D, pas que que la cellule D1.
 
bonjour la foule

dim cell
for each cell in range("D : D") ' enlever les espaces avant et après le :
mon_texte = cell.value
der = Right(mon_texte, 1)
avant_der = Mid(mon_texte, Len(mon_texte) - 1, 1)
If der <> "A" And avant_der = "A" Then cell = Mid(mon_texte, 1, Len(mon_texte) - 2) & "Z" & Mid(mon_texte, 8, 1)
If der = "A" Then cell = Mid(mon_texte, 1, Len(mon_texte) - 1) & "Z" '& der
next cell
 
Bonjour à tous

une autre Proposition:
Code:
Sub Remp_A()
Dim i As Long, j As Byte, V As String, Suf As String
For i = 1 To Range("D" & Rows.Count).End(xlUp).Row
  Suf = Right(Cells(i, 4), 3)
  V = Cells(i, 4)
  For j = 1 To 3
  If Mid(Suf, j, 1) = "A" Then
  Mid(V, Len(V) - 3 + j, 1) = "Z"
  Cells(i, 4) = V
  Exit For
  End If
  Next
Next
End Sub

A+
 
bonjour la foule

dim cell
for each cell in range("D : D") ' enlever les espaces avant et après le :
mon_texte = cell.value
der = Right(mon_texte, 1)
avant_der = Mid(mon_texte, Len(mon_texte) - 1, 1)
If der <> "A" And avant_der = "A" Then cell = Mid(mon_texte, 1, Len(mon_texte) - 2) & "Z" & Mid(mon_texte, 8, 1)
If der = "A" Then cell = Mid(mon_texte, 1, Len(mon_texte) - 1) & "Z" '& der
next cell


Bonjour,


Je viens de la tester celle ci et à priori la ligne:

avant_der = Mid(mon_texte, Len(mon_texte) - 1, 1)

N'est pas valide (argument ou ligne de procedure invalide)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour