XL 2019 Affecter une valeur à une cellule en fonction de la valeur de la cellule précédente

AlexC

XLDnaute Nouveau
Bonjour à tous,

Je suppose que ma question est assez basique mais je n'arrive pas à trouver de réponse satisfaisante sur internet...
Comme indiquer dans le titre j'aimerais affecter une valeur à une cellule en fonction de la valeur de la cellule précédente. Par exemple, si une cellule contient la lettre "E", j'aimerais que les 5 cellules qui suivent contiennent elles aussi la lettre "E". Si une cellule contient la lettre "D", j'aimerais que les 20 cellules qui suivent contiennent la lettre "D".

Existe-t-il une formule pour réaliser cela ?

Merci d'avance et bonne journée :)
 
Solution
Bonjour AlexC, GALOUGALOU,

Voyez le fichier joint et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub 'si sélections multiples
Dim a, b, i As Variant
a = Array("D", "E") 'à adapter
b = Array(20, 5) 'à adapter
i = Application.Match(Target, a, 0)
If IsNumeric(i) Then Target.Resize(, b(i - 1)) = a(i - 1)
End Sub
On peut entrer des lettres en minuscules.

A+

job75

XLDnaute Barbatruc
Vous avez raison.

Chez moi sur le fichier du post #21 la revalidation en A1 (ou d'une autre cellule) suffit pour le recalcul des formules.

Mai si j'efface puis remets la formule en B1 de la feuille Références en effet ça ne suffit plus.

J'avoue ne pas comprendre le pourquoi de ces comportements.

Il faut alors entrer 2021 en A1 puis revenir en 2020 pour que le recalcul des formules se fasse.

On pourrait éviter ce va et vient en rendant volatile la fonction MFC :
VB:
Function MFC(cel As Range, feries As Range) As Double
Application.Volatile
'-----'
Mais je ne le recommande pas car alors toutes les formules se recalculent quand on modifie une cellule quelconque du fichier et comme je l'ai dit cela prend 1,5 seconde.
 

AlexC

XLDnaute Nouveau
Si j'ai bien compris votre post, vous ne conseillez pas cette méthode car le temps de recalcule est long. Toutefois, le temps de calcul n'est pas vraiment un problème dans mon cas, il faut seulement que la formule fonctionne...

J'ai vérifié que mes formules soient bien en automatiques, c'est le cas.
J'ai vérifié la liaison en B1, elle est faite.
J'ai revalidé A1, rien ne se produit….
J'ai essayé en rajoutant votre complément de VBA rien de se produit non plus...

Pourtant j'ai seulement modifié cette partie :
a = Array("E", "D", "P", "G") 'modifiable
b = Array(5, 20, 20, 5) 'modifiable
c = Array(0.6, 0.25, 0.4, 0.5) 'modifiable

Mais la formule tourne comme si aucun de mes changements n'a été pris en compte…

Je comprends bien que je dois vous ennuyer avec toutes mes questions et j'en suis réellement désolée… je pensais pouvoir obtenir le calendrier qu'on m'a demandé de réaliser puisqu'on était si prêt du but.. mais si même vous ne comprenez pas "le pourquoi de ces comportements" je ne sais pas comment je pourrais comprendre cela toute seule ^^' tant pis...
 

job75

XLDnaute Barbatruc
Bonsoir AlexC,

Vous jouez les apprentis sorciers, ce n'est plus du tout le même fichier :

- la MFC sur la plage C7:ND50 n'est pas du tout correcte

- la formule en ligne 50 n'est pas du tout celle que j'ai donnée.

Donc je laisse tomber, j'ai résolu le problème au post #21 ça suffit.

A+
 

AlexC

XLDnaute Nouveau
Re bonjour,

Au temps pour moi, j'avais dû en effet faire une erreur en reprenant votre fichier du post #21. J'ai recommencé mes modifications en repartant de votre post et tout fonctionne correctement ! Je ne sais pas ce que j'avais fait....

Désolé 1000 fois et merci énormément du temps que vous avez passé pour m'aider !

J'arrête donc officiellement de vous embeter :p

Bonne journée et prenez soin de vous en cette période difficile !
 

Discussions similaires

Statistiques des forums

Discussions
314 488
Messages
2 110 132
Membres
110 679
dernier inscrit
lpierr