|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 95 ![]() |
Bonjour tout le monde
J'ai un tableau avec 34 colonnes (nombre de ligne de 14 jusqu'à 600, les lignes 1 à 13 sont pour les titres) . Toutes les colones contiennent des valeurs numérique ou alphanumérique. Les colonnes 1 a 19 sont des colonnes sources dans lesquelles l'utilisateur entre des données. Les colonnes 20 à 34 sont des valeurs qui résultent de calculs par une Macro. Dans la feuille où se trouve le tableau, j'ai une Macro sous Worksheet Change. Cette macro appel une routine dans un module pour refaire le calcul des cellules 20 à 34 pour la ligne où se trouve l'ActiveCell, lorsque'une valeur change dans une des colonnes 1 à 19. Deux des colonnes 7 et 11 contiennent des barres déroulantes dans chacune des cellules. Lorsque nous changeons une valeur dans la barre déroulante, le curseur demeure dans la cellule où le changement a été fait. Dans les autres colonne, lorsqu'un changement est fait et que l'utilisateur presse sur Return la cellule active deviens Ligne + 1. Donc lorsque j'appel la routine pour faire les calculs, je dois envoyer Ligne - 1. Le problème est que si l'utilisateur presse sur la flèche de droite ou gauche au lieu de Return la valeur Ligne ne tient plus. Ma question sans faire un Userform comment puis-je figer la cellule sur un Return ou comment voyez-vous la solution. Merci |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() |
Salut
Tout simplement en utilisant le paramètre Target transmis a Worksheet Change, Target représente la ou les cellule(s) modifiée(s), donc au lieu d'utiliser Activecell, tu utilises simplement Target. A++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Score PowerBall Gyroscope Green : 11847 |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 95 ![]() |
EN paramètre j'ai (ByVal Target As Range)
Comment puis-je connaitre la ligne ou se trouve "Target" |
|
|
00
|
|
|
#4 | ||
![]() ![]() |
Bonjour
C'est Excel qui te donne la ligne, il suffit d'interroger cette variable Target. Ex : Code :
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon ![]() Si vous pensez commencer sans un livre, oublier : livres pour débuter Vous pouvez consulter mes articles sur Access et PowerPoint Le blog Office. Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas. |
||
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : novembre 2009 Messages : 95 ![]() |
Désolé de mon ignorance, mais je n'ai jamais travaillé les msgbox autrement que pour afficher un message Msgbox(" ").
Comment puis-je soutirer la valeur de la ligne du msgbox. |
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() |
P. JOCHMANS t'as juste donné un exemple pour que tu vois comment utiliser Target, mais msgbox effectivement ne sert qu'a afficher un message a l'ecran.
Dans ton code si tu utilise par exemple Il te suffit de mettre Activecell comme Target sont tous 2 des objets de type Range, ils représentent donc tous les 2 une cellule ou une plage de cellule (Voir l'aide sur Range). Dans la procedure Code :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Imagine que tu change le contenu de la cellule G5, se faisant cela déclenche l'évènement Change du WorkSheet et exécute le code qu'il contient, ici Target pointera la cellule G5. Target.row te retournera donc 5 et Target.column retournera 7 (colonne G, la 7eme colonne), Target.value représente le contenu de la cellule G5 etc... voir les propriété de l'objet Range dans l'aide VBA. a++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Score PowerBall Gyroscope Green : 11847 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com