[VBA] Une cellule prendre la valeur 1 si une autre cellule change de valeur

R@chid

XLDnaute Barbatruc
Bonjour @ tous,
J'ai 2 cellules nommées et qui sont sur le même onglet, MaCellule1 MaCellule2
Je veux que si MaCellule1 change de valeur, [MaCellule2] = 1
Même si le dit onglet n'est pas actif du fait que ce dernier est masqué.

Merci
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] Une cellule prendre la valeur 1 si une autre cellule change de valeur

Bonsoir à tous

R@chid
Pas le temps de nous concocter un petit fichier exemple ? ;)

Et on fait quoi si la valeur change plusieurs fois ou si on efface le contenu de la cellule ?
 

R@chid

XLDnaute Barbatruc
Re : [VBA] Une cellule prendre la valeur 1 si une autre cellule change de valeur

Re,
merci Staple1600, et pardon pour le fichier, voir si je suis clair.


@ + +
 

Pièces jointes

  • FichierTest.xlsx
    12.7 KB · Affichages: 60
  • FichierTest.xlsx
    12.7 KB · Affichages: 59
  • FichierTest.xlsx
    12.7 KB · Affichages: 60

R@chid

XLDnaute Barbatruc
Re : [VBA] Une cellule prendre la valeur 1 si une autre cellule change de valeur

Re,
Bonjour eriiiic, en jetant un coup d’œil sur le fichier tu vas remarquer que ceux des cellules liées à des zones de listes déroulantes.

@ + +
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : [VBA] Une cellule prendre la valeur 1 si une autre cellule change de valeur

Bonsoir R@chid :) (ça faisait longtemps...)

Un essai dans le fichier joint


  • sur la feuille masquée, j'ai rajouté une formule pour déclencher l'évènement Worksheet_Calculate() de cette feuille masquée
  • j'ai déclarée une variable STATIC de nom "maliste" (STATIC -> qui conserve sa valeur entre deux appels) qui stocke la dernière valeur de la liste déroulante n°1
  • à chaque calcul de la feuille masquée, si la valeur de la variable STATIC "maliste" a changé, on passe la valeur de la liste déroulante n°2 à 1

Le code dans le module de Feuil2:
VB:
Private Sub Worksheet_Calculate()
Static maliste

  If Range("Cel_MesListes") <> maliste Then
    maliste = Range("Cel_MesListes")
    Range("Cel_ListeActive") = 1
  End If

End Sub
 

Pièces jointes

  • R@chid-FichierTest-v1.xlsm
    20.9 KB · Affichages: 51
Dernière édition:

eriiic

XLDnaute Barbatruc
Re : [VBA] Une cellule prendre la valeur 1 si une autre cellule change de valeur

J'ai vu après oui.
Une proposition à tester. Mettre en B4: =B2 pour forcer un calculate et :
Code:
Private Sub Worksheet_Calculate()
    Static B2sav As Long
    If [B2] <> B2sav Then
        [B3] = 1
        B2sav = [B2]
    End If
End Sub
 

Pièces jointes

  • FichierTest.xlsm
    18.5 KB · Affichages: 44
  • FichierTest.xlsm
    18.5 KB · Affichages: 52
  • FichierTest.xlsm
    18.5 KB · Affichages: 61

job75

XLDnaute Barbatruc
Re : [VBA] Une cellule prendre la valeur 1 si une autre cellule change de valeur

Bonjour R@chid, salut JM, eriiiic, mapomme,

Place où tu veux cette macro :

Code:
Sub Zonecombinée1_QuandChangement()
[Cel_ListeActive] = 1
End Sub
et affecte-la à la 1ère zone de liste combinée.

A+
 

R@chid

XLDnaute Barbatruc
Re : [VBA] Une cellule prendre la valeur 1 si une autre cellule change de valeur

Bonsoir @ tous,
Salut mapomme, salut eriiiic,
je vois que vous avez choisi de forcer un calculate, ça fonctionne très bien, je vais essayer de bien comprendre l'astuce, et je vais voir cela me conviendra, puisque sur le fichier original j'ai des autres formules, mais apparemment vos codes n'auront rien à voir avec les autres formules.
merci à tous les 2


@ + +
 

Discussions similaires