Fonction Mid qui ne marche pas

C

Creepy

Guest
Bonjour les amis,

voila j'ai un fichier avec des chemins dans la colonne A, du genre :
dede= c:\dada\dudu\dede.exe

je voudrais changer le chemin en c:\ par exemple ou c:\zaza\dede.exe selon le choix de l'utilisateur.

ce qui me pose pb, ce n'est pas la message box, et tout le reste mais la fonction MID. Elle permet de remplacer du texte. Après avoir regardé l'aide, j'ai fait cette macro sur la cellule A1 pour faire un test, avant de faire la macro définitive :

--------
Private Sub CommandButton1_Click()
Dim I, Start, Fin As Integer
Dim Txt, Final As String
Txt = Range("a1").Value
I = Len(Txt)
Start = InStr(Txt, "=")
Fin = InStrRev(Txt, "\")
Start = Start + 3
Fin = Fin - Start
Final = Mid(Txt, Start, Fin) = "dada"
Range("a4").Value = Final
End Sub
-------

Mais la fonction mid ne marche pas la valeur de A4 est : FAUX
Pourquoi ?? Car d'après l'aide J'ai bien fait ce qu'il fallait et mais parametres sont correctes ??

Merci de votre aide

++

Creepy
 
P

Pascal76

Guest
Bonjour creepy

Bon je t'ai changé ta macro mais je ne sais pas quel résultat tu veux obtenir .

Donc cela ne donne pas le bon résultat mais tu n'as plus l'erreur FAUX mais il faut bien recalculer ce que tu veux (le start et fin)

-----------
Private Sub CommandButton1_Click()
Dim I As Integer, Start As Integer, Fin As Integer
Dim Txt As String

Txt = Range("a1").Value

I = Len(Txt)
Start = InStr(Txt, "=")
Fin = InStrRev(Txt, "\")
Start = Start + 3
Fin = Fin - Start
Mid(Txt, Start, Fin) = "dada"
Range("a4").Value = Txt

End Sub
------------

Pascal

PS: pour la déclaration de variable n'oublies de déclarer le type après chaque variable car même sur la même ligne il faut le faire sinon elles sont considérées Variant
 
C

Creepy

Guest
Re all,

Merci Pascal pour tes infos, je pensais que si tu mettais toutes les variables sur la même ligne, elles prenaient toutes le type.

Pour le Range("a4").Value = Txt, j'aurais pu y penser, je suis couillon !!

La macro marche mais elle ne me donne pas ce que je veux! Elle remplace à partir du premier caractère indiqué, selon la chaine entrée sans dépasser la fin indiquée. Mais si le texte de remplacement est plus cours, elle s'arrete avant.

Plus concretement : Mid(Txt, Start, Fin) = "dada" demande de remplacer dans ma chaine TXT, en commancant à START, et en ne dépassant pas FIN
par "dada". Si mon ecart est plus grand que 4(DADA), (5 à 15 par exemple), la fonction remplace les 4 premiers caractères par "dada" mais pas le reste.

et si ma chaine est plus grande que mes bornes la fonction s'arrete à FIN !

En faites moi ce que je voudrais c'est SUBSTITUER entre les bornes définies le texte par un autre plus couts ou plus long selon !!

Comment faire ??

++

Creepy
 
S

sousou

Guest
Bonjour creepy

Test ce petit code pour voir si j'ai compris quelquechose

Sub deb()
Call remplace(Range("a10"), "data", 5, 15)
End Sub

Sub remplace(txt, chaine, start, fin)
nbcchaine = Len(chaine)
nbcctxt = Len(txt)
nbsf = fin - start
debtxt = Left(txt, start)
fintxt = Right(txt, nbcctxt - fin)
mtxt = Mid(txt, start, fin - start)
If nbcchaine < Len(mtxt) Then mtxtresult = chaine & Right(mtxt, Len(mtxt) - Len(chaine))
If nbcchaine > Len(mtxt) Then mtxtresult = Left(chaine, Len(chanine) - Len(mtxt))
MsgBox debtxt & mtxtresult & fintxt
End Sub
 

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 502
dernier inscrit
talebafia