OVH Cloud OVH Cloud

[Q] [VBA] Récupérer les coordonnées d'une zone sé lectionnée?

10 réponses
Avatar
JCF
Bonjour à tous!
Soit une zone de cellules sélectionnée (une seule zone d'un coup, toutes les
cellules sont adjacentes, donc ça forme un parallélépipède).
Ensuite est lancé ma macro VBA.
Je souhaite que ma macro récupère les numéros de la première et de la
dernière ligne sélectionnées, et les numéros de la première et de la
dernière colonne sélectionnées.

J'ai déjà écrit un truc pourri qui marche pas '-/ :


'PremLigne = Areas.End(xlUp).Row
'DerLigne = Areas.End(xlDown).Row
'PremColonne = Areas.End(xlToLeft).Column
'DerColonne = Areas.End(xlToRight).Column


Quelle syntaxe dois-je utiliser pour y parvenir?
Merci pour votre aide et à bientôt!
Jean-Christophe

10 réponses

Avatar
ru-th
Salut

ligne1= ActiveCell.CurrentRegion(1).Row
ligneFin = ActiveCell.CurrentRegion(ActiveCell.CurrentRegion.Count).Row
remplaces row par column pour les .... colonnes

a+
rural thierry

"JCF" a écrit dans le message de news:
BD22E37E.1FB2%
Bonjour à tous!
Soit une zone de cellules sélectionnée (une seule zone d'un coup, toutes
les

cellules sont adjacentes, donc ça forme un parallélépipède).
Ensuite est lancé ma macro VBA.
Je souhaite que ma macro récupère les numéros de la première et de la
dernière ligne sélectionnées, et les numéros de la première et de la
dernière colonne sélectionnées.

J'ai déjà écrit un truc pourri qui marche pas '-/ :


'PremLigne = Areas.End(xlUp).Row
'DerLigne = Areas.End(xlDown).Row
'PremColonne = Areas.End(xlToLeft).Column
'DerColonne = Areas.End(xlToRight).Column


Quelle syntaxe dois-je utiliser pour y parvenir?
Merci pour votre aide et à bientôt!
Jean-Christophe



Avatar
Michel Gaboly
Bonjour,

Pas besoin d'Areas. Selection suffit.

Sub NumLignesEtColonnes()
Dim PremLigne As Long, DerLigne As Long, PremCol As Long, DerCol As Long
With Selection
PremLigne = .Row
DerLigne = PremLigne + .Rows.Count - 1
PremCol = .Column
DerCol = PremCol + .Columns.Count - 1
End With
MsgBox PremLigne & vbNewLine & DerLigne & vbNewLine & PremCol & vbNewLine & DerCol
End Sub



Bonjour à tous!
Soit une zone de cellules sélectionnée (une seule zone d'un coup, toutes les
cellules sont adjacentes, donc ça forme un parallélépipède).
Ensuite est lancé ma macro VBA.
Je souhaite que ma macro récupère les numéros de la première et de la
dernière ligne sélectionnées, et les numéros de la première et de la
dernière colonne sélectionnées.

J'ai déjà écrit un truc pourri qui marche pas '-/ :

'PremLigne = Areas.End(xlUp).Row
'DerLigne = Areas.End(xlDown).Row
'PremColonne = Areas.End(xlToLeft).Column
'DerColonne = Areas.End(xlToRight).Column

Quelle syntaxe dois-je utiliser pour y parvenir?
Merci pour votre aide et à bientôt!
Jean-Christophe


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
JCF
"ru-th" m'a répondu:

ligne1= ActiveCell.CurrentRegion(1).Row
ligneFin = ActiveCell.CurrentRegion(ActiveCell.CurrentRegion.Count).Row
remplaces row par column pour les .... colonnes


Ben ça ne marche que pour ligne1, après, le problème, c'est que ça ne reste
pas dans la zone sélectionnée, ça part jusqu'au bord du tableau (la dernière
cellule renseignée adjacente) pour les 3 autres coordonnées (c'est ce que
faisait aussi mon code...).

J'avais réussi à attraper ces quatre coordonnées sous OpenOffice en lui
disant ceci:

'Dim UneZone As Object
'
'CoordZone = UneZone.RangeAddress
'FeuilledeZone = CoordZone.Sheet
'PremColonne = CoordZone.StartColumn
'DerColonne = CoordZone.EndColumn
'PremLigne = CoordZone.StartRow
'DerLigne = CoordZone.EndRow


Comment faire pareil en XL?
Merci et à +
JC

Avatar
ChrisV
Bonjour JCF,

Ou encore...

Sub zaza()
With ActiveCell
's'il s'agit de récupérer l'adresse de la plage
MsgBox Selection.Address(0, 0)
MsgBox "ligDeb: " & .Row
MsgBox "ligFin: " & .Row + Selection.Rows.Count - 1
MsgBox "colDeb: " & .Column
MsgBox "colFin: " & .Column + Selection.Columns.Count - 1
End With
End Sub


ChrisV


"JCF" a écrit dans le message de
news:BD22E37E.1FB2%
Bonjour à tous!
Soit une zone de cellules sélectionnée (une seule zone d'un coup, toutes
les

cellules sont adjacentes, donc ça forme un parallélépipède).
Ensuite est lancé ma macro VBA.
Je souhaite que ma macro récupère les numéros de la première et de la
dernière ligne sélectionnées, et les numéros de la première et de la
dernière colonne sélectionnées.

J'ai déjà écrit un truc pourri qui marche pas '-/ :


'PremLigne = Areas.End(xlUp).Row
'DerLigne = Areas.End(xlDown).Row
'PremColonne = Areas.End(xlToLeft).Column
'DerColonne = Areas.End(xlToRight).Column


Quelle syntaxe dois-je utiliser pour y parvenir?
Merci pour votre aide et à bientôt!
Jean-Christophe




Avatar
ChrisV
Bonjour Michel,

Désolé pour le doublon...
(ton msg n'apparaissait pas au moment de mon envoi)


ChrisV


"Michel Gaboly" a écrit dans le message de
news:
Bonjour,

Pas besoin d'Areas. Selection suffit.

Sub NumLignesEtColonnes()
Dim PremLigne As Long, DerLigne As Long, PremCol As Long, DerCol As Long
With Selection
PremLigne = .Row
DerLigne = PremLigne + .Rows.Count - 1
PremCol = .Column
DerCol = PremCol + .Columns.Count - 1
End With
MsgBox PremLigne & vbNewLine & DerLigne & vbNewLine & PremCol &
vbNewLine & DerCol

End Sub



Bonjour à tous!
Soit une zone de cellules sélectionnée (une seule zone d'un coup, toutes
les


cellules sont adjacentes, donc ça forme un parallélépipède).
Ensuite est lancé ma macro VBA.
Je souhaite que ma macro récupère les numéros de la première et de la
dernière ligne sélectionnées, et les numéros de la première et de la
dernière colonne sélectionnées.

J'ai déjà écrit un truc pourri qui marche pas '-/ :

'PremLigne = Areas.End(xlUp).Row
'DerLigne = Areas.End(xlDown).Row
'PremColonne = Areas.End(xlToLeft).Column
'DerColonne = Areas.End(xlToRight).Column

Quelle syntaxe dois-je utiliser pour y parvenir?
Merci pour votre aide et à bientôt!
Jean-Christophe


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
JCF
"Michel Gaboly" m'a répondu:

Sub NumLignesEtColonnes()
Dim PremLigne As Long, DerLigne As Long, PremCol As Long, DerCol As Long
With Selection
PremLigne = .Row
DerLigne = PremLigne + .Rows.Count - 1
PremCol = .Column
DerCol = PremCol + .Columns.Count - 1
End With
MsgBox PremLigne & vbNewLine & DerLigne & vbNewLine & PremCol & vbNewLine
& DerCol
End Sub


Top moumoute! C'était bien ça la solution! Merci à vous deux pour votre
aide!
A+
Jean-Christophe

Avatar
JCF
"ChrisV" m'a répondu:
Ou encore...

Sub zaza()
With ActiveCell
's'il s'agit de récupérer l'adresse de la plage
MsgBox Selection.Address(0, 0)
MsgBox "ligDeb: " & .Row
MsgBox "ligFin: " & .Row + Selection.Rows.Count - 1
MsgBox "colDeb: " & .Column
MsgBox "colFin: " & .Column + Selection.Columns.Count - 1
End With
End Sub


ChrisV



Merci pour ton aide Chris!!
A+
JC

Avatar
Michel Gaboly
De rien ;-)))

Les solutions sont souvent + simples qu’on ne le croit.



"Michel Gaboly" m'a répondu:

Sub NumLignesEtColonnes()
Dim PremLigne As Long, DerLigne As Long, PremCol As Long, DerCol As Long
With Selection
PremLigne = .Row
DerLigne = PremLigne + .Rows.Count - 1
PremCol = .Column
DerCol = PremCol + .Columns.Count - 1
End With
MsgBox PremLigne & vbNewLine & DerLigne & vbNewLine & PremCol & vbNewLine
& DerCol
End Sub


Top moumoute! C'était bien ça la solution! Merci à vous deux pour votre
aide!
A+
Jean-Christophe


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


Avatar
Michel Gaboly
Aucun problème ;-)))


Bonjour Michel,

Désolé pour le doublon...
(ton msg n'apparaissait pas au moment de mon envoi)

ChrisV

"Michel Gaboly" a écrit dans le message de
news:
Bonjour,

Pas besoin d'Areas. Selection suffit.

Sub NumLignesEtColonnes()
Dim PremLigne As Long, DerLigne As Long, PremCol As Long, DerCol As Long
With Selection
PremLigne = .Row
DerLigne = PremLigne + .Rows.Count - 1
PremCol = .Column
DerCol = PremCol + .Columns.Count - 1
End With
MsgBox PremLigne & vbNewLine & DerLigne & vbNewLine & PremCol &
vbNewLine & DerCol

End Sub



Bonjour à tous!
Soit une zone de cellules sélectionnée (une seule zone d'un coup, toutes
les


cellules sont adjacentes, donc ça forme un parallélépipède).
Ensuite est lancé ma macro VBA.
Je souhaite que ma macro récupère les numéros de la première et de la
dernière ligne sélectionnées, et les numéros de la première et de la
dernière colonne sélectionnées.

J'ai déjà écrit un truc pourri qui marche pas '-/ :

'PremLigne = Areas.End(xlUp).Row
'DerLigne = Areas.End(xlDown).Row
'PremColonne = Areas.End(xlToLeft).Column
'DerColonne = Areas.End(xlToRight).Column

Quelle syntaxe dois-je utiliser pour y parvenir?
Merci pour votre aide et à bientôt!
Jean-Christophe


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
ru-th
Salut

une variante , pour le fun
pour des zones non jointes type b1:b5 c18:c:22

Sub test()
rep = Selection.Address(0, 0)
LigneD = Range(Mid(rep, 1, Application.Find(":", rep) - 1)).Row
ligneF = Range(StrReverse(Mid(StrReverse(rep), 1, Application.Find(":",
StrReverse(rep)) - 1))).Row
End Sub

a+
rural thierry
"JCF" a écrit dans le message de news:
BD22EC88.220C%
"ru-th" m'a répondu:

ligne1= ActiveCell.CurrentRegion(1).Row
ligneFin = ActiveCell.CurrentRegion(ActiveCell.CurrentRegion.Count).Row
remplaces row par column pour les .... colonnes


Ben ça ne marche que pour ligne1, après, le problème, c'est que ça ne
reste

pas dans la zone sélectionnée, ça part jusqu'au bord du tableau (la
dernière

cellule renseignée adjacente) pour les 3 autres coordonnées (c'est ce que
faisait aussi mon code...).

J'avais réussi à attraper ces quatre coordonnées sous OpenOffice en lui
disant ceci:

'Dim UneZone As Object
'
'CoordZone = UneZone.RangeAddress
'FeuilledeZone = CoordZone.Sheet
'PremColonne = CoordZone.StartColumn
'DerColonne = CoordZone.EndColumn
'PremLigne = CoordZone.StartRow
'DerLigne = CoordZone.EndRow


Comment faire pareil en XL?
Merci et à +
JC