remplacer une partie d'une chaine

  • Initiateur de la discussion Initiateur de la discussion anna
  • 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 !

A

anna

Guest
Bonjour le forum
j'espere que vous avez passez un bon WE.
bon retour au boulot et a l'enigme des macro excel 🙂
voila mon problem (enfin c deux problem lies):
le premier : je n voudrai recupere que les dernier caracter d'une chaine a partir du caracter '/':
j ai essaier cette macro mais je n recupere pas tout ce que je veut cad
pour 02/02/0222 je n ai que 222 au lieu de 0222
voila l a macro:

iderligne = Range('B65536').End(xlUp).Row
For X = 2 To iderligne
slash1 = InStr(Cells(X, 2), '-')
slash2 = InStr(slash1 + 1, Cells(X, 2), '-')
If slash2 = 0 Then
slash2 = Len(Cells(X, 2))
Cells(X, 2) = Mid(Cells(X, 2), slash1 + 1, slash2 - slash1)

Else
Cells(X, 2) = Mid(Cells(X, 2), slash1 + 1, slash2 - slash1 - 1)

End If
Next

La deuxieme partie:
a l aide d'une macro je voudrai modifier chaque celule contenant une chaine de caractere par une autre mais en ne modifiant qu'une partie de cette chaine delimite par le caracter '-'
Vaut mieux un exemple n'est ce pas?
alors voila j ai deux colonne A qui contient ma chaine et B qui contient le bout de la chaine a remplace:*


A ---------------------------------- -- B
122302-00-A000-STA-00010 ------------------ xx
122302-01-A000-STA-0001 ------------------ xx
122302-01-A000-STA-0001 ------------------ xx
122302-01-A000-STA-0001 ----------------- xx
122305-0222-S000-STA-0001 ------------------ xx
122305-0222-S000-STA-0001 ------------------ xx







le resultat sera alors
A
122302-xx-A000-STA+0001
122302-xx-A000-STA+0001
122302-xx-A000-STA+0001
122302-xx-A000-STA+0001
122305-xx-S000-STA+0001
122305-xx-S000-STA+0001

j ai fais un petit exemple excel
 
Bonjour

une proposition ci-jointe.

A cause de l'utilisation de split, cette soluce ne fonctionne pas avec excel 97, j'espère que ce n'est pas ton cas.

Salut
[file name=Remplacement2.zip size=8563]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Remplacement2.zip[/file]
 

Pièces jointes

Re,
j essaie dapdapter ton code a mes fichier mais comme j arrive pas a comprendre ce qu est tablo et tablo1 alors j ai un peu de mal,peux tu m expliquer STP.
dans mon cas j ai la chaine dan sla colonne B et celle qui contient les bout a traiter puis a remplacer dan sla colonne L et le resultat doit ecraser les donne ancien alors du coup je n vois pas comment faire le lien entre tablo et tablo1 et mes colonne.
excuser ma naivete mais je suis debutante.
Anna
 
Re

Tu n’a pas a t’excusé d’être débutante. 🙂

Tu n’es pas tomber sur le plus pédagogue du forum en ma personne.

N’ayant pas beaucoup de temps, je vais juste t’expliquer comment modifié la macro pour l’appliquer à ton travail

For Each c In Range('a2:a8') correspond à la plage de départ à scanner, pour toi : (“b2:b???”)

C.offset(0,1) la cellule par rapport à c ou ce trouve le bout de chaîne, pour toi : c.offset (0,10)

L=2 le numéro de ligne de départ pour le renvoi des données

Range('d' & l) : l’endroit ou l’on veut renvoyer les infos (colonne D, ligne l), pour toi : range('b'&l)

et donc, la macro modifié :

Option Explicit
Sub Bouton1_QuandClic()
Dim c As Range
Dim tablo As Variant
Dim tablo1 As Variant
Dim i As Integer, l As Integer

l = 2

For Each c In Range('b2:b8')

    tablo = Split(c, '-')
   
   
If InStr(1, c.Offset(0, 10), '/') > 1 Then
        tablo1 = Split(c.Offset(0, 10), '/')
        tablo(1) = tablo1(UBound(tablo1))
   
Else
        tablo(1) = Format(c.Offset(0, 10), '00')
   
End If
   
   
For i = 0 To UBound(tablo)
       
If i = 0 Then
            Range('b' & l) = tablo(i)
       
Else
            Range('b' & l) = Range('b' & l) & '-' & tablo(i)
       
End If
   
Next i
    l = l + 1
Next c

End Sub

en espérant t'avoir aidé;

salut
 
Re
tu explique tres bien Merci cependant courant tout mon prjet je n connais pas la taille (nbr de ligne) de mes fichier a l'avance alors du coup j utilisais que cette formule😛ar exemple


iderligne = Range('B65536').End(xlUp).Row
For x = 2 To iderligne
Cells(x, 2) = Replace(Cells(x, 2), '+', '-')
Next

alors comment remplacer ton range (b2:..) par mes cells(..)?
apres je n t embete plus promis.jusqu a la prochaine fois 😱
Anna
 
Merci mon ami 😉
voila le fichier (enfin j ai extrait que les colonne a traiter!!)
j ai fais un exemple du resultat mais que pour les premiere ligne!!
Merci bcq herve.
contente d'avoir fais ta connaisance excel 😉
Anna [file name=Remplacement3.zip size=7429]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Remplacement3.zip[/file]
 

Pièces jointes

- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

P
  • Question Question
Réponses
1
Affichages
3 K
Patrosso
P
C
Réponses
4
Affichages
2 K
cerb_r
C
M
Réponses
6
Affichages
2 K
M
M
Réponses
9
Affichages
1 K
mcastex
M
A
Réponses
8
Affichages
2 K
A
N
  • Question Question
Réponses
5
Affichages
3 K
J
Réponses
4
Affichages
2 K
J
Y
Réponses
9
Affichages
898
Yaniv
Y
E
Réponses
2
Affichages
2 K
Retour