mettre à jour une cellule

J

Johanne

Guest
Bonjour,

Est-ce possible de créer une macro qui s'active chaque fois qu'il y a un ajout d'une donnée et/ou une modification dans une cellule ?

Par exemple, si en A2 j'entre Maison comme catégorie, je voudrais que la formule dans la colonne C soit celle qui correspond à la catégorie Maison. J'ai une formule différente pour chaque catégorie.

J'ai pensé mettre en C2 une formule avec un si, mais comme j'ai plus de 30 catégories, je me suis dit que la formule serait trop longue et complexe à faire.
A B C
1 Catégorie # produit Nom
2 Maison 05888
3 Jardin
4 Femme

Est-ce possible de créer une macro qui copie la bonne formule dans la colonne C selon la catégorie sans être obligé d'appuyer sur un bouton ou le menu outils, macro....

Merci de votre aide.
 
R

Robert

Guest
Bonsoir Johanne, bonsoir le forum,

En pièce jointe une toute petite démo (dommage que tu n'ais pas mis un fichier exemple en pièce jointe).

J'espère que ça t'aidera.

À plus,

Robert
 

Pièces jointes

  • Johanne.zip
    9.5 KB · Affichages: 26
J

Johanne

Guest
Robert,

merci beaucoup pour ton aide. Ça fait ce que je veux.

J'aurais une autre question. Comment j'inscrire mes formules.

Présentement, dans ma colonne C, j'ai la formule suivante: "=RECHERCHEV($A$4;E19:F22;1;FAUX)

J'ai essayé ceci, mais ça ne fonctionne pas.

Target.Offset(0, 2).FormulaR1C1 = "=RECHERCHEV($A$4;E19:F22;1;FAUX)"

Tant qu'à y être, si c'est possible j'aimerais que $A$4 soit replacé par la cellule modifié dans la colonne A. Donc si je modifie A7, je voudrais que ce soit =RECHERCHEV($A$7;E19:F22;1;FAUX)

merci beaucoup.
 
J

Johanne

Guest
Robert,

Oui tu as raison, ma formule était incohérente, car je n'avais pas le fichier avec moi. La vraie formule est la suivante si catégorie en A4 est Maison

=(IF(ISBLANK(A4), " ",INDEX('[Maison.xls]sheet1'!$E:$F, MATCH(A4,'[Maison.xls]sheet1'!$F:$F,), MATCH("Description",'[Maison.xls]sheet1'!$E$6:$F$6,))))


Crois-tu que ça se traduit en VBA?

merci pour ton aide.
 
J

Johanne

Guest
Robert,

tu es génial. Ça fonctionne à merveille.

J'ai jumelé le code des trois fichiers que tu m'as envoyé et ça fonctionne.

Concernant ta remarque:
Petite remarque personnelle : vu que la formule renvoie "" (vide) en C si A est vide, je pense que placer cette formule dans toute la colonne C aurait exactement le même effet sans être obliger d'utiliser VBA.

Le chemin d'accès varie selon la catégorie, si c'est maison, il recherche dans le fichier maison, si c'est homme dans homme, etc. Je fais cette opération avec le SELECT CASE.

Merci beaucoup pour ton aide. Je l'apprécie énormément.
 
R

Robert

Guest
Re johanne, soalut le forum,

Si ça marche tu n'as pas besoin de Select Case, essaie comme ça :

Target.Offset(0, 2).FormulaR1C1 = _
"=IF(ISBLANK(RC[-2]),"""",INDEX([" & Target.Value & ".xls]Feuil1!C5:C6,match(RC[-2],[" & Target.Value & ".xls]Feuil1!C6),match(""Description"",[" & Target.Value & ".xls]Feuil1!R6C5:R6C6)))"

À plus,

Robert
 
J

Johanne

Guest
Merci Robert,

J'ai déja écris le code pour toutes les 30 catégories et ça fontionne. Je vais garder en note ta dernière formule pour l'essayer éventuellement. J'ai plein de factures à entrer dans le système avant la fin du mois, alors je n'ai pas le temps de l'essayer maintenant.

Merci beaucoup pour ton aide.
 

Discussions similaires

Réponses
10
Affichages
270

Statistiques des forums

Discussions
312 609
Messages
2 090 190
Membres
104 447
dernier inscrit
Baldur