Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1899 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Reconnaissance automatique d'une ligne sélectionnée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Reconnaissance automatique d'une ligne sélectionnée

n°2129211
alainli
Posté le 01-03-2012 à 22:09:49  profilanswer
 

Bonsoir à tous.
 
Je travaille sur Vba pour Excel 2003 et j’ai besoin d’un coup de main. A l’intérieur de la procédure suivante, dans Workbook :
 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
 
End sub
 
… je souhaite, dans une base de données, empêcher la modification de n’importe quelle ligne que je sélectionne (par exemple :interdire une insertion de ligne, une suppression de ligne, etc…).
Mon souci est que je n’arrive pas à faire reconnaître la ligne que je sélectionne quand je clique sur la partie gauche de la feuille de calcul (partie grise comprenant les numéros de lignes).
 
Quelqu’un peut-il me donner le code qu’il écrirait pour que cette ligne variable soit reconnue dès que je la sélectionne.
 
Merci pour votre aide. A+
 
AlainLi

mood
Publicité
Posté le 01-03-2012 à 22:09:49  profilanswer
 

n°2130554
SuppotDeSa​Tante
Aka dje69r
Posté le 09-03-2012 à 10:48:32  profilanswer
 

Hello
 
Bah il faut utiliser le target de "ByVal Target as Range"
 
Par exemple pour envoyer un message de la ligne sélectionnée ca serait :

Code :
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.      MsgBox Target.Row
  3. End Sub

Message cité 1 fois
Message édité par SuppotDeSaTante le 09-03-2012 à 10:48:42

---------------
Soyez malin, louez entre voisins !
n°2131040
alainli
Posté le 12-03-2012 à 22:21:14  profilanswer
 

SuppotDeSaTante a écrit :

Hello
 
Bah il faut utiliser le target de "ByVal Target as Range"
 
Par exemple pour envoyer un message de la ligne sélectionnée ca serait :

Code :
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.      MsgBox Target.Row
  3. End Sub



 
 
Bonsoir et merci pour ton information qui m'a permis de coder pour contrôler une zone et autoriser sa modification par la saisis d'un mot de passe.
 
Si éventuellement tu as la combine pour reconnaître une désélection dans une ListBox, je suis preneur. J'ai posé en effet une question, il y a plusieurs semaines et, malgré pas mal de lectures, aucun ne m'a pour l'instant donné la solution. (cf. question du 7/02/2012 - Reconnaissance désélection dans ListBox).  
 
Bonne soirée ! Cordialement.

n°2131132
SuppotDeSa​Tante
Aka dje69r
Posté le 13-03-2012 à 13:58:22  profilanswer
 

Hello
 
Pour ta listbox je ne comprends pas ton souci...
En fait pour savoir si c'est désélectionné, il faut reparcourir le fichier et le comparer avant la désélection.
Mais c'est peut etre pas ca que tu veux...
 
Surement pour ca que personne à répondu :lol: C'est pas très très clair


---------------
Soyez malin, louez entre voisins !
n°2131213
alainli
Posté le 13-03-2012 à 21:14:14  profilanswer
 

SuppotDeSaTante a écrit :

Hello
 
Pour ta listbox je ne comprends pas ton souci...
En fait pour savoir si c'est désélectionné, il faut reparcourir le fichier et le comparer avant la désélection.
Mais c'est peut etre pas ca que tu veux...
 
Surement pour ca que personne à répondu :lol: C'est pas très très clair


 
 
Bsr.
Ok. Je vais donc être plus simple !  
Dans un UserForm, j'ai une ListBox qui comprend plusieurs colonnes, dont le contenu change régulièrement. J'ai programmé l'option de multi sélection qui me permet de sélectionner plusieurs lignes en même temps.
Quand j'ai besoin de calculer la somme des lignes que je sélectionne, à chaque clic sur n'importe quelle ligne de la ListBox, son montant est automatiquement chargé dans une autre ListBox qui fait office de calculette. Or, quand je déselectionne une ligne dans ma ListBox à plusieurs colonnes, il faudrait que le montant soit soustrait alors qu'il s'ajoute une nouvelle fois. Le montant s'en trouve donc faussé.
Par conséquent, il faut que je parvienne à faire reconnaître la déselection de n'importe quelle ligne qui était déjà en surbrillance mais, malgré ma réflexion, je ne trouve pas. Je précise que le code que j'ai saisi fonctionne parfaitement et reconnaît toute les lignes que je sélectionne dans la ListBox.
 
Est-ce plus clair ?
Merci si quelqu'un peut me répondre.
 
A.L

n°2131218
SuppotDeSa​Tante
Aka dje69r
Posté le 13-03-2012 à 21:24:58  profilanswer
 

A partir du moment où tu sais ceux qui sont selectionnés, tu sais ceux qui ne le sont pas.
Tu listes tous les items de ta listbox, si c'est selectionné tu ajoutes, sinon tu soustrais.
Tu sais afficher si c'est selectionné (le code de ton post precedent), tu sais donc si ca ne l'est pas.
 
If .selected(i)=false


---------------
Soyez malin, louez entre voisins !
n°2131408
alainli
Posté le 14-03-2012 à 21:17:00  profilanswer
 

J'ai déjà essayé avec ce que tu proposes mais cela ne reconnait pas la déselection d'une ligne déjà sélectionnée parmi d'autres lignes. Donc :
- soit je ne place pas le code au bon endroit dans la procédure ;
- soit je dois activer une autre procédure spécifique ???
 
A.L

n°2131773
SuppotDeSa​Tante
Aka dje69r
Posté le 16-03-2012 à 15:26:10  profilanswer
 

Bah écoute je n'ai aucun souci...
Il faut essayer avant de dire que ca ne marche pas... ;)
 
[:dje69r:3]  
 
Donc, si j'ai une liste que j'appelle : Liste
(toujours cette imagination débordante !)
 
Dans cette liste j'ai ces valeurs en colonne 0 (la 1ère)
1000
2000
3000
4000
 
Avec ce code :

Code :
  1. Private Sub Liste_AfterUpdate()
  2. A = ""
  3. With Liste
  4.         For I = 0 To .ListCount - 1
  5.             If .Selected(I) Then
  6.                 A = A & "+" & .Column(0, I)
  7.             Else
  8.                 A = A & "-" & .Column(0, I)
  9.             End If
  10.         Next I
  11.     End With
  12. MsgBox Eval(A)
  13. End Sub


 
 
Si je sélectionne 1000 et 4000, il renvoie bien 0 car 2000 et 3000 sont renvoyés comme négatifs et 1000 + 4000 - 2000 - 3000 = 0
Idem :
Si je sélectionne 1000 seulement, ca me renvoie -8000 (1000 - 2000 - 3000 - 4000 = -8000)
Si je sélectionne 1000, 3000 et 4000 il me renvoie 6000 (1000 - 2000 + 3000 + 4000 = 6000)
Etc.
 
 
N'oublie pas ma fête :lol: Pas le bon post


Message édité par SuppotDeSaTante le 16-03-2012 à 15:27:54

---------------
Soyez malin, louez entre voisins !
n°2131854
alainli
Posté le 16-03-2012 à 23:18:23  profilanswer
 

Merci Dje69r
C'est sympa d'avoir réfléchi sur le sujet. Dès que je le peux - étant absent ce WE - je tente l'adaptation et je te dirai.
Merci encore.
 
A+.
 
A.L


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Reconnaissance automatique d'une ligne sélectionnée

 

Sujets relatifs
Commande SQL qui ne modifie qu'une seule ligne...Mise a jour automatique fichier excel
Execution automatique VBEMise en place d'un système de paiement en ligne
Réactualisation automatique page htmlRecuperer variable facultative ligne de commande
RECONNAISSANCE DESELECTION DANS LISTBOX[php]Saut de ligne dans textarea
[bash] ajouter le résultat d'une commande à une ligne dans un fichier 
Plus de sujets relatifs à : Reconnaissance automatique d'une ligne sélectionnée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR