XL 2016 Ajouter un caractère à la fin d'une formule Excel.

Crystel78

XLDnaute Nouveau
Bonjour,

Je possède un classeur très important sur lequel j'aimerais rajouter un nombre en fin de formule.
Ma formule est du type : =SI($cellule;$cellule).
J'aimerais pouvoir rajouter -1,5 à la fin de celle-ci, ce qui donnerait : =SI($cellule;$cellule; -1,5).
J'ignore cependant complètement comment rajouter un caractère à la fin.

En cherchant sur internet, j'ai pu trouver qu'avec ceci :

VB:
Cells.Select
With ActiveCell
sAvant = ""
sApres = ""
    
    
Selection.Replace What:=sAvant, Replacement:=sApres, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End With

On pouvait modifier un caractère, mais je n'ai pas de point de repaire, pour la fin de la formule, sachant que chaque cellule est différente l'une de l'autre. Le seul point de repaire que j'ai, c'est le début de ma formule "=SI(

Merci d'avance pour l'aide que vous pourriez m'apporter !
 
Solution
une petite idée en VBA :
VB:
Sub EnEnglais()
Dim Cel As Range
    Selection.SpecialCells(xlCellTypeFormulas, 23).Select
    For Each Cel In Selection
        If Left(Cel.Formula, 4) = "=SUM" Then
         MsgBox Cel.Formula
         Cel.Formula = Left(Cel.Formula, Len(Cel.Formula) - 1) & ",-1.5)"
         MsgBox Cel.Formula
        End If
    Next Cel
End Sub

Sub EnFrancais()
Dim Cel As Range
    Selection.SpecialCells(xlCellTypeFormulas, 23).Select
    For Each Cel In Selection
        If Left(Cel.FormulaLocal, 6) = "=SOMME" Then
         MsgBox Cel.FormulaLocal
         Cel.FormulaLocal = Left(Cel.FormulaLocal, Len(Cel.Formula) - 1) & ";-1,5)"
         MsgBox Cel.FormulaLocal
        End If
    Next Cel
End Sub

Crystel78

XLDnaute Nouveau
Bonjour, un fichier est indispensable dans le cas présent.
Bonjour,

Voici un fichier exemple.
Les colonnes et les cellules à l'intérieur sont aléatoires, c'était juste pour vous donner un exemple, puisque cette modification, j'aimerais l'effectuer sur beaucoup plus de cellules que dans l'exemple.

Merci pour votre aide
 

Pièces jointes

  • Classeur1.xls
    27 KB · Affichages: 9

WTF

XLDnaute Impliqué
Bonjour Crystel
Ta demande n'est pas très claire.

Une proposition avec au moins 9/10 de répondre à coté :

Formule en A1 : =SI($I$9<>"";C36&"-1,5";"")

Qui veut dire :
- Si : I9 est non vide
- Alors : indique ce qui est écrit en C36 et "-1,5"
- Sinon : vide
 

Crystel78

XLDnaute Nouveau
Ca ne peut pas être systématique, il faut d'abord que tu écrives ta formule.
Si c'est une somme, ca peut être =SOMME(Cellule1;Cellule2;-1,5)
Ou si moyenne : =MOYENNE(Cellule1;Cellule2;-1,5)
Merci pour votre réponse,
Pour rebondir sur l'exemple d'une Moyenne, si dans un classeur j'ai plusieurs moyenne dans plusieurs colonnes du type : =MOYENNE(Cellule1;Cellule2)
De quelle façon faudrait-il que j'opère pour ajouter à chaque moyenne de mon classeur : -1,5, comme dans votre exemple ?
 

Crystel78

XLDnaute Nouveau
Je ne peux malheureusement pas envoyer de fichier plus précis, par souci de confidentialité.
Dans l'idée ce que j'aimerais concevoir c'est une boucle qui parcours toutes les cellules de mon classeur "Feuil1" et pour chaque cellule du type "=MOYENNE(Cellule1;Cellule2) ajouter à la fin "-1,5" soit : =MOYENNE(Cellule1;Cellule2;-1,5). Mais je ne suis même pas certain que ce soit possible en VBA.

Si cela est trop difficile sans fichier précis, je le conçois parfaitement, et je continuerai à chercher de mon coté.

Je vous remercie en tout cas pour le temps que vous m'avez tous consacré.
 

Laurent78

XLDnaute Occasionnel
une petite idée en VBA :
VB:
Sub EnEnglais()
Dim Cel As Range
    Selection.SpecialCells(xlCellTypeFormulas, 23).Select
    For Each Cel In Selection
        If Left(Cel.Formula, 4) = "=SUM" Then
         MsgBox Cel.Formula
         Cel.Formula = Left(Cel.Formula, Len(Cel.Formula) - 1) & ",-1.5)"
         MsgBox Cel.Formula
        End If
    Next Cel
End Sub

Sub EnFrancais()
Dim Cel As Range
    Selection.SpecialCells(xlCellTypeFormulas, 23).Select
    For Each Cel In Selection
        If Left(Cel.FormulaLocal, 6) = "=SOMME" Then
         MsgBox Cel.FormulaLocal
         Cel.FormulaLocal = Left(Cel.FormulaLocal, Len(Cel.Formula) - 1) & ";-1,5)"
         MsgBox Cel.FormulaLocal
        End If
    Next Cel
End Sub
 

Crystel78

XLDnaute Nouveau
une petite idée en VBA :
VB:
Sub EnEnglais()
Dim Cel As Range
    Selection.SpecialCells(xlCellTypeFormulas, 23).Select
    For Each Cel In Selection
        If Left(Cel.Formula, 4) = "=SUM" Then
         MsgBox Cel.Formula
         Cel.Formula = Left(Cel.Formula, Len(Cel.Formula) - 1) & ",-1.5)"
         MsgBox Cel.Formula
        End If
    Next Cel
End Sub

Sub EnFrancais()
Dim Cel As Range
    Selection.SpecialCells(xlCellTypeFormulas, 23).Select
    For Each Cel In Selection
        If Left(Cel.FormulaLocal, 6) = "=SOMME" Then
         MsgBox Cel.FormulaLocal
         Cel.FormulaLocal = Left(Cel.FormulaLocal, Len(Cel.Formula) - 1) & ";-1,5)"
         MsgBox Cel.FormulaLocal
        End If
    Next Cel
End Sub

Merci beaucoup !
C'est exactement ce que je recherchais, vous êtes parfait !
Excusez moi encore de ne pas avoir été explicite
 

Discussions similaires

Réponses
1
Affichages
217

Statistiques des forums

Discussions
315 094
Messages
2 116 144
Membres
112 669
dernier inscrit
Guigui2502