Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 08/02/2010, 17h51   #1 (permalink)
Invité régulier
 
Date d'inscription: novembre 2009
Messages: 18
Par défaut Worksheet / Change retenuir a position de l'Activecell sur un Return

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
Bugzy1963 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/02/2010, 19h06   #2 (permalink)
Expert Confirmé
 
Avatar de Qwazerty
 
Date d'inscription: avril 2002
Localisation: (03) - Allier - Chez les fous ^^
Âge: 29
Messages: 1 533
Envoyer un message via MSN à Qwazerty
Par défaut

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 méchant Qwaz sur Msn ... inutile de me rajouter sur msn pour que je fasse votre boulot (les concernés sont au courant, les autres relax )
Le monde dans lequel on vit
HammerFest
Score PowerBall Gyroscope Green : 11847
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/02/2010, 20h12   #3 (permalink)
Invité régulier
 
Date d'inscription: novembre 2009
Messages: 18
Par défaut

EN paramètre j'ai (ByVal Target As Range)

Comment puis-je connaitre la ligne ou se trouve "Target"
Bugzy1963 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/02/2010, 20h18   #4 (permalink)
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Date d'inscription: mai 2005
Localisation: Loir et Cher et Touraine
Âge: 41
Messages: 14 400
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Par défaut

Bonjour

C'est Excel qui te donne la ligne, il suffit d'interroger cette variable Target.

Ex :

Code :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox Target.Address
End Sub
 
Philippe
__________________
En cas de questions techniques par MP ou message visiteur
Vous pouvez consultez mes articles sur Access et PowerPoint
Si vous avez des réalisations à faire sur le pack Office
Découvrez les nouveautés de PowerPoint 2010

Utilisez les pièces jointes avec parcimonie.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/02/2010, 20h23   #5 (permalink)
Invité régulier
 
Date d'inscription: novembre 2009
Messages: 18
Par défaut

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.
Bugzy1963 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/02/2010, 20h57   #6 (permalink)
Expert Confirmé
 
Avatar de Qwazerty
 
Date d'inscription: avril 2002
Localisation: (03) - Allier - Chez les fous ^^
Âge: 29
Messages: 1 533
Envoyer un message via MSN à Qwazerty
Par défaut

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
Code :
LigneEnCours = ActiveCell.row
Il te suffit de mettre
Code :
LigneEnCours = Target.row
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)
Target représente la ou les cellules qui viennent d'être modifiées

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 méchant Qwaz sur Msn ... inutile de me rajouter sur msn pour que je fasse votre boulot (les concernés sont au courant, les autres relax )
Le monde dans lequel on vit
HammerFest
Score PowerBall Gyroscope Green : 11847
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 02h07.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.