XL 2021 Mise en mémoire de Valeur(s) d'une Liste

Leskwal

XLDnaute Occasionnel
Bonjour la Team.

J'ai un problème, c'est pour cela que je suis là ;)

J'ai un fichier avec un onglet BDD.
Dans cet onglet, en $P$29, j'ai créé une liste de choix qui en fonction du choix va inscrire des valeurs dans d'autres cellules.

Cependant, l'utilisateur peut-être amené à modifier son choix à partir de cette liste (en $P$29,) et si il sélectionne la même chose, finalement les données dans les autres cellules resteront inchangées.
En revanche, si la valeur sélectionnée dans la liste de choix diffère de celle d'origine, alors, les valeurs dans les cellules liées seront vidées après validation par un VBYES.

Voilà donc la situation.

J'ai créé 2 variables : COMPETENCE_1_ORIGINE et COMPETENCE_1_SELECTIONNEE

l'idée est de retenir en mémoire la valeur (COMPETENCE_1_ORIGINE) lorsqu'on clique sur le menu déroulant et lorsqu'on sélectionne une proposition dans la liste, COMPETENCE_1_SELECTIONNEE prend cette valeur et à ce moment là les valeurs de COMPETENCE_1_ORIGINE et COMPETENCE_1_SELECTIONNEE sont comparées et en fonction, une action est déclanchée si <> ou RIEN si =.

Mon problème : j'utilise, en VBA, le
.TARGET
mais cela ne fonctionne pas car, par le biais de MSBOX, les valeurs COMPETENCE_1_ORIGINE et COMPETENCE_1_SELECTIONNEE sont toujours les mêmes.
Il n'y a pas de différence entre le moment où je clique sur la liste et le moment où je sélectionne un choix dans la liste. ????

Donc comment mettre en mémoire la valeur au premier clique dans COMPETENCE_1_ORIGINE et la valeur sélectionnée dans COMPETENCE_1_SELECTIONNEE ?

Espérant avoir été clair.

Merci d'avance pour vos réponses.

Bien Cordialement

Pascal



Pascal
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Ne mettez pas de "_" dans vos noms de variables. Réservez ce caractère comme séparateur dans les noms des procédures de prises en charge d'évènements entre le nom de l'objet et celui de l'évènement.
Danl le mudule de l'objet Worksheet représentant la feuille concernée :
VB:
Option Explicit
Private COMPETENCE1ORIGINE As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Target.Address = "$P$29" Then COMPETENCE1ORIGINE = Target.Value
   End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim COMPETENCE1SELECTIONNEE As String
   If Target.Address = "$P$29" Then
      COMPETENCE1SELECTIONNEE = Target.Value
      If COMPETENCE1SELECTIONNEE <> COMPETENCE1ORIGINE Then
         If MsgBox("Traiter """ & COMPETENCE1SELECTIONNEE & """ au lieu de """ & COMPETENCE1ORIGINE & """ ?", _
            vbYesNo) = vbNo Then Exit Sub
         DéclencherAction
         End If
      End If
   End Sub
 

Discussions similaires

Statistiques des forums

Discussions
315 090
Messages
2 116 104
Membres
112 661
dernier inscrit
ceucri