Décimales conditionnelles

Résolu/Fermé
touroul Messages postés 475 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 11 novembre 2024 - 2 mars 2013 à 08:44
touroul Messages postés 475 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 11 novembre 2024 - 4 mars 2013 à 10:38
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 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 429
Modifié par ccm81 le 2/03/2013 à 09:00
Bonjour

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

bonne suite
1
touroul Messages postés 475 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 11 novembre 2024 16
2 mars 2013 à 09:17
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 475 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 11 novembre 2024 16
4 mars 2013 à 10:38
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