problème avec worsheet_change

natbru

XLDnaute Occasionnel
Bonjour et joyeux noël a tous,

quand même le jour du réveillon sur excel, ca craint, mais bon je vais tout de meme vous poser ma question !!

Je cherche à ouvrir un userform lorsque ma valeur de la cellule S5 est modifié en 'GAGNE'

J'ai mis le code suivant sur la feuille 'AFFAIRES' mais ca ne fonctionne pas ??

Code:
Sub worksheet_Change(ByVal Target As Range)

Range('s5').Value = Target.Value

If Range('S5').Value = 'GAGNE' Then Produits.Show
    
End Sub

De plus, je voudrais que ce soit dynamique quand je crée une nouvelle affaire.

Je ne suis pas sure d'etre claire mais mon fichier ci-joint devrait être plus expressif.

Merci.
 

excalibur

XLDnaute Impliqué
BONJOUR natbru le forum j ai essaye ca marche attention au majuscule GAGNE ou gagne tu peus l ecrire comme cela Sub worksheet_Change(ByVal Target As Range)
If Range('S5').Value = 'GAGNE' Or Range('S5').Value = 'gagne' Then Produits.Show
End Sub ' joyeux nôel a tous le monde
 

Dan

XLDnaute Barbatruc
Bonjour,

Cela me semble être le même pb qu'ici non ? ---> Lien supprimé.
Je pense que Hervé t'a fournit
une explication. Pourquoi ouvres-tu un deuxième fil sur ce sujet ?

Ta sub , si tu la places dans la feuilles 'affaires' il faut la faire précéder de 'PRIVATE' sinon cela ne peut fonctionner.

;)

Message édité par: Dan, à: 24/12/2005 11:07
 

natbru

XLDnaute Occasionnel
Bonjour dan, excalibur,

effectivement ce fil vient compléter le précédent car avec le code d'hervé, des que je modifiais un cellule dans la feuille, il cherchait à ouvrir le userform alors que moi je veux que ca s'ouvre uniquement quand je modifie une cellule (par ligne) et quand j'y met 'GAGNE'.

J'ai posté un autre message sur le fil précédent mais je me suis dit que vous ne regardiez que les derniers messages et que par conséquent je n'aurai pas de réponse ...

Désolé je n'utilise pas le forum depuis tres longtemps...
 

Dan

XLDnaute Barbatruc
re,

Et bien non on ne regarde pas que les premiers fils. Le forum te permet de connaitre les fils postés par quelqu'un par la fonction 'rechercher', de voir les derniers messages (cette option se trouve à gauche dans cette fenetre en dessous de Archives) et plusieures personnes dispose d'une base de données personnelle.
Pour ton pb il te suffisait de reposter sur le même pour qu'il se retrouve en haut de la liste 'derniers messages'.

Concernant ton pb de USF, je voudrais comprendre si l'USF s'ouvre seulement si la cellule S5 contient GAGNE ou sur d'autres cellules contenant ce mot. En bref, est-ce que la cellule S5 est la seule à pouvoir ouvrir l'USF

Logiquement tu dois avoir une croix en haut à droite de ton USF pour la fermer. Donc je ne comprends pas quand tu dis 'il est impossible de le fermer sans passer par VBA'

Merci de tes explications

;)
 

natbru

XLDnaute Occasionnel
Ok merci pour le petit rappel, je le ferai plus c promis ...

Je viens en fait de m'apercevoir que depuis tout a l'heure je vous dis que je joins le fichier et qu'il ne passe pas. En effet, il fait 114 ko (zipper).

Est-il possible de te l'envoyer par mail car tu comprendras 1000 fois mieux ?

Si non, je tente l'explication :

Le tableau comportera plusieurs lignes (une par affaire), il faut qu'à chaque fois qu'il y a 'GAGNE' dans la colonne 'S', le USERFORM s'ouvre.

Il s'agit de case à cocher et je voudrais que quand pour l'affaire 'TEST' ligne '5' (par exemple) je saisi 'GAGNE' dans la cellule 'S5', le caption des cases à cocher se mettent à la suite dans la cellule 'T5'

Voila j'espère que tu m'as comprise. Merci encore pour ton aide.
 

Dan

XLDnaute Barbatruc
Bonjour,

Si besoin je te donnerai ma BAL par la messagerie XLD.

J'ai bien compris que l'élément déclencheur de la macro est le mot GAGNE dans la colonne S. Toutefois, ce qu'il faut savoir :

- La macro est déclenchée quand tu saisis le mot GAGNE dans une cellule ou peut - elle être déclenchée quand tu cliques sur une cellule qui contient le mot GAGNE.

- Est-ce que le mot GAGNE est encodé via une liste déroulante, en écrivant ou par un double clique dans la cellule.

Je n'ai pas compris ce que tu veux dire avec les captions case à cocher qui se mettent dans la colonne T.

A te lire

;)
 

natbru

XLDnaute Occasionnel
Bonjour,

Voici quelques précisions :

- le mot 'GAGNE' est saisi via une liste déroulante (VALIDATION DE DONNEES)

- le US doit s'ouvrir quand 'GAGNE' est saisi dans la colonne 'S' mais effectivement ce serait bien qu'une fois qu'il a été saisi on puisse rouvrir le US en double-cliquant sur la cellule contenant le mot 'GAGNE'

- le US contient des cases à cocher représentant des produits vendus. Le but est que lorsque l'on a validé le US, le libellé des cases qui ont été cochés s'affiche dans la colonne 'T' correspondante, de cette manière, on peut voir les produits qui ont été vendus lorqu'une affaire a été gagné.

- évidemment il y a plusieurs affaires (une par ligne) et cette manip. devra être applicables à toutes les affaires.

J'espère avoir été plus compréhensible.

Merci.
 

Dan

XLDnaute Barbatruc
Bonsoir,

Comme convenu voici ce que tu pourrais faire :

Place ces deux macros en VBA dans la feuille qui correspond à celle où tu écris le mot 'GAGNE'.
Macro 1
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Macro par DAN pour natbru
'Fil : [B]Lien supprimé[/B]
Application.ScreenUpdating = False
On Error Resume Next
If Application.Intersect(Target, Range('S:S')) Is Nothing Then Exit Sub
If Target.Value = 'Gagne' Then Produits.Show
Application.ScreenUpdating = True
End Sub
Macro 2
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Macro par DAN pour natbru
'Fil : [B]Lien supprimé[/B]
Application.ScreenUpdating = False
On Error Resume Next
If Application.Intersect(Target, Range('S:S')) Is Nothing Then Exit Sub
Select Case ActiveCell.Value
Case 'Gagne'
Produits.Show
Case ''
End Select
Application.ScreenUpdating = True
End Sub

Veille bien à ce que le mot 'Gagne' soit écrit dans ta feuille comme dans cette macro.

L'USF apparait si tu écris en colonne S via le clavier ou via une liste déroulante, ou si tu cliques sur le mot 'Gagne'

Ces deux macros s'appliquent uniquement à la colonne S, donc là où se trouve le mot qui fait apparaitre l'USF Produits.

Si pb n'hésite pas.

;)

Message édité par: Dan, à: 26/12/2005 21:13
 

natbru

XLDnaute Occasionnel
Bonjour DAN,

Concernant ta manip, c'est exactement ce que je voulais, merci beaucoup.

Mais (évidement il y a encore des problèmes), j'avais fait un bouton, permettant d'insérer une ligne en recopiant celle du dessous et en supprimant les constantes, de manière à ne pas squizzer les formules.

Maintenant quand j'éxécute la macro, il ouvre le USF. En effet, quand je supprime les constantes, je mouvemente la cellule 'GAGNE' et donc il ouvre le US (enfin ça c'est mon interprétation).

Je suis toujours motivée pour t'envoyer mon fichier, si tu le veux bien.

Désolée de te réclamer encore ton aide.
 

Dan

XLDnaute Barbatruc
Bonsoir Natbru,

Merci de ton fichier.
Voici ce qu'il te faut pour ajouter une ligne dans la feuille BASE.

Dans le module 2, insère cette macro :
Code:
Sub INSERERLIGNES()
'Macro par DAN pour natbru
'Fil : [B]Lien supprimé[/B]

Application.ScreenUpdating = False
Sheets('AFFAIRES').Range('A65536').End(xlUp).Activate
Application.EnableEvents = False
ActiveCell.EntireRow.Offset(0, 0).Copy
Selection.Insert Shift:=xlDown
ActiveCell(1, 19) = ''
With Application
    .EnableEvents = True
    .CutCopyMode = False
    .ScreenUpdating = False
End With
End Sub

Ensuite lie là à ton bouton 'nouvelle affaire'.

A te lire

;)
 

Discussions similaires

Statistiques des forums

Discussions
312 413
Messages
2 088 200
Membres
103 766
dernier inscrit
mahieux