Allo à tous,

J'ai un classeur dans lequel se trouve plusieurs feuilles remplies de libellés et formules.

Au "repos" (avant que l'utilisateur n'ait entré les données initiales), tous les types d'erreurs peuvent apparaître dans certaines cellules (#DIV/0!, #N/A, etc.).

Lorsque je cherche à lire systématiquement chaque feuille et chaque cellule pour savoir ce qu'elle contient (libellé de type texte ou formule) et y remplacer une chaîne de caractère donnée, si la cellule lue contenait une erreur, le code plante :

ex d'une formule située en D12 qui renvoie #DIV/0! car $D10=0 :
=Source/(2*RACINE($D10*ContactCutané*TC))
Et dans laquelle on souhaite remplacer "TC" par "CA" mais pas le "tC" de "ContactCutané".
(NB: Source, ContactCutané et TC sont des noms de champs)

Comment intercepter ces erreurs et manipuler la chaîne de caractère initialement présente dans la cellule sous forme de formule pour y remplacer l'occurence de "sous"-chaine souhaitée par exemple ?

Code permettant de lire et afficher systématiquement le contenu de chaque cellule :
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
Sub IdentifierCellulesAvecChaineDeCaractèresStipulée()
 
    Dim SearchChar, Texte_A_Afficher As String
    Dim Feuille As Worksheet
    Dim Cell As Range
    Dim i As Long
 
  ' Pour chacune des feuilles contenues dans un classeur,
  ' cherche les cellules connant la chaîne de caractères SearchChar
  ' avec respect de la casse et applique une couleur de fond jaune
  ' si elle les contient.
 
    SearchChar = "TC"
 
    For Each Feuille In Worksheets
        For Each Cell In Worksheets(Feuille.Name).UsedRange.Cells
 
            UserForm1.Show False
            Texte_A_Afficher=Cell.Value
            UserForm1.Label1 = Texte_A_Afficher
            DoEvents
 
        Next Cell
    Next Feuille
 
  ' Unload UserForm1
 
End Sub
Merci d'avance pour votre aide