Affecter une macro a une plage de cellule

Résolu
NanomaxVBA - 20 déc. 2012 à 13:35
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 21 déc. 2012 à 18:51
Bonjour a tous

je suis en train de développer un tableau pour évaluer des analyses de risque.. bref... j'ai créer une userform dans laquelle l'utilisateur clic sur des option_button qui sont relier a la cellule active et lui affecte un nombre (10, 7, 5, 3 ou 1 suivant le risque). Tout marche très bien sauf que.. j'active cette macro via un bouton. J'aimerais que la macro se lance via un clic sur la cellule concerner (qui deviendrait la cellule active par la même occasion, ce qui est nickel pour ma macro..)
Je précise que cela ne concerne pas une seule cellule mais une plage de cellule (toute sur la même colonne).
Idéalement, j'aimerai créer un code du type :
If la cellule active est sur la colonne Z et que la ligne est superieur a 18 then
Userform.show

J'ai déja vu des code de ce type, mais chez moi ça ne marche pas.
j'ai tenter

if target.row > 18 and target.column = 26 then
mais aucun resultat.. ou alors je ne l'ai pas rentrer au bon endroit..

Si qqun pouvait m'aider..

Merci d'avance de l'attention que vous porterez a mon problème

9 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
21 déc. 2012 à 18:51
Bon.
Libère cette discussion (un clic sur tag "réponse acceptée).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 déc. 2012 à 13:53
Bonjour,
Oui ?
regarde ce qu'est l'évènement SelectionChange d'une feuille


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Re bonjour

J'ai bien vu l'evenement selection.change mais je ne sais pas comment intégrer la notion de colonne..
0
et ou dois je rentrer ce code.. n'importe ou ou il y a t'il un endroit spécial ?
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 déc. 2012 à 14:57
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Désolé de te faire pleurer.. mais cela ne fait pas avancer grand chose.. :/

J'ai tenter Worksheet_selectChange (byval Target as Range)
Dim A as range

if A = "P18 : P500" then ' c'est la ou a mon avis ça coince, comment lui faire comprendre que je ça concerne toute les cellule de la colonne P a partir de la ligne 18

call procedure

end if

je precise que la procedure marche deja très bien..

Si qqun a une astuce ou une vrai aide a me donner car en rentrant les smiley qui pleure dans VBA, ça marche pas non plus.. ^^
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
20 déc. 2012 à 15:29
Worksheet_SelectionChange (byval Target as Range)
C'est là que tu dois utiliser Target.Row ou Column...

Tu pourrais aussi voir du côté d'un menu sur click droit qui te permettrait de lancer cette macro

Il y a un exemple de code ici
Codyx

Il y a d'autres méthodes un peu moins complexes pour créer un simple menu... sans passer par des objets déclarés Public...


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 déc. 2012 à 17:59
Ecrire :
Dim A as range
if A = "P18 : P500"

révèle beaucoup ! Tu ne semble même pas savoir ce qu'est un obvjet (ici un Range) !
Il est urgent que tu commence à lire ton aide VBA et que tu y apprennes au moins les choses les plus basiques, sans lesquelles tu ne saurais développer.
Target est un objet Range (lis donc comment il est défini en paramètre de la sub ...)
Fais ce test :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Row > 3 And Target.Column = 2 Then MsgBox "coucou"
 If Not Application.Intersect(Target, Range("C18:C" & Rows.Count)) Is Nothing Then MsgBox "vu ?"
End Sub

tu auras le message "coucou" chaque fois que tu cliqueras dans la colonne B, au delà de la ligne 2 et tu auras le message "vu ?" chaque fois que tu cliqueras en colonne C au-delà de la ligne 17)
Te voilà donc avec deux méthodes différentes. Saisis cette occasion (lecture de ton aide VBA) pour apprendre également ce qu'est Application.Intersect et ce qu'est Nothing.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Merci beaucoup pour cette réponse. Je l'avoue, je n'ai pas pris le temps d'aller sur l'aide en ligne et mes cours de VBA ne sont pas allez aussi loin pour pouvoir aborder les codes que vous m'avait présenté. Encore merci pour votre aide.
0
Rejoignez-nous