Ajout fonction SIERREUR à toutes mes formules VBA

Bonjour à tous,

Dans mon travail j'effectue de nombreux reporting où mes tableaux sont reliés à des TCD via la fonction =LIREDONNEESTCD...

Ces formules sont généralement entourées de SIERREUR(LIREDONNEES...;"") pour plus de propreté.

Existe-t-il un moyen par VBA pour pouvoir automatiquement passer les formules/cellules sélectionnées pour ajouter un SIERREUR à la fonction LIREDONNEESTCD. (par exemple avec un bouton au ruban).

Merci beaucoup pour votre aide.

Bonne journée.

Paul

Bonjour,

Met le code ci-dessous dans un module est associe le à un raccourci clavier de ton choix pour ajouter le SIERREUR à une formule qui ne le possède pas.

Sub ModifFormula()
Dim Formule As String
Dim Remplace As String

If ActiveCell.FormulaLocal = "" Then Exit Sub
Formule = Right(ActiveCell.FormulaLocal, Len(ActiveCell.FormulaLocal) - 1)
If Left(Formule, 8) = "SIERREUR" Then Exit Sub
Remplace = "=SIERREUR(" & Formule & ";"""")"
ActiveCell.FormulaLocal = Remplace
End Sub

Bonjour Gautier,

C'est excellent ! exactement ce que je voulais et sa fonctionne nickel.

Merci beaucoup !

Paul

Tant mieux si ça te convient, bonne continuation

Est-il possible de l'améliorer pour que ce code puisse s'appliquer aux cellules sélectionnées sur une plage ? (au lieu de faire 1 par 1)

Merci.

Bien évidemment

Je te fais ça tout a l'heure ( d'ici 1h)

Voilà une piste mais je coince, la définition de la zone sélectionnée ne se fait pas correctement quand des cellules vides font partie de la sélection. Je continue d'investigué !

Sub ModifFormula()
Dim Formule As String
Dim Verif As String
Dim NouvelleFormule As String
Dim Plage As Range
Dim Cel As Object

    Set Plage = ActiveCell.CurrentRegion 'Pause problème en cas de cellules vide sélectionnées
    For Each Cel In Plage
        If Cel.FormulaLocal <> "" Then
            Formule = Cel.FormulaLocal
            Verif = Right(Formule, Len(Formule) - 1)
            If Left(Verif, 8) <> "SIERREUR" Then
                NouvelleFormule = "=SIERREUR(" & Verif & ";"""")"
                Cel.FormulaLocal = NouvelleFormule
            End If
        End If
    Next Cel
End Sub

En faite c'est tout bête, il faut utiliser Selection et non pas ActiveCell.CurrentRegion

Sub ModifFormula()
Dim Formule As String
Dim Verif As String
Dim NouvelleFormule As String
Dim Plage As Range
Dim Cel As Object

    Set Plage = Selection
    For Each Cel In Plage
        If Cel.FormulaLocal <> "" Then
            Formule = Cel.FormulaLocal
            Verif = Right(Formule, Len(Formule) - 1)
            If Left(Verif, 8) <> "SIERREUR" Then
                NouvelleFormule = "=SIERREUR(" & Verif & ";"""")"
                Cel.FormulaLocal = NouvelleFormule
            End If
        End If
    Next Cel
End Sub

Merci Gautier,

encore une fois au top. Je suis un peu gêné que tu y aies passé autant de temps.
En tout cas ça va m'être vraiment utile au quotidien, et à d'autres je l'espère.

Paul

Houlala Spark39 il ne faut surtout pas être gèné, ça m'a pris 10 minutes de mon temps, et puis si je suis sur le forum c'est pour aider, pas pour bâcler les choses

Rechercher des sujets similaires à "ajout fonction sierreur toutes mes formules vba"