TCD list box lance macro

fifi

XLDnaute Occasionnel
bonjour, quel beau temps n'est ce pas ?


je suis ici pour demander si il est possible de lancer une macro lorsque que l'on change la valeur d'une liste box d'un TCD.
et si oui comment?
merci

B)
 

Dan

XLDnaute Barbatruc
Bonjour,

C'est probablement possible en utilisant une macro événementielle qui s'enclenche dès que tu modifies quelque chose dans la feuille où se trouve le TCD. Place ton code en VBA dans la feuille contenant le TCD comme suit :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Ton code
End Sub.

Si pb donne plus de précision sur ce que doit faire ta macro ou place un fichier avec données bidons.

;)
 

fifi

XLDnaute Occasionnel
salut DAN,
j'ai trouvé sur le forum la formule magique pour la macro évenementielle mais cela ne semble pas fonctionner.


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range('D1:D5')) Is Nothing Then
Application.Run 'ma_macro'!raffraichir'
End If
End Sub

La plage de cellule D1:D5 correspond à la plage de cellules des liste box du TCD.

ma macro est assez long est fonctionnement parfaitement indépendement.
 

fifi

XLDnaute Occasionnel
rebonjour, désolé ca ne marche pas. j'ai essaye de mettre une plage de données du TCD comme plage et les cellules des listbox mais rien n'y fait.

Private Sub Worksheet_Change(ByVal Target As PivotTable)
If Not Intersect(Target, Range('E8:E15')) Is Nothing Then
Application.Run ''ma_macro'!raffraichir'
End If
End Sub

et

Private Sub Worksheet_Change(ByVal Target As PivotTable)
If Not Intersect(Target, Range('B1:B5')) Is Nothing Then
Application.Run ''ma_macro'!raffraichir'
End If
End Sub
 

Hervé

XLDnaute Barbatruc
Bonsoir

Je poursuis mon idée avec la pièce jointe, :)

Salut
[file name=Classeur3_20050601234114.zip size=6802]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur3_20050601234114.zip[/file]
 

Pièces jointes

  • Classeur3_20050601234114.zip
    6.6 KB · Affichages: 28

Dan

XLDnaute Barbatruc
Bonjour,

Ce que je comprends c’est que tu veux actualiser le TCD en fonction de la valeur d’un champ de page du TCD ou est-ce autre chose ?

Une solution serait d’actualiser le TCD en fonction de ta base de données ayant servi à constituer le TCD. De cette sorte, le TCD serait toujours à jour et il te suffirait de sélectionner la valeur de ton choix dans la liste déroulante du TCD sans enclencher une macro.

Un chose à savoir est où se trouve la liste en question, dans le champ de page, champ de colonne ou de ligne ?

;)
 

fifi

XLDnaute Occasionnel
Re ,
non ce n'est pas tout à fait cela...

le TCD me permet d'afficher des résultats issus d'une base de données, et j'ai une macro qui fait une mise en forme en fonction des critères demandés par le TCD.
Donc mon problème est de lancer la macro lorsque je change un champ du TCD.


mon TCD est collé en $C$7
les liste déroulante du TCD sont situées en D1:D5

merci
 

Dan

XLDnaute Barbatruc
Re,

Là cela diffère un peu de ce que tu as demandé au début.
Je vais voir ce que je peux te proposer en repartant par exemple du fichier de mon ami Hervé ou mieux tu pourrais peut-être placer un fichier avec données bidons ici.
C'est bizarre mais ton pb me fait pense à Lien supprimé

;)
 

fifi

XLDnaute Occasionnel
re,
Effectivement je me retrouve dans la meme configuration que le lien ci-dessus et c'est justement de l'étape de validation par un bouton que je veux me dégager; le but étant que la selection d'item dans le TCD déclanche la macro sans l'utilisation de bouton supplémentaire.
 

Dan

XLDnaute Barbatruc
Bonsoir,

Essaie comme ceci :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Valeur As Integer
Valeur = Range('Cellule de la liste de validation').Value
If Not Application.Intersect(Target, Range('cellule de la liste de validation')) Is Nothing Then
If Valeur > 0 Then Call 'Ta macro'
End If
End Sub

Bon travail

;)
 

fifi

XLDnaute Occasionnel
hello , tous , DAN

Dan ta solution fonctionne mais ne s'arrete plus ^^.
je ne sais pas ce qui se passe mais il ne doit pas rester grand chose à faire pour que la macro s'arrete.
j'ai défini 1 seule cellule du TCD comme plage de concernée.


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Valeur As Integer
Valeur = Range('D5').Value
If Not Application.Intersect(Target, Range('D5')) Is Nothing Then
If Valeur > 0 Then Call Raffraichir
End If
End Sub
 

Discussions similaires

Réponses
3
Affichages
378

Statistiques des forums

Discussions
312 489
Messages
2 088 848
Membres
103 972
dernier inscrit
steeter