Décimales conditionnelles

Résolu
touroul Messages postés 509 Date d'inscription   Statut Membre Dernière intervention   -  
touroul Messages postés 509 Date d'inscription   Statut Membre Dernière intervention   -
Hello la communauté !

Encore une fonction Excel qui me manque ...

Je souhaite appliquer un certain nombre de décimales :
- à plusieurs cellules (non-contigües)
- en fonction du contenu (texte) d'une seule cellule bien particulière de ma feuille :

Voici ce que je souhaite obtenir :
=SI(G2="ABC";"0";"à cellules (A2:A8;B4:B18:G55:G67)")
=SI(G2="ABD";"0,0";"à cellules (A2:A8;B4:B18:G55:G67)")
=SI(G2="ABF";"0,00";"à cellules (A2:A8;B4:B18:G55:G67)")


Tout un groupe de cellules non- contiguës (A2:A8;B4:B18:G55:G67) reçoivent le même nombre de décimales en fonction de ce que je tape dans G2.
G2 peut recevoir 53 valeurs différentes.
Je peux taper 53 formules s'il faut.

Une idée pour mon casse-tête ?

Merci d'avance

3 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

une proposition via une macro
https://www.cjoint.com/?3Cci7teIJ3c
Alt-F11 pour visualiser le code

bonne suite
1
touroul Messages postés 509 Date d'inscription   Statut Membre Dernière intervention   16
 
C'est carrément excellent !
Quel talent !

plus qu'à appliquer à ma feuille

Je vous tiens au courant

Un grand merci cher ccm81.
0
touroul Messages postés 509 Date d'inscription   Statut Membre Dernière intervention   16
 
Après adaptation du code de ccm81, voici un mode opératoire à modifier selon vos besoins, si cela peut servir à quelqu'un :

A METTRE DANS UN MODULE GENERAL :

Option Explicit

Const cel = "A1" 'Adresse de la cellule contenant le texte servant de référence
Const plage1 = "D8:D14" 'Définition des plages recevant le nombre de décimales voulu pour le contenu de la cellule de référence
Const plage2 = "E8:E14"


Public Sub FormateCel(Target As Range)
Dim f As String, plage As Range
Set plage = Union(Range(plage1), Range(plage2)) 'citer les plages concernées
If Not Intersect(Target, plage) Is Nothing Then
Select Case Range(cel).Value

Case "Texte1": f = "0.00" ' si A1 contient "Texte1, toutes les plages citées auront 2 décimales
Case "Texte2": f = "0" ' si A1 contient "Texte2, toutes les plages citées seront des entiers


End Select
plage.NumberFormat = f
End If
End Sub

A METTRE DANS LA FEUILLE DE CALCUL :

Private Sub Worksheet_Change(ByVal Target As Range)
Call FormateCel(Target)
End Sub


Bon courage à ceux que ça intéresse et chapeau à ccm81 !
0