HELP! comment inverser du texte séparé par // dans une cellule?

Résolu
Signaler
Messages postés
17
Date d'inscription
lundi 16 janvier 2006
Statut
Membre
Dernière intervention
2 octobre 2006
-
Messages postés
17
Date d'inscription
lundi 16 janvier 2006
Statut
Membre
Dernière intervention
2 octobre 2006
-
bonjour,



j'ai une colonne contenant des cellules du type:



//liste de mots1//liste de mots2//liste de mots3...



je souhaite avoir:



//liste de mots3//liste de mots2//liste de mots1...



le nombre de listes de mots n'est pas identique pour chaque ligne.



une idée???



merci

7 réponses

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
S'cuse, j'avais pas testé et j'avais oublié le "Step -1" dans la boucle For. Là, çà fonctionne !





Si tu appelles InverserColonne(4), tu inverses la 4ème colonne :





Private Sub InverserColonne(lCol As Long)

' Sur les 10 premieres lignes de la colonne numCol (A=1, B=2, ... , I=9 )

Dim lLigne As Long

For lLigne = 1 To 10

Inverser lLigne, lCol

Next lLigne

End Sub







Private Sub Inverser(lLigne As Long, lCol As Long)

Dim sTemp As String

Dim t() As String



sChaine = Sheets("Feuil1").Cells(lLigne, lCol)

t = Split(sChaine, "//")

sTemp = ""

For k = UBound(t) To LBound(t) Step -1 ' du dernier element au premier

sTemp = sTemp & t(k) & "//"

Next k

Sheets("Feuil1").Cells(lLigne, lCol) = sTemp

MsgBox sTemp

End Sub

Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
256
Date d'inscription
jeudi 17 avril 2003
Statut
Membre
Dernière intervention
20 février 2008
1
utlise la fonction split :
dim t() as string
t = split(chaine, "//")
n = ubound(t)
for k = 1 to n
me.print t(n - k)
next k


essaye aussi le cas ou le tableau va de 1 à n au lieu de 0 à n-1, je ne sais pas



A+.
Thomas.
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Le tableau retourné par Split commence à l'indice 0

Sinon, si tu ne connais pas les bornes du tableau, tu fais ceci :



Dim sTemp As String

Dim t() As String

t = Split(sChaine,"//")

sTemp = ""

For k=Ubound(t) To LBound(t) ' du dernier element au premier

sTemp = sTemp & t(k)

Next k


MsgBox sTemp


Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
Messages postés
17
Date d'inscription
lundi 16 janvier 2006
Statut
Membre
Dernière intervention
2 octobre 2006

merci mais comment indiquer la colonne ou j'applique cette fonction?
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Private Sub InverserColonne(numCol As Long)

' Sur les 10 premieres lignes de la colonne numCol (A=1, B=2, ... , I=9 )

For ll = 1 To 10

Inverser ll,numCol

Next ll

End Sub







Private Sub Inverser( lLigne As Long, numCol As Long)

Dim sTemp As String

Dim t() As String



sChaine = Sheets("Feuil1").Cells(lLigne,numCol)

t = Split(sChaine,"//")

sTemp = ""

For k=Ubound(t) To LBound(t) ' du dernier element au premier

sTemp = sTemp & t(k)

Next k

Sheets("Feuil1").Cells(lLigne,numCol) = sTemp

MsgBox sTemp

End Sub




Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
Messages postés
17
Date d'inscription
lundi 16 janvier 2006
Statut
Membre
Dernière intervention
2 octobre 2006

désolé de te déranger encore mais j'utilise le déboggeur et tout marche
jusqu'à sTemp = sTemp & t(k). la boucle saute directement sur
Cells(x, 45) sTemp sans passer par sTemp sTemp & t(k) donc
sTemp reste vide....et ça marche pas, snif!



For x = 2 To maxx Step 1



sChaine = Cells(x, 45)

t = Split(sChaine, "//")

sTemp = ""

For k = UBound(t) To LBound(t) ' du dernier element au premier

sTemp = sTemp & t(k)

Next k



Cells(x, 45) = sTemp

Next x
Messages postés
17
Date d'inscription
lundi 16 janvier 2006
Statut
Membre
Dernière intervention
2 octobre 2006

merci beaucoup pour ton aide!!!

bonne soirée