Remplacements

Résolu
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011 - 7 août 2006 à 22:16
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011 - 7 août 2006 à 23:33
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

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 23:15
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"
3
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 22:24
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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 22:27
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"
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 22:30
Rien à dire , Mortalino,
Toujours court et précis !
0

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

Posez votre question
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
7 août 2006 à 22:34
 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...
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 22:35
Juste une question,
Pourquoi pas une boucle doublée de conditions ?
Je ne "fréquente" pas souvent Excel. C'est juste pour savoir.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 22:37
Il y' a là un problème de contre temps.
il faut ajuster le tir, les gars.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 22:47
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"
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 23:00
@ Motalino,
Personnellement je trouve ca "Sexy" ,!!!
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 23:03
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"
0
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
7 août 2006 à 23:09
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).
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 23:12
@gribouillex,
et qu' est ce qu' on dit ...?
T' aurais pas oublié quelque chose ?
0
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
7 août 2006 à 23:18
éh non je n'ai pas oublié !!!


MERCI MILLE FOIS, et à bientôt devant une bonne partie de sirop !
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 23:20
Il a de la chance ce gribouillex.Tu l' as vraiment gâté ce soir,
Et même pas Merci.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 août 2006 à 23:24
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"
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 août 2006 à 23:26
Excuse moi gribouillex.
Je vois que c' est déjà fait.
Toujours ce problème de contre-temps.
Il faudra passer au "Live".
0
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
7 août 2006 à 23:33
pas grave chaibat...
mais c'est vrai que j'ai été gaté ce soir....
0
Rejoignez-nous