OVH Cloud OVH Cloud

Recherche cellules extrêmes dans une sélection

16 réponses
Avatar
Bruno CM
Bonjour,

Je souhaiterai pouvoir obtenir en VBA l'adresse (numéros ligne et colonne)
de la première cellule (en haut à gauche) et de la dernière cellule (en bas à
droite) d'une sélection quelconque effectuée dans une feuille.
J'ai cherché sans succès dans divers forums, d'où ma question qui j'espère
n'a pas été traitée x fois (?).
D'avance, je remercie toute personne qui pourra me mettre sur la piste.
--
BCM

6 réponses

1 2
Avatar
LeSteph
re, pour juste les numéros:

Sub infoselectnum()
With Selection
MsgBox "lig " & .Cells(1).Row & " col " & .Cells(1).Column _
& " à lig " & .Cells(.Cells.Count).Row _
& " col " & .Cells(.Cells.Count).Column
End With
End Sub

"LeSteph" a écrit dans le message de news:

Bonsoir Bruno,
il y aura juste deux points entre les deux:

Sub infoselect()
MsgBox Selection.Address
End Sub

'lSteph
"Bruno CM" a écrit dans le message de
news:
Bonjour,

Je souhaiterai pouvoir obtenir en VBA l'adresse (numéros ligne et
colonne)
de la première cellule (en haut à gauche) et de la dernière cellule (en
bas à
droite) d'une sélection quelconque effectuée dans une feuille.
J'ai cherché sans succès dans divers forums, d'où ma question qui
j'espère
n'a pas été traitée x fois (?).
D'avance, je remercie toute personne qui pourra me mettre sur la piste.
--
BCM






Avatar
GD
Bonsour ® LeSteph ,
Décidément tout le monde s'y est mis ce soir .... ;-)))
l'aura le choix le Bruno ....

hélas ta dernière ci-dessous ne le fait pas en cas de sélections multiples !
:-(

@+
wrote:
re, pour juste les numéros:

Sub infoselectnum()
With Selection
MsgBox "lig " & .Cells(1).Row & " col " & .Cells(1).Column _
& " à lig " & .Cells(.Cells.Count).Row _
& " col " & .Cells(.Cells.Count).Column
End With
End Sub

"LeSteph" a écrit dans le message de news:

Bonsoir Bruno,
il y aura juste deux points entre les deux:

Sub infoselect()
MsgBox Selection.Address
End Sub

'lSteph
"Bruno CM" a écrit dans le
message de news:

Bonjour,

Je souhaiterai pouvoir obtenir en VBA l'adresse (numéros ligne et
colonne)
de la première cellule (en haut à gauche) et de la dernière cellule
(en bas à
droite) d'une sélection quelconque effectuée dans une feuille.
J'ai cherché sans succès dans divers forums, d'où ma question qui
j'espère
n'a pas été traitée x fois (?).
D'avance, je remercie toute personne qui pourra me mettre sur la
piste. --
BCM






Avatar
Joël GARBE
Bonjour,

Si jamais j'avais pensé que la sélection commençât en A1, je n'aurais pas
fait tout ce trravail, pour la première cellule, j'aurais mis :
1
1

!!!!!!!!!!!!!!!!!!!!!

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Bruno CM" a écrit dans le message de
news:
Bonsoir,

Merci pour votre réponse rapide. Toutefois ma sélection ne part pas de la
cellule A1, mais comme indiqué il s'agit d'une sélection d'une plage
quelconque dans la feuille ... ce qui complique les choses.
Désolé pour cetterelance.


Bonsoir

selection.range("a1").row
selection.range("a1").column
pour la premère cellule

selection.range("a1").row + selection.rows.count - 1
selection.range("a1").column + selection.columns.count - 1
pour la dernière cellule

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Bruno CM" a écrit dans le message de
news:
Bonjour,

Je souhaiterai pouvoir obtenir en VBA l'adresse (numéros ligne et
colonne)
de la première cellule (en haut à gauche) et de la dernière cellule (en
bas à
droite) d'une sélection quelconque effectuée dans une feuille.
J'ai cherché sans succès dans divers forums, d'où ma question qui
j'espère
n'a pas été traitée x fois (?).
D'avance, je remercie toute personne qui pourra me mettre sur la piste.
--
BCM









Avatar
LeSteph
Bonjour,
Merci GD, remarqué entre temps, ceci a l'air mieux:

Sub infoselectN()
With Selection
MsgBox "lig " & .Cells(1).Row & " col " & .Cells(1).Column _
& " à lig " & Range(Mid(.Address, Len(.Address) - 3, 4)).Row _
& " col " & Range(Mid(.Address, Len(.Address) - 3, 4)).Column
End With
End Sub

lSteph
:) qui rejoint la fosse

"GD" a écrit dans le message de news:

Bonsour ® LeSteph ,
Décidément tout le monde s'y est mis ce soir .... ;-)))
l'aura le choix le Bruno ....

hélas ta dernière ci-dessous ne le fait pas en cas de sélections multiples
!
:-(

@+
wrote:
re, pour juste les numéros:

Sub infoselectnum()
With Selection
MsgBox "lig " & .Cells(1).Row & " col " & .Cells(1).Column _
& " à lig " & .Cells(.Cells.Count).Row _
& " col " & .Cells(.Cells.Count).Column
End With
End Sub

"LeSteph" a écrit dans le message de news:

Bonsoir Bruno,
il y aura juste deux points entre les deux:

Sub infoselect()
MsgBox Selection.Address
End Sub

'lSteph
"Bruno CM" a écrit dans le
message de news:

Bonjour,

Je souhaiterai pouvoir obtenir en VBA l'adresse (numéros ligne et
colonne)
de la première cellule (en haut à gauche) et de la dernière cellule
(en bas à
droite) d'une sélection quelconque effectuée dans une feuille.
J'ai cherché sans succès dans divers forums, d'où ma question qui
j'espère
n'a pas été traitée x fois (?).
D'avance, je remercie toute personne qui pourra me mettre sur la
piste. --
BCM










Avatar
AV
Exemple de résultat "bizarre" :
Avec touche Ctrl (en respectant cet ordre)
Sélection B6:B8 et A2:A3 et C4:C5
--> exécution de la macro "infoselectN"

AV
Avatar
AV
Si je puis rajouter mon grain....
Pour ce qui est d'une sélection unique, voir la réponse de Joël dans le chapitre
"incompris and Co" (utilisation d'une référence relative)

Pour ce qui est d'une sélection multiple, l'index des "areas" lorsqu'on boucle
dessus est totalement tributaire de l'ordre dans lequel les diverses zones ont
été sélectionnées !
Pour avoir le tableau qui inclus l'ensemble de la (des) sélection(s) unique ou
multiple :

Sub zz_Zones()
MinL = Selection.Row: MinC = Selection.Column
For Each zone In Selection.Areas
x1 = zone.Row
x2 = x1 + zone.Rows.Count - 1
y1 = zone.Column
y2 = y1 + zone.Columns.Count - 1
If x1 < MinL Then MinL = x1
If x2 > MaxL Then MaxL = x2
If y1 < MinC Then MinC = y1
If y2 > MaxC Then MaxC = y2
Next
MsgBox "Ligne min : " & MinL
MsgBox "Colonne Min : " & MinC
MsgBox "Ligne max : " & MaxL
MsgBox "Colonne max : " & MaxC
MsgBox "Adresse tableau : " & Range(Cells(MinL, MinC), Cells(MaxL,
MaxC)).Address
End Sub

AV
1 2