macro

Guillaumega

XLDnaute Impliqué
Bonjour le forum,

J'espère que vous allez bien.
J'aurais besoin d'aide pour une petite macro et j'attache un petit fichier exemple :

- En cas de changement de valeur dans la plage C5:F14
then
- mettre en orange la valeur changée
- la rappeler en colonne H, même ligne
- préciser en colonne I de quoi il s'agit et en colonne J le résultat

et puis enfin recalculer avec l'hypothèse sélectionnée les trois cellules inchangées de la plage C:F de la ligne.

Merci beaucoup !
Guillaumega
 

Pièces jointes

  • Classeur1.xls
    29 KB · Affichages: 51
  • Classeur1.xls
    29 KB · Affichages: 51
  • Classeur1.xls
    29 KB · Affichages: 58
Dernière édition:

JNP

XLDnaute Barbatruc
Re : macro

Bonjour Guillaumega :),
A première vue, pas de souci (sauf pour recalculer l'hypothèse, je ne vois pas vraiment de quoi tu veux parler :confused:), mais ton classeur semble lié avec des données, si c'est le cas, c'est pas du tout le même problème que si tu changes manuellement les valeurs en C5:F14 :rolleyes:...
A te lire :cool:
 

Guillaumega

XLDnaute Impliqué
Re : macro

Bonjour,
merci de ton intérêt. C'est un tableau d'hypothèses.
Ceci dit il est vrai que les valeurs de la plage c24:C27 peuvent changer... bonne remarque.
Est-ce que cela te semble possible?

Pour le recalcul des hypothèses, l'idée est que si je change en E5, il me calcule les valeurs en C5, D5 et F5. Je l'ai fait dans l'exemple avec une formule.
merci !
 

JNP

XLDnaute Barbatruc
Re : macro

Re :),
Le problème, c'est que pour surveiller une cellule, on peut utiliser l'évènement
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
qui va renvoyer la cellule validée par ta main. Mais si tu as fait une mise à jour de données, je ne vois pas comment savoir quelles sont les valeurs qui ont changé...
A + :cool:
 

Guillaumega

XLDnaute Impliqué
Re : macro

En J5 on pourrait mettre cette formule.
Code:
=+H5*CHOISIR(EQUIV(I5;{"of MRV";"of Passing Rent";"per sqm";"of Asset Value"});C26;C27;C25;C24)
Comme cela on a juste à faire le report de valeur et plugger par macro des formules dans les trois cellules inchangées.
Qu'est ce que tu en penses?
 

JNP

XLDnaute Barbatruc
Re : macro

Re :),
Qu'est ce que tu en penses?
Ben, pas grand chose :p...
Je n'y connais rien dans ton domaine (si j'ai un peu compris, des actions, mais je suis peut-être complètement à côté de la plaque :D...), mon domaine est tout autre :rolleyes:...
Je sais changer la couleur d'une cellule qui vient d'être modifiée.
Je sais recopier la valeur de l'entête, et éventuellement, chercher cette entête pour connaître la valeur de départ et appliquer le coefficient multiplicateur.
Mais pour le reste, il me faut un cours d'économie :eek:...
A + :cool:
 

Guillaumega

XLDnaute Impliqué
Re : macro

re,

En fait je suis une bille en vba... je suis juste pas mal en formules.
Par contre je peux te détailler ci-après mon besoin sur la ligne 5:
Si la valeur d'une cellule de la plage C5:F5 change then
-mettre en H5 =E5 si E5 est la cellule qui a changé
-mettre la couleur du fond de la cellule E5 en orange
-mettre l'entête de la colonne E en I5 soit =D4
-mettre en C5 =J5/C25; en D5 =J5/C27 et en F5 =J5/C24

idem sur les lignes 6 à 14
Je pense que là cela devrait fonctionner :)

Merci encore pour ton temps
Guillaumega
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : macro

Re :),
Alors
Code:
Private Sub Worksheet_Change(ByVal target As Range)
'Si la valeur d'une cellule de la plage C5:F5 change then
If Not Intersect(target, Range("E5:E14")) Is Nothing Then
'-mettre en H5 =E5 si E5 est la cellule qui a changé
Range("H" & target.Row) = "=E" & target.Row
'-mettre la couleur du fond de la cellule E5 en orange
target.Interior.ColorIndex = 44
'-mettre l'entête de la colonne E en I5 soit =D4
Range("I" & target.Row) = Cells(4, target.Column)
'-mettre en C5 =J5/C25; en D5 =J5/C27 et en F5 =J5/C24
Range("C" & target.Row) = "=J" & target.Row & "/C25"
Range("D" & target.Row) = "=J" & target.Row & "/C27"
Range("F" & target.Row) = "=J" & target.Row & "/C24"
' Il manque mettre en J5 le calcul
Range("J" & target.Row) = Range("C26") * target
End If
End Sub
Bonne soirée :cool:
 

Guillaumega

XLDnaute Impliqué
Re : macro

Bonsoir,

Merci pour ce code :)

Je l'ai mis dans mon fichier et cela fonctionne parfaitement pour la colonne E.
Il ne me manque dans la boucle que "retirer la couleur orange des autres cellules de la ligne" avant de mettre en couleur.

Par contre j'ai une référence circulaire quand j'essaie de mettre après ton code le même code adapté à la colonne D par exemple. Est-ce que tu saurais pourquoi stp?

Merci bcp,
Guillaume
 

Pièces jointes

  • Classeur1.xls
    39 KB · Affichages: 44
  • Classeur1.xls
    39 KB · Affichages: 48
  • Classeur1.xls
    39 KB · Affichages: 50

JNP

XLDnaute Barbatruc
Re : macro

Re :),
Est-ce que quelqu'un pourrait me donner un petit coup de main svp?
On est pas aux pièces :mad:...
Pour remettre les cellule dans la couleur de départ, voir quel est le colorindex de ta couleur de départ
Code:
MsgBox Selection.Interior.ColorIndex
en sélectionnant une de tes cellule non orange, puis
Code:
Range("C5:F14").Interior.ColorIndex =
la valeur trouvée.
Pour tes références circulaires, il faut que tu remplace les calculs par leurs valeurs avant de remettre des formules.
Bon courage :cool:
 

Guillaumega

XLDnaute Impliqué
Re : macro

Merci beaucoup pour la leçon. J'ai réussi la première partie :
Code:
If Not Intersect(target, Range("E5:E13")) Is Nothing Then
    Range("I" & target.Row) = "=E" & target.Row
    Range("C" & target.Row).Interior.ColorIndex = -4142
    Range("D" & target.Row).Interior.ColorIndex = -4142
    Range("F" & target.Row).Interior.ColorIndex = -4142
    Range("G" & target.Row).Interior.ColorIndex = -4142
    target.Interior.ColorIndex = 44
    Range("J" & target.Row) = "=E4"
    Range("C" & target.Row) = "=K" & target.Row & "/C24"
    Range("D" & target.Row) = "=K" & target.Row & "/C26"
    Range("F" & target.Row) = "=K" & target.Row & "/C23"
End If

Par contre je n'arrive pas pour la référence circulaire quand je veux faire la même chose pour les colonnes C,D et F...
Pourrais-tu me redonner un petit coup de pouce s'il te plait?
 

Discussions similaires

Réponses
6
Affichages
162

Statistiques des forums

Discussions
312 386
Messages
2 087 854
Membres
103 669
dernier inscrit
Anne Sicard