Worksheet_Change et cellules en liste

CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 - 12 févr. 2012 à 17:37
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 - 18 févr. 2012 à 23:58
Bonjour,

Dans mon appli, un nouveau problème est soudainement apparu avec WorkSheet_Change, a priori sans raison apparente, dans le code ci-dessous qui jusque là tournait normalement.

Dans la feuille "Général":
Private Sub Worksheet_Change(ByVal Target As Range)
'Agent Reset
If Sheets("Data").Range("AS12").Value = 1 then Exit sub    
If Not Intersect(Target, Range("E48")) Is Nothing Then
'ça bloque dès la ligne ci-dessous, qui n'est plus exécutée (et donc la valeur 1 n'est pas changée dans AS12 de la feuille Data)!!
        Sheets("Data").Range("AS12").Value = 1   'Option: blocage
        '% de Hauteur Totale par défaut
        If Sheets("Général").Range("K48").Value "+" Then Sheets("Général").Range("R38").Value 10    'Ascendant  (10%)
        If Sheets("Général").Range("K48").Value "Q" Then Sheets("Général").Range("R38").Value 100   'Aucun      (100%)
        If Sheets("Général").Range("K48").Value "," Then Sheets("Général").Range("R38").Value 90    'Descendant (90%)
        'Mélange/Interface
        Sheets("Général").Range("K50").Value = "OUI"
        Sheets("Data").Range("AS12").Value = 0   'Option: déblocage
    End If

Sachant que:
(feuille Data)
=> AS12 permet de bloquer la Private Sub (en principe c'est inutile si la valeur est "changée" par un recalcul, ce qui -je crois- ne déclenche pas l'évènement),
(feuille Général)
> E48 reprend une liste dans la feuille Général (validation / liste Plage),
=> K48 contient une formule donnant les résulats: "+", ",", et "Q",
> R38 et K50 sont des listes (validation / liste Valeurs).

Bien entendu, tout est déprotégé, et les messages d'alerte des listes désactivés.
Bizarrement, la macro Private Sub W_Change dans Général quitte dès le premier .Value (valeur de AS12 inchangée).
Maintenant, si au lieu de faire un choix dans la liste dans E48, je TAPE une des valeurs de la liste (+ "entrée"), là, ça marche!

Par ailleurs, si je reprends très exactement ce script (uniquement) dans un nouveau classeur : Tout est OK, après un choix dans la liste en E48. Mais ça ne fonctionne plus si j'ouvre mon appli en même temps...

Qu'est-ce que je dois comprendre :
=> Que Worksheet_Change a des problèmes aléatoires avec les cellules avec liste ?
=> Que mon appli est désormais corrompue ?

Mais comment trouver où et y palier ?

Je rame complet...
L'appli pèse 3Mo et comporte un grand nombre de macro, formules, formats conditionnels... j'aimerais comprendre ce qui se passe avant de tenter de tout recommencer!

Merci pour votre aide.

Cordialement
Rataxes64

29 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 févr. 2012 à 18:10
Bonjour,
J'ai essayé de t'exposer pourquoi, dans ton autre discussion

Fais donc cette petite expérience, dans un classeur neuf ===>> code sur Feuille "Feuil1"
Private Sub Worksheet_Change(ByVal Target As Range)
 Static nbentre As Integer, nbmess1 As Integer, nbmess2 As Integer
  nbentre = nbentre + 1
  MsgBox "nbentre " & nbentre & vbCrLf & "nbmess1 " & nbmess1 & vbCrLf & "nbmess2= " & nbmess2
  If Sheets("Data").Range("A1").Value = 1 Then Exit Sub
  MsgBox "je suis lancée " & nb
  nbmess1 = nbmess1 + 1
  Sheets("Data").Range("A1").Value = 1
  MsgBox "coucou"
  nbmess2 = nbmess2 + 1
  Sheets("Data").Range("A1").Value = 0
End Sub

Tu ne sortiras pas : Si 0 au départ ===>> passeras à 1 et terminé
Dès lors qu'ensuite 1 au départ ===>> tu tourneras sans fin




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 févr. 2012 à 18:11
Pardon (pas complet) ===>>
Dès lors qu'ensuite 1 au départ ===>> tu tourneras sans fin si tu tentes de changer le 1 en 0


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
12 févr. 2012 à 19:34
Ben oui, puisque on reste dans la même feuille.

Mais , moi, j'utilise 2 feuilles : Data et Général.
dans ton exemple :
'DANS SHHEET (1)
Private Sub Worksheet_Change(ByVal Target As Range)
 Static nbentre As Integer, nbmess1 As Integer, nbmess2 As Integer
  nbentre = nbentre + 1
  MsgBox "nbentre " & nbentre & vbCrLf & "nbmess1 " & nbmess1 & vbCrLf & "nbmess2= " & nbmess2
'DANS SHEET (2)
  If Sheets(2).Range("A1").Value = 1 Then Exit Sub
  MsgBox "je suis lancée " & nb
  nbmess1 = nbmess1 + 1
  Sheets(2).Range("A1").Value = 1
  MsgBox "coucou"
 'Ici je peux changer une valeur dans Sheet (1) sans déclencher, par exemple:
  If Sheets(1).Range("A1").Value 1 then Sheets(1).Range("B1").Value 1 else Sheets(1).Range("B1").Value = 0
  nbmess2 = nbmess2 + 1
  Sheets(2).Range("A1").Value = 0
End Sub

Et là, ça marche, on a le message Coucou quand on change la valeur de A1 dans sheet (1), que A1 dans Sheet (1) soit une cellule avec une liste ou que l'on TAPE une nouvelle valeur dans A1 + entrée.

Mais si j'ouvre mon application, le changement dans une A1 avec liste n'ouvre plus le message Coucou : Pour ce faire je dois TAPER une nouvelle valeur (+ Entrée)...

Une idée?

Cordialement
Rataxes64
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 févr. 2012 à 20:16
Ecoute :
Retourne dans ton autre discussion et mets à disposition ton classeur.
Je ne veux pas m'épuiser autrement qu'ainsi.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
17 févr. 2012 à 23:45
Bonjour,

Je reviens avec une info capitale : Si je passe en mode de calcul manuel (Apllication.calculation=xlManual), je m'en sort par Calculate.

Ainsi en utilisant Worksheet_SelectionChange "en plus", je peux basculer sur xlManual pour une sélection d'une cellule validée en liste, et lancer une sub qui déroule correctement par Worksheet_Change (de la même cellule).

Reste que si je ne sélectionne PAS une autre cellule, et que je relance la liste dans la cellule déjà sélectionnée et que je fais un autre choix, évidemment, Worksheet_SelectionChange n'étant pas redéclenché, je me retrouve à la case départ!

Mais Comment faire ?

Cordialement
Rataxes64
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 févr. 2012 à 10:22
Bon.
On va repartir de ton 1er code, de sorte à y voir bien clair, à savoir :
Private Sub Worksheet_Change(ByVal Target As Range)
'Agent Reset
If Sheets("Data").Range("AS12").Value = 1 then Exit sub    
If Not Intersect(Target, Range("E48")) Is Nothing Then
'ça bloque dès la ligne ci-dessous, qui n'est plus exécutée (et donc la valeur 1 n'est pas changée dans AS12 de la feuille Data)!!
        Sheets("Data").Range("AS12").Value = 1   'Option: blocage
        '% de Hauteur Totale par défaut
        If Sheets("Général").Range("K48").Value "+" Then Sheets("Général").Range("R38").Value 10    'Ascendant  (10%)
        If Sheets("Général").Range("K48").Value "Q" Then Sheets("Général").Range("R38").Value 100   'Aucun      (100%)
        If Sheets("Général").Range("K48").Value "," Then Sheets("Général").Range("R38").Value 90    'Descendant (90%)
        'Mélange/Interface
        Sheets("Général").Range("K50").Value = "OUI"
        Sheets("Data").Range("AS12").Value = 0   'Option: déblocage
    End If

Ta 2ème condition :
If Not Intersect(Target, Range("E48")) Is Nothing Then

veut clairement dire que tu ne traites que si une modif est apportée à la cellule E48 de la feuille en cours
Question 1 : y a-til, quelque part ailleurs dans ton code une formule ou un bout de code qui modifierait à nouveau E48 (par réactions en chaîne) ?
Car ni non : on ne voit pas vraiment le besoin de ton drapeau sur la cellule AS12 de l'autre feuille et de son utilisation dans l'expression conditionnelle :
If Sheets("Data").Range("AS12").Value = 1 then Exit sub    

Qustion 2 : es-tu certain de ce que le blocage n'est pas dû à des références circulaires déclenchées par des formules utilisant la cellule R38 ou la cellule K50 ?
Recense les formules qui, éventuellement présentes, pointeraient éventuellement vers l'une ou/et l'autre de ces deux cellules. S'il y en a : montre-les nous


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 févr. 2012 à 10:50
Mais on va essayer d'y voir encore plus clair :
1) ajoute une textbox nommée textbox1 sur ta feuille "Général". Donne-lui la proriété multiline = True
2) renomme ton actuel évènement :
Private Sub Worksheet_Change(ByVal Target As Range)
en
Private Sub onvavoirWorksheet_Change(ByVal Target As Range) 'pour le rendre inopérant
3)
ajoute ceci (pour le remplacer)
Private Sub Worksheet_Change(ByVal Target As Range)
   textbox1.text = textbox1.text & vbcrlf & target.address
  If Sheets("Général").Range("K48").Value "+" Then sheets("Général").Range("R38").Value 10 
  If Sheets("Général").Range("K48").Value "Q" Then Sheets("Général").Range("R38").Value 100
  If Sheets("Général").Range("K48").Value "," Then Sheets("Général").Range("R38").Value 90  
  Sheets("Général").Range("K50").Value = "OUI"
end sub
*
4) enlève tout ce qui pourrait inhiber éventuellement les calculs (tes éventuels Apllication.calculation= xlManual
5) lance et ne modifie aucune cellule autre que la cellule E48
6) sélectionne maintenant n'importe quelle autre cellule, sans la modifier.
7) rapporte nous:
- a) tout le contenu de textbox1 (par copier-coller)
- b) le comportement observé (si boucle infinie ou pas)

Ce teste est probablement de nature à mieux nous renseigner sur ce qui se passe en coulisses.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
18 févr. 2012 à 14:53
Voilà, J'ai fait ce que demandé dans l'appli en feuille "Général"

= > inhibé les xlManual
=> inhibé le Worhsheet_SELECTIONchange
=> remplacé le Worksheet_CHANGE par celui indiqué.

A l'ouverture, une cellule <> de E48 est toujours activée par défaut et E48 = Choix1 par défaut, avec K50="OUI" par défaut.
=> je clique sur E48 :
RIEN dans la textbox1

=> je clique sur la flèche de sélection de la cellule E48 et fait un NOUVEAU choix = Choix2:
valeur E48 SEULE dans la textbox1

Puis, à chaque fois que je change mon choix
E48 s'ajoute UNE SEULE fois dans la textbox1

Le résultat de la formule présente en K48 (Winding3) est bien affiché (cette valeur CHANGE pour choix1 => choix2)
Voici la formule en K48
= SI(OU(K50="";E48="");"";   SI(   Data!GZ26;  SI(K50="NON";"+";"Q");  SI(NON(Data!GZ26);SI(K50="OUI";",";"Q");"7"  )))


La valeur de K50 reste INCHANGEE ("OUI").

En revanche le résultat de la macro W_Change qui doit être affiché dans R38, lui n'est PAS donné correctement...
En principe:
Pour E48=Choix1 + résultat formuleK48="Q" + K50="OUI" => R38=100
Puis, après changement choix1 => choix2
Pour E48=Choix2 + résultat formuleK48="," + K50="OUI" => R38=90

Eh bien non... R38 RESTE à 100...

Si je mets des points d'arrêt sur chaque ligne de W_Change (sauf Textbox1) et que je suis dans le cas où je fais choix1 => choix2, le If Sheets("Général").Range("K48").Value = "," est bien True.
La levée de l'arrêt déclenche [arrêt] => [exécution en cours] (défile très vite dans la barre d'entête de VB).

MAIS : L'arrêt en dernière ligne est "sauté" et la valeur de R8 n'a pas changé...?

J'ai "juste" un E48 de plus dans la textbox, le nouveau choix affioché dans E48 et la bonne valeur dans K48...

"Pour voir", je suis parti d'un état par défaut avec K50 = "NON", et qui doit donc passer à "OUI" au changement dans E48 ; mais vu que la dernière ligne "saute", évidemment ça n'est pas pris en compte.

Je ne sais pas si ça va aider beaucoup...

Je vais regarder de plus près ce qui se passe avec la cellule Data!GZ26 dans la formule en E48 pour vérifier une éventuelle source de "boucle".

Cordialement
Rataxes64
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
18 févr. 2012 à 14:58
Même chose en "figeant" Data!GZ26 à True ou à False.
(j'y croyais pas trop, mais il valait mieux vérifier)

Cordialement
Rataxes64
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
18 févr. 2012 à 15:34
Voilà ce que j'ai trouvé comme "solution":

Dans Worksheet_Change:
'Agent Reset
    If Not Intersect(Target, Range("$E$48")) Is Nothing Then
        Calculate
        ReSet1
        Sheets("Général").Range("K50").Activate
    End If
    
'Interface par défaut
    If Not Intersect(Target, Range("$K$50")) Is Nothing Then
        Calculate
        ReSet2
        Sheets("Général").Range("R38").Activate
    End If


Dans Worksheet_SelectionChange
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Application.Calculation =  xlAutomatic
    If Not Intersect(Target, Range("$E$48")) Is Nothing _
    Then
        Application.Calculation = xlManual
        Calculate
    End If
    If Not Intersect(Target, Range("$K$50")) Is Nothing _
    Then
        Application.Calculation =  xlManual
        Calculate
    End If
End Sub


Dans un module:
Sub ReSet1()
'Changer Agent
    
    Application.ScreenUpdating   = False
    'Blocage de Général-Change
    Sheets("Data").Range("AS12").Value = 1
    'Interface/Brassage par défaut
    Sheets("Général").Range("K50") = "OUI": Calculate
    'Valeur de % par défaut
    If Sheets("Général").Range("K48").Value "+" Then Sheets("Général").Range("R38").Value 10: Calculate   'Ascendant  (10%)
    If Sheets("Général").Range("K48").Value "Q" Then Sheets("Général").Range("R38").Value 100: Calculate  'Aucun      (100%)
    If Sheets("Général").Range("K48").Value "," Then Sheets("Général").Range("R38").Value 90: Calculate   'Descendant (90%)
    'Délocage de Général-Change
    Sheets("Data").Range("AS12").Value = 0
    Application.Calculation = xlAutomatic
    
End Sub

Sub ReSet2()
'Changer Interface/Brassage

    Application.ScreenUpdating = False
    'Blocage de Général-Change
    Sheets("Data").Range("AS12").Value = 1
    'Valeur de % par défaut
    If Sheets("Général").Range("K48").Value "+" Then Sheets("Général").Range("R38").Value 10: Calculate   'Ascendant  (10%)
    If Sheets("Général").Range("K48").Value "Q" Then Sheets("Général").Range("R38").Value 100: Calculate  'Aucun      (100%)
    If Sheets("Général").Range("K48").Value "," Then Sheets("Général").Range("R38").Value 90: Calculate   'Descendant (90%)
    'Délocage de Général-Change
    Sheets("Data").Range("AS12").Value = 0
    Application.Calculation = xlAutomatic
    
End Sub


Là, ça fonctionne "comme ça doit".

Certes c'est certainement "affreux" comme "méthode", mais ça va peut-être vous éclairer sur ce qui se passe pour pouvoir faire ça plus "proprement", si vous voulez bien.

Cordialement
Rataxes64
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 févr. 2012 à 15:49
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
18 févr. 2012 à 15:57
Donc pas de commentaire...?

Rataxes64
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 févr. 2012 à 16:01
tout ce que tu me dis là me donne à pense que tu as bien des références circulaires entre tes cellules, dues à tes formules, notamment ce passage :
La levée de l'arrêt déclenche [arrêt] => [exécution en cours] (défile très vite dans la barre d'entête de VB).

MAIS : L'arrêt en dernière ligne est "sauté" et la valeur de R8 n'a pas changé...?

Et ce ne sera alors pas l'inhibition de W_change qui y changera quelque-chose, car tout semble se passer en amont (on voit bien que rien d'autre que "E48" ne s'inscrit en textbox et que, donc, il est inutile r'inhiber ce qui ne se redéclenche point seul)
Tu vas alors faire ce test :

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("E48")) Is Nothing Then
    Application.MaxIterations = 1 ' >>> essaye aussi à 2 ensuite
    If Sheets("Général").Range("K48").Value "+" Then Sheets("Général").Range("R38").Value 10
    If Sheets("Général").Range("K48").Value "Q" Then Sheets("Général").Range("R38").Value 100  
    If Sheets("Général").Range("K48").Value "," Then Sheets("Général").Range("R38").Value 90  
    Sheets("Général").Range("K50").Value = "OUI"
    Sheets("Data").Range("AS12").Value = 0 
  end if 

end sub


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
18 févr. 2012 à 17:18
C'est pareil.

J'ai aussi mis "manuellement" le maxi itération à 1, puis décoché Itération : aucun blocage.
Je nai pas non plus d'alerte de formule circulaire.

Il y a quand même quelque chose de curieux dans cette histoire :
Si je CHANGE LE CHOIX dans le liste, ça marche pas: R38 reste désespérement figé

MAIS:

Si j'ENTRE LA VALEUR avec mes petites mains, et donc évidemment, que j'appuie sur Entrée ou que je sélectionne une autre cellule, là, ça marche normalement: R38 bascule à la bonne valeur

J'ai lu sur le Net , que d'autres aussi avaient eu ce genre de problème avec des listes en cellules, mais sont restés sans solution apportée.

Cordialement
Rataxes64
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 févr. 2012 à 17:24
J'en perds alors mon latin.
Comment est alimentée ta liste ?
Si par code : montre-le (on ne sait jamais)
Montre-le aussi si en dur, en mode création


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 févr. 2012 à 17:27
E48 reprend une liste dans la feuille Général (validation / liste = Plage ),

C'est cette "alimentation", qui m'intéresse, ainsi que, donc, cette plage.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
18 févr. 2012 à 17:41
Liste de valeurs
Cellule sélectionnée K50 ; Données ; Validation ; Liste OUI,NON
Cellule sélectionnée R38 ; Données ; Validation ; Liste 100 75, 50, 10

Plage
Cellule sélectionnée E4; Données ; Validation ; Liste =$AM$47:$BH$47 (de la feuille Général)
Aucune formule dans les cellules de cette plage

Cordialement
Rataxes64
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 févr. 2012 à 17:59
C'est alors de plus en plus mystérieux. Comme si ce que tu saisis n'était pas reconnu comme valable !
Ou encore que n'ayant rien modifié dans E48 (même valeur que celle antérieure), l'évènement Change ne se déclenche pas du tout (normal)
Essaye voir ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
msgbox "déclenché"
If Not Intersect(Target, Range("E48")) Is Nothing Then
msgbox "-" & Range("E48").text & "-"
end if
end sub

et modifie E48
pour voir si, au moins, ça s'affiche et ce qui s'affiche exactement ("tant déclenché" d'abord, que le reste ensuite)
Observe : j'ai choisi la propriété Text plutôt que Value, pour lever tout doute éventuel.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
18 févr. 2012 à 19:08
Excuse-moi, j'ai dû m'absenter une heure.


choix1 => choix2 ==> Déclenché => OK
Nouvelle valeur choix2 => OK

Donc, ça déclenche bien au changement de valeur, et la nouvelle valeur est bien vue.

Si maintenant, je reclique sur "la flèche" pour rappeler la liste de la cellule, et que je clique sur la MÊME valeur que celle déjà dans la cellule (choix2), j'ai encore le message "Déclenché" et la valeur initiale reconduite (choix2).

Donc bien que la valeur n'aie pas changée, le déclenchement s'est pourtant produit, et la valeur sélectionnée dans la liste (identique à l'initiale existante dans la cellule) est reprise.



Cordialement
Rataxes64
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 févr. 2012 à 19:22
Bizarre.
Autres test, maintenant :
toujours avec le même code test que précédemment (le tout dernier) pour le W_change :
un bouton de commande ===>>>
à son clic ===>>
Range("E48").value = ..... une valeur de ta liste
que se passe-t-il alors ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous