Supprimer des caractères dans une variable en VBA(excel)

Résolu
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008 - 24 nov. 2005 à 16:51
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008 - 24 nov. 2005 à 18:50
Bjr tt le monde,

je sèche sous VBA:
Dans un Excel, je doit lire des cellules qui contiennent des adresses MAC.
Ces adresses sont saisies en copier coller depuis des fenêtres DOS et le responsable info
exige que les adresses reste notées comme suit : 00:0B:5D:73:6D:96
et ce pour des raisons de lisibilité dans le fichier.

Je doit construire un fichier texte destiné à alimenter un serveur DHCP.
j'ai donc une variable string qui récupère l'adresse MAC:
MakeAddMAC = ActiveCell.Value '00:0B:5D:73:6D:96
Comment je vire les ":" ???

la ref à la fonction REPLACE n'est pas possible car je ne donne que le fichier .BAS qui sera utilisé par des novices.

d'avance, merci à tous

10 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
24 nov. 2005 à 17:48
Essaye cette fonction :



private function DelCar(byval OrigStr as string, byval Car as string) as string



dim mStr as string

dim i as long

mstr=""



for i=1 to len(OrigStr)

if mid$(OrigStr,i,1)<>Car then mStr=mStr+mid$(OrigStr,i,1)
next


DelCar=mStr



end function

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NH
3
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
24 nov. 2005 à 18:01
Bonjour,



Option Explicit

Public Function Replace( _

ByVal expression As String, _

ByVal find As String, _

ByVal replacewith As String, _

Optional ByVal start As Long = 1, _

Optional ByVal count As Long = -1, _

Optional ByVal compare As Long)



Dim lenFind As Long

Dim lenNext As Long

Dim lenReplace As Long

Dim lenExpression As Long



'Emulation de Const vbUseCompareOption = -1

If IsEmpty(compare) Or _

((compare <> vbBinaryCompare) And (compare <> vbTextCompare)) Then

compare IIf("A" "a", vbTextCompare, vbBinaryCompare)

End If



If start > Len(expression) Then

Replace = vbNullString

Else

If Not ((start < 1) Or _

(start > Len(expression)) Or (find = vbNullString)) Then

lenFind = Len(find)

lenReplace = Len(replacewith)

start = InStr(start, expression, find, compare)

Do While (start <> 0) And (count <> 0)

lenExpression = Len(expression)

lenNext = start + lenFind

expression = Mid$(expression, 1, start - 1) & replacewith & _

IIf(lenNext <= lenExpression, _

Mid$(expression, lenNext), vbNullString)

count = count - 1

start = InStr(start + lenReplace, expression, find, compare)

Loop

End If

Replace = expression

End If



End Function



Sub test()

Dim b

b = Range("C1").Value 'La celulle C1 contient (00:21:54:87)

MsgBox Replace(b, ":", "")

End Sub



jpleroisse



Si une réponse vous convient, cliquez Réponse Acceptée.
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
24 nov. 2005 à 16:58
replace MakeAddMAC,":","")

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NH
0
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
24 nov. 2005 à 17:28
j'ai déjà essayé, ça ne fonctionne pas:

erreur de compilation:
Sub ou Fonction non définie
0

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

Posez votre question
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
24 nov. 2005 à 17:36
MakeAddMAC=replace(
MakeAddMAC,":","")

Voila, je ne sais pas pkoi, la 1ere paranthèse n'est pas passée, mais le pb est ptete ailleur.


Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NH
0
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
24 nov. 2005 à 18:03
OPSSS,

désolé, j'utilise rarement le forum...
ça ne se reproduira pas sans y avoir été invité.
(...je viens même de découvrir l'option du webmail sur le forum....)
0
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
24 nov. 2005 à 18:18
Merci Nh !!!,


ta fonction est OK !
je suis sur ce problème depuis fin de matinée...
J'espère que j'aurai l'occasion de te renvoyer l'ascenseur...

Merci également à jpleroisse, je testerai ce code ce soir chez moi ou demain et je ferai un retour dessus.
0
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
24 nov. 2005 à 18:20
Dernière question...

A quoi sert le boutton "Réponse acceptée !"
Il cloture l'appel?
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
24 nov. 2005 à 18:36
Re,

Le bouton Réponse Acceptée signale au autres posteur que tu a la
solution à ton problèmes (pour éviter d'ouvrir le post inutilement,
sauf peut-être si d'autres sont intéressés et vont voir la réponse)



jpleroisse
0
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
24 nov. 2005 à 18:50
A jpleroisse,
je confirme que ton code fonctionne et qu'il convient également à mon problème.

Merci
0
Rejoignez-nous