replace avec excel 97

Seb

XLDnaute Occasionnel
Bonsoir à tous,

J'ai un soucis de conversion d'une macro crée sur excel 2003 en excel 97.

J'utilise la fonction replace (excel2003) pour me changer les nombres décimal ecrit avec un point en nombre decimal ecrit avec une virgule.

Sur le 97 cette fonction n'existe pas, j'ai trouvé sur le net une macro qui "créé" cette macro dans le 97.

la voici:




SourcePublic Function Remplace(ByVal classStringValue As String, _
ByVal strSearch As String, _
ByVal strReplac As String, _
Optional ByVal IntStart As Integer = 0, _
Optional ByVal intCount As Integer = 2 ^ 16 / 2 - 1) As String
' ------------------------------------------------
' strSearch : chaîne recherchée
' strReplac : chaîne qui se substituera
' IntStart : Nombre d'occurrences à partir de laquelle commenceront les remplacements (par défaut 0)
' IntCount : Nombre de valeurs qui seront remplacées (par défaut le maximum pour un type Integer)
' ------------------------------------------------

Dim i As Integer, iCount As Integer, iStart As Integer
Dim strOut As String 'chaîne qui contiendra le résultat
iCount = 0
iStart = 0

If Len(classStringValue) > 0 Then
i = 1
' Boucle qui parcourt la chaîne
Do While i <= Len(classStringValue)
If Mid(classStringValue, i, Len(strSearch)) = strSearch And iCount < intCount Then
'cas d'une occurence trouvée et le nb maximum de remplacements n'est pas atteint
If iStart >= IntStart Then
strOut = strOut & strReplac
i = i + Len(strSearch)
iCount = iCount + 1 'on incrémente le compteur de remplacements
iStart = iStart + 1 'on incrémente le compteur d'occurences trouvées
Else 'le nombre de remplacement est atteint on laisse le caractère d'origine
iStart = iStart + 1
strOut = strOut & Mid(classStringValue, i, 1)
i = i + 1
End If
Else 'il n'y a pas de remplacement à faire la chaîne recherchée n'est pas trouvée
strOut = strOut & Mid(classStringValue, i, 1)
i = i + 1
End If
Loop

Remplace = strOut
Else
Remplace = ""
End If

End Function


mais il me met une erreur que je sais pas reparer. Il me revoit à cette macro en me soulignant " mid "

ou est l'erreur... je galère...

Si quelqu'un peut me filler un coup de pouce....

Merci encore..

seb
 

JYLL

Nous a quitté
Repose en paix
Re : replace avec excel 97

Bonsoir Seb et le Forum,

Si tu dois remplacer tous les points par une virgule, tu as la fonction remplacer directement dans le menu "Edition. autrement cette macro doit suffir.

Code:
Sub Replacer_Point_Par_Virgule()
    Cells.Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
Range("A1").Select
End Sub
Bon test.
 

myDearFriend!

XLDnaute Barbatruc
Re : replace avec excel 97

Bonsoir Seb, JYLL, le Forum,

Sinon, en complément de la réponse de JYLL, pour compatibilité avec XL97, on peut remplacer aisément la fonction Replace() par la fonction de feuille de calcul Substitue().

En VBA, on l'utilise donc comme ça :
Code:
[SIZE=2]MsgBox Application.WorksheetFunction.Substitute("La.Chaine.De.Caracteres", ".", ",")[/SIZE]
ou bien :
Code:
[SIZE=2]MsgBox WorksheetFunction.Substitute("La.Chaine.De.Caracteres", ".", ",")[/SIZE]
ou encore comme ça :
Code:
[SIZE=2]MsgBox Application.Substitute("La.Chaine.De.Caracteres", ".", ",")[/SIZE]
Cordialement,
 

papapaul

XLDnaute Impliqué
Re : replace avec excel 97

:eek: Bonjour,
J'ai le même problème mais dans ce code.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "Liste" Then
Target.Interior.ColorIndex = 33
If Left(Target.Value, 1) = "$" Then
Selection.Interior.ColorIndex = 33
Else
Target.Interior.ColorIndex = xlNone
MsgBox "Vous devez cliquer une adresse ! ", , "Pour mettre un doublon en couleur dans la feuille d'origine."
End If

Dim cell As Range, Refcel, Plg, UnionPlg
If Target = Range("A1") Then
For Each cell In Range("A1").CurrentRegion
If cell.Interior.ColorIndex = 33 Then
Refcel = Replace(cell, "$", "")
Plg = Plg & Refcel & ","
End If
Next
UnionPlg = Left(Plg, Len(Plg) - 1)
Sheets(Range("A1").Value).Range(UnionPlg).Interior.ColorIndex = 33
Sheets(Range("A1").Value).Activate

End If
Application.EnableEvents = True ' Remise en place de l'intercepteur d'évènement
End If
End Sub

J'ai essayé en changeant Replace par Substitue ou Remplacer (fonctions 97)
évidement ca marche pas:confused:

Ca met : sub ou function non définie

Merci à ceux qui ont la solution.
 

papapaul

XLDnaute Impliqué
Re : replace avec excel 97

;) Salut Dalmont,
Je veux bien essayer mais on met ca ou et comment ??

Sinon, j'ai trouver le code ci-dessous à partir du lien :

(cf. http://support.microsoft.com/default...b;en-us;188007)

Public Function Replace(sIn As String, sFind As String, _
sReplace As String, Optional nStart As Long = 1, _
Optional nCount As Long = -1, Optional bCompare As _
VbCompareMethod = vbBinaryCompare) As String


Dim nC As Long, nPos As Integer, sOut As String
sOut = sIn
nPos = InStr(nStart, sOut, sFind, bCompare)
If nPos = 0 Then GoTo EndFn:
Do
nC = nC + 1
sOut = Left(sOut, nPos - 1) & sReplace & _
Mid(sOut, nPos + Len(sFind))
If nCount <> -1 And nC >= nCount Then Exit Do
nPos = InStr(nStart, sOut, sFind, bCompare)
Loop While nPos > 0
EndFn:
Replace = sOut
End Function

Ca paraissait pas mal alors je l'ai mis dans mon thisworkbook
mais ca bug avec les codes que j'ai mis en bleu,
une histoire de activeX : je comprends pas trop.:confused:

Sinon y a aussi le code que j'ai trouvé dans ce post :

Public Function Remplace(ByVal classStringValue As String, _
ByVal strSearch As String, _
ByVal strReplac As String, _
Optional ByVal IntStart As Integer = 0, _
Optional ByVal intCount As Integer = 2 ^ 16 / 2 - 1) As String
etc....

Ca aussi ca à l'air presque bon mais apparement il faut
y modifier des trucs par rapport à ma macro d'origine
et la ca se complique sérieusement.:p

Je continue à essayer. Merci à tous
 

Bebere

XLDnaute Barbatruc
Re : replace avec excel 97

bonsoir le fil
Papapaul
Mdf l'explique bien dans une réponse précédente

Refcel = Application.WorksheetFunction.Replace(cell, "$", "")
Refcel = Application.WorksheetFunction.Substitute(cell, "$", "")

à bientôt
 

myDearFriend!

XLDnaute Barbatruc
Re : replace avec excel 97

Bonsoir le fil, Bebere,

Ouf, tu me rassures Bebere, ça frôle la 4ème dimension là...

Cela dit, non, Refcel = Application.WorksheetFunction.Replace(cell, "$", "") ça n'existe pas.

DDalmont le soulignait déjà plus haut, pour Excel 97, il s'agit bien de la fonction de feuille de calcul dont je parle. C'est Application.WorksheetFunction.Substitute() ou Application.Subsitute() si on veut simplifier. Mais dans les 2 cas, c'est toujours Substitute et non Replace

Bonne fin de soirée.

Cordialement,
 
Dernière édition:

papapaul

XLDnaute Impliqué
Re : replace avec excel 97

:( Bonjour Forum,
Excusez moi de revenir mais , Encore Excel 97 ?? :mad:
Je rejoins le fichier qui marche parfaitement chez moi
mais ici au boulot (97), grrrrrrrr....
J'ai bien mis
Refcel = Application.WorksheetFunction.Substitute(cell, "$", "")
et du coup si je clique A1, ca me met tout en bleu et ca plante sur
If Left(Target.Value, 1) = "$" Then
Je vois vraiment pas ce qui peut coincer.
Plus que ca à régler et ce serait fini:(
Merci d'avance à tous et bonne journée
 

Pièces jointes

  • Feuille_Liste_multiselection.zip
    35.6 KB · Affichages: 33
  • Feuille_Liste_multiselection.zip
    35.6 KB · Affichages: 33
  • Feuille_Liste_multiselection.zip
    35.6 KB · Affichages: 32

Discussions similaires

Réponses
6
Affichages
298