Bonjour,

Afin de rendre compatible mon classeur avec Excel 2003, je dois modifier toutes les cellules comprenant la formule sierreur(... par si(esterreur..., en essayant de récupérer automatique les arguments.

J'ai réussi à appliquer ma macro sur une cellule active, mais je n'arrive pas à l'appliquer sur l'ensemble des cellules non vides, que je sélectionne préalablement à l'aide d'une macro, qui fonctionne.

Pourriez-vous me donner un peu d'aide?

Merci beaucoup.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
 
Sub RemplacerSiErreur()
'
' Macro2 Macro
 
Dim Formule As String
Dim Trouve As Range
On Error Resume Next
 
Set Trouve = Selection.Find(what:="SIERREUR", LookIn:=xlFormulas, lookat:=xlPart)
adr = Trouve.Address
 
If Not Trouve Is Nothing Then
Do
 
'enlève le égale
Formule = Right(CStr(ActiveCell.FormulaR1C1), Len(CStr(ActiveCell.FormulaR1C1)) - 1)
 
'Enlève le ISERREUR()
Formule = Replace(Formule, "IFERROR", "")
 
'Enlève le dernier argument du ISERREUR()
Formule = Replace(Formule, ",0", "")
 
'Scinder les deux parties de la formule
'param = Split(Formule, ";")
 
'Applique le SI(ESTERREUR()...
FormulaR1C1 = "=SI(ESTERREUR(" & Formule & "),0," & Formule & ")"
 
Set Trouve = Selection.FindNext(Trouve)
Loop Until Trouve.Address = adr Or Trouve Is Nothing
End If
 
 
End Sub