XL 2013 Modifier une partie du contenu cellule selon un critère

anri0610

XLDnaute Junior
Bonjour,

UP!: J'utilise excel version anglaise 2013.(les lettres accentuées ne sont pas reconnues.)

Je souhaiterai savoir si il est possible de modifier seulement une partie du contenu d'une cellule selon un critère présent dans cette même ligne .

Ex:

Pour une Ligne "x" ->

Si dans la colonne O ou P il est écrit ''A'' alors modifier contenu cellule colonne M.
(contenu cellule colonne M= =ARRONDI.SUP(ARRONDI.INF(L22*250000,0),-1)

Première règle :

si "A" alors +10 0000

ce que je souhaiterai:

si "A" alors cellule colonne M= =ARRONDI.SUP(ARRONDI.INF(L22*250000,0+10 0000),-1)

sans modifier le reste du contenu, en ajoutant uniquement la valeur en rouge,
car les cellules de chaque ligne vont être différentes.
le but, ajouter seulement et automatiquement le tarif supplémentaire correspondant aux données indiquées par la colonne O et P dans les cellules de la colonne M.

J espère avoir été assez clair, voila merci par avance !!
Je vous joint le model du classeur concerne !
 

Fichiers joints

Dernière édition:

job75

XLDnaute Barbatruc
Bonjour anri0610,

Non pas très clair :

- dans la formule pourquoi mettez-vous des virgules au lieu des points-virgules ? Version française ou anglaise ?

- en colonne M du fichier il y a 220000 et pas 250000 ?

- que veut dire +10 0000 ? 100000 ou quoi ?

A+
 

anri0610

XLDnaute Junior
Bonjour job75,

version anglaise , j'ai ajoute l'info a mon post merci.

- +10 0000 augmente le tarif calcule au m3. pour un certain detail affiche dans les colonnes O et P, on aura +50 000 ou encore +30 0000 etc.
le but passer d'une base qui serait de
=ARRONDI.SUP(ARRONDI.INF(L22*220000,0),-1)
a par exemple avec +50 000 a :
=ARRONDI.SUP(ARRONDI.INF(L22*270000,0),-1)


-oui ce nombre va varier selon le produit, c 'est pour ça que avec des boutons
que j' ai mis sur le cote a droite,
je déclenche des macros que j'ai créer pour copier le nombre en question pour toutes les cellules de la colonne M pour les 5 pages..
La manière de m'y prendre est plus que bizarre je pense mais je n'ai pas su faire autrement!
le code est bêtement long mais j'avais besoin que chaque cellule soit vivante c'est a dire que une modification soit possible indépendamment des autres pour chaque cellule.
voici pour 22 0000 une partie du code :

VB:
Sub MacroT22()
'
' T22 Macro
'

'


' Page 1


    Range("AI23").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(R[-1]C[-23]*220000,0),-1)"
    Range("M22").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M22").Select
   
    Range("M23").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M23").Select
   
    Range("M24").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M24").Select
   
    Range("M25").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M25").Select
   
    Range("M26").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M26").Select
   
    Range("M27").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M27").Select
   
    Range("M28").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M28").Select
   
    Range("M29").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M29").Select
   
    Range("M30").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M30").Select
   
    Range("M31").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M31").Select
   
    Range("M32").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M32").Select
   
    Range("M33").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M33").Select
   
    Range("M34").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M34").Select
   
    Range("M35").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M35").Select
   
    Range("M36").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M36").Select
   
    Range("M37").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M37").Select
   
    Range("M38").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M38").Select
   
    Range("M39").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M39").Select
   
    Range("M40").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M40").Select
   
    Range("M41").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M41").Select
   
    Range("M42").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M42").Select
   
    Range("M43").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M43").Select
   
    Range("M44").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M44").Select
   
   
' Page 2

   
    Range("M48").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(ROUNDDOWN(RC[-1]*220000,0),-1)"
    Range("M48").Select

etc...
Chose que je répète pour 23,24,25,26,27 0000,

alors que en réalité cela va varier en fonction du client donc du cas, mais cela va être définit pour un cas avec les données de la colonne E, qui informe de la matière utilisée pour le produit:

exemple pour Cas A :

(colonne E) MDF = (colonne M) 25 0000
(colonne E) LVX = (colonne M) 27 0000

En gros il me faudrait un petit menu pour définir a chaque devis,
le prix de base pour chaque matière qui est inscrit pour chaque produit en colonne E,
puis définir des règles pour les détails du produit affiches en colonne O et P,
pour ajouter un tarif supplémentaire a la formule inscrite en colonne M.
 

job75

XLDnaute Barbatruc
Bonjour anri0610,

Donc version anglaise avec les textes des formules en français ? Version canadienne peut-être ?

Pour le reste tout ce que je comprends c'est que vos 7 macros MacroT22 à MacroT28 sont plus que pénibles.

Il suffit en effet de les remplacer par une seule :
Code:
Sub CaseOption()
If IsError(Application.Caller) Then Exit Sub 'sécurité
[M22:M44] = "=ROUNDUP(ROUNDDOWN(L22*" & ActiveSheet.DrawingObjects(Application.Caller).Text & ",0),-1)"
End Sub
Cette macro est affectée aux 7 cases d'option à droite dont les libellés vont de 220000 à 280000.

Fichier joint.

A+
 

Fichiers joints

Discussions similaires


Haut Bas