Formule avec cellule variable dans Macro EXCEL

Fermé
Julien - 9 juin 2015 à 23:45
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 10 juin 2015 à 08:52
Bonjour,

Je souhaite créer une macro qui aurait les fonctions suivantes :
- lancement automatique lorsque le texte contenu dans la cellule A2 devient "abc",
- entrer la formule "=B2*C1" dans la cellule C2 (pour que le calcul se fera automatiquement selon les valeurs des cellules B2 et C1).

Je ne souhaite pas un adressage relatif de la cellule C1 (type "=R[-1]C") car je voudrais dupliquer la même macro sur les lignes en dessous.

Je suis complètement débutant en macro et je n'arrive pas à trouver le bon code, notamment pour l'exécution automatique et l'adressage "non relatif" de C1.

Pouvez-vous m'aider svp ?

Merci d'avance,

Julien
A voir également:

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
10 juin 2015 à 08:45
Bonjour
macro à installer dans le module feuille de l'éditeur VBA

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ligne As Integer
If Not Intersect(Target, Range("A2:A300")) Is Nothing Then
If Target Like "*abc*" Then
ligne = Target.Row
Cells(ligne, "C") = Cells(ligne, "B") * Cells(1, "C")
End If
End If
End Sub

0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
10 juin 2015 à 08:52
macro commentée
Option Explicit
'-------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ligne As Integer
'vérif cellule changée dans zone d'action (ici A2:A300)
If Not Intersect(Target, Range("A2:A300")) Is Nothing Then
'test si cellule contient "abc" jointif dans la celle
If Target Like "*abc*" Then
'repèrage de la ligne de la cellule changée
Ligne = Target.Row
'calcul colonne B /ligne C1 fixe
Cells(Ligne, "C") = Cells(Ligne, "B") * Cells(1, "C")
End If
End If
End Sub
0