Remplacements

Résolu
Signaler
Messages postés
172
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
16 mai 2011
-
Messages postés
172
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
16 mai 2011
-
Bonjour,


Une simple question : comment coder le plus proprement possible ceci :


Dans une plage entre A1 et A20, si la chaine de caractères "aze" est
trouvée, la remplacer par "rty"... toujours dans la même plage, si la
chaine de caractères "uio" est trouvée, la remplacer par "pqs".... etc..


en fait j'ai environ une dizaine de remplacements à effectuer dans la même plage...

quel est le moyen le plus propre et le plus court de faire ça ?

merci par avance

17 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Bah sinon, si ce n'est que dix, places les dans un tableau de données :

Dim MaPlage As Range
Dim MesRemplaces() As String
Dim MesRemplacants() As String

ReDim MesRemplaces(1 To 10)
ReDim MesRemplacants(1 To 10)
MesRemplaces(1) = "rty"
MesRemplacants(1) = "aze"
'*** etc...

Et dans la boucle :

Set MaPlage = Range(Cells(1, 1), Cells(20, 1))
   
For i = 1 To 10 
    MaPlage.Replace What:=MesRemplaces(i), Replacement:=MesRemplacants(i), LookAt:= _
        xlPart, SearchOrder:=xlByRows, MatchCase:=False
Next i

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonjour,
Qu' entends-tu par plage ?
Est-ce une matrice de 10 lignes et une colonne?
Précises pour qu' on puisse te répondre le plus proprement possible
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

 Dim MaPlage As Range
   
     Set MaPlage = Range(Cells(1, 1), Cells(20, 1))
                        
    MaPlage.Replace What:="aze", Replacement:="rty", LookAt:= _
        xlPart, SearchOrder:=xlByRows, MatchCase:=False
    MaPlage.Replace What:="uio", Replacement:="pqs", LookAt:= _

        xlPart, SearchOrder:=xlByRows, MatchCase:=False
' *** etc...

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Rien à dire , Mortalino,
Toujours court et précis !
Messages postés
172
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
16 mai 2011

 chaibat05, c'est sur excel, les cellules entre A1 et A20.


mortalino, je pensais qu'il existait quelequchose de plus "sexy" pour
faire ça... du genre avec des "loop", des "case"... c'est pour ça que
je posais la question...
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Juste une question,
Pourquoi pas une boucle doublée de conditions ?
Je ne "fréquente" pas souvent Excel. C'est juste pour savoir.
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Il y' a là un problème de contre temps.
il faut ajuster le tir, les gars.
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Merci Chaibat,

Sinon essaie ceci :

'*** crée un onglet nommé "Liste" et places-y tes données à partir de A2 & B2
dans A1 : Remplacés, B1 : Remplacants

Dim MaPlage As Range
Dim SheetEnCours As String, LeRemplace As String, LeRemplacant As String
Dim DerLi As Long, i As Long
   
SheetEnCours = ActiveSheet.Name
Sheets("Liste").Select
DerLi = Columns(1).Find("", [A1], , , xlByRows, xlNext).Row - 1
Sheets(SheetEnCours).Select

     Set MaPlage = Range(Cells(1, 1), Cells(20, 1))
   
For i = 2 To DerLi
    LeRemplace = Sheets("Liste").Cells(i, 1).Value
    LeRemplacant = Sheets("Liste").Cells(i, 2).Value
   
    MaPlage.Replace What:=LeRemplace, Replacement:=LeRemplacant, LookAt:= _
        xlPart, SearchOrder:=xlByRows, MatchCase:=False
Next i

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
@ Motalino,
Personnellement je trouve ca "Sexy" ,!!!
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Ouais, c'est pas faux !

Je ne pense pas que l'on puisse faire plus court.
C'est dommage que Codyx ne fasse pas VBA seul. Il y en aurait des fonctions à mettre !

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
Messages postés
172
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
16 mai 2011

effectivement c'est beaucoup plus sexy... je pense que je vais utiliser ça, bien que j'aurais souhaité éviter de créer un nouvel onglet....
j'ai un nombre important mais limité de remplacements à effectuer (du genre une dizaine).
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
@gribouillex,
et qu' est ce qu' on dit ...?
T' aurais pas oublié quelque chose ?
Messages postés
172
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
16 mai 2011

éh non je n'ai pas oublié !!!


MERCI MILLE FOIS, et à bientôt devant une bonne partie de sirop !
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Il a de la chance ce gribouillex.Tu l' as vraiment gâté ce soir,
Et même pas Merci.
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Oups Chaibat, t'as posté trop vite ...

De rien et bon cul d'chouette à tous les deux !

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Excuse moi gribouillex.
Je vois que c' est déjà fait.
Toujours ce problème de contre-temps.
Il faudra passer au "Live".
Messages postés
172
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
16 mai 2011

pas grave chaibat...
mais c'est vrai que j'ai été gaté ce soir....