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 21/08/2011, 15h50   #1
Membre habitué
 
Avatar de Igloobel
 
Homme
Inscription : septembre 2005
Messages : 153
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2005
Messages : 153
Points : 102
Points : 102
Par défaut selections de cellules

Bonjour à tous

Voilà je cherche à connaitre toutes les adresses de chaque cellule sélectionnées.

exemple je selectionne de B4 jusqu'à B7 (4 cellules donc) et je veux pouvoir récupérer 2-4; 2-5; 2-6; 2-7.

j'ai penser au target de Worksheet_SelectionChange :
Code :
1
2
3
4
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox Target.Row & " - " & Target.Column
 
End Sub
ceci me donne l'adresse de la cellule active donc 2-4 et c'est tout.

je me doute qu'il faut utiliser le for each mais je ne connais pas la collection qui convient.


J'ai cherché dans la FAQ, les tutoriels, et sources sans trop trouver.

Merci d'avance pour votre aide
__________________
C'est en forgeant que l'on devient forgeron, c'est en programmant que l'on devient ... chauve.
Igloobel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2011, 16h24   #2
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonjour,

Regarde si ceci te convient :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 
    Dim I As Long
    Dim J As Long
    Dim Adr As String
 
    For I = 1 To Target.Columns.Count
 
        For J = 1 To Target.Rows.Count
 
            Adr = Adr & Target.Column + I - 1 & "-" & Target.Row + J - 1 & Chr(13)
 
            'vire le Chr(13) de fin
            Adr = Left(Adr, Len(Adr) - 1)
 
        Next J
 
    Next I
 
    MsgBox Adr
 
End Sub
Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/08/2011, 16h32   #3
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
Il n'y as rien à faire target te renvoi l'ensemble des plages sélectionnées..

que veut-tu faire ensuite ..?

Code :
1
2
3
4
5
6
7
8
9
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim c As Range
  Dim st As String
 
  For Each c In Target
    st = st & c.Row & "," & c.Column & "/"
  Next
  MsgBox " Plage sélectionné : " & vbCrLf & Target.Address & vbCrLf & "Cellules : " & vbCrLf & st
End Sub
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/08/2011, 17h56   #4
Membre habitué
 
Avatar de Igloobel
 
Homme
Inscription : septembre 2005
Messages : 153
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2005
Messages : 153
Points : 102
Points : 102
Merci Theze pour ta methode mais celle de bbil est exactement ce que je cherchais.

Merci à tous les deux pour votre rapidité

Je cherchais cette collection target que je ne connaissais pas
__________________
C'est en forgeant que l'on devient forgeron, c'est en programmant que l'on devient ... chauve.
Igloobel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h44.


 
 
 
 
Partenaires

Hébergement Web