OVH Cloud OVH Cloud

selection

23 réponses
Avatar
Misange
Coucou,
j'ai des données dans une plage qui va de la cellule A1 à ... Xn, X et n
étant variables., X+1 et N+1 étant vides.
Je voudrais sélectionner en VBA la plage A2:Xn avec une syntaxe qui ne
fasse pas 3 lignes à coup de end(xlright) et end(xldown)... sachant
qu'en prime il peut très bien n'y avoir qu'une seule ligne à
sélectionner (ex : A2:F2). Quel est le plus simple (et élégant ! c'est
comme en maths, l'élégance en VBA ça compte ;-)
k'you !

--

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

10 réponses

1 2 3
Avatar
FxM
Bonsoir Misange,

A tester comme d'hab :
Sub test2()
With Range("A2:IV65536")
zz = Range("A1:" & .Find("*", .Item(1), , , ,
xlPrevious).Address).Address
End With
End Sub

@+
FxM


Misange wrote:

Coucou,
j'ai des données dans une plage qui va de la cellule A1 à ... Xn, X et n
étant variables., X+1 et N+1 étant vides.
Je voudrais sélectionner en VBA la plage A2:Xn avec une syntaxe qui ne
fasse pas 3 lignes à coup de end(xlright) et end(xldown)... sachant
qu'en prime il peut très bien n'y avoir qu'une seule ligne à
sélectionner (ex : A2:F2). Quel est le plus simple (et élégant ! c'est
comme en maths, l'élégance en VBA ça compte ;-)
k'you !



Avatar
FxM
Essais, essais, quand tu nous tiens ....
Corrections :
- A2 (et non A1)
- select et non zz pour l'adresse.

Sub test3()
With Range("A2:IV65536")
Range("A2:" & .Find("*", .Item(1), , , , _
xlPrevious).Address).select
End With
End Sub

@+
FxM

Misange wrote:

Coucou,
j'ai des données dans une plage qui va de la cellule A1 à ... Xn, X et
n étant variables., X+1 et N+1 étant vides.
Je voudrais sélectionner en VBA la plage A2:Xn avec une syntaxe qui ne
fasse pas 3 lignes à coup de end(xlright) et end(xldown)... sachant
qu'en prime il peut très bien n'y avoir qu'une seule ligne à
sélectionner (ex : A2:F2). Quel est le plus simple (et élégant ! c'est
comme en maths, l'élégance en VBA ça compte ;-)
k'you !






Avatar
Misange
Merci FX, ça roule !

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta


FxM wrote:
Bonsoir Misange,

A tester comme d'hab :
Sub test2()
With Range("A2:IV65536")
zz = Range("A1:" & .Find("*", .Item(1), , , ,
xlPrevious).Address).Address
End With
End Sub

@+
FxM


Misange wrote:

Coucou,
j'ai des données dans une plage qui va de la cellule A1 à ... Xn, X et
n étant variables., X+1 et N+1 étant vides.
Je voudrais sélectionner en VBA la plage A2:Xn avec une syntaxe qui ne
fasse pas 3 lignes à coup de end(xlright) et end(xldown)... sachant
qu'en prime il peut très bien n'y avoir qu'une seule ligne à
sélectionner (ex : A2:F2). Quel est le plus simple (et élégant ! c'est
comme en maths, l'élégance en VBA ça compte ;-)
k'you !






Avatar
Denis Michon
Bonjour Misange,

et ceci ça te va ?

'------------------------------
Sub Selectionner()

Dim R As Long, C As Integer

With Worksheets("Feuil2") 'à adapter
With .Cells
'Dernière colonne
C = .Find(What:="*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
'Dernière ligne
R = .Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
End With
'à partir de A1
'.Range("A1").Resize(R, C).Select
'à partir de A2
.Range("A2").Resize(R - 1, C).Select
End With
End Sub
'------------------------------



Salutations!


"Misange" a écrit dans le message de news:
Coucou,
j'ai des données dans une plage qui va de la cellule A1 à ... Xn, X et n
étant variables., X+1 et N+1 étant vides.
Je voudrais sélectionner en VBA la plage A2:Xn avec une syntaxe qui ne
fasse pas 3 lignes à coup de end(xlright) et end(xldown)... sachant
qu'en prime il peut très bien n'y avoir qu'une seule ligne à
sélectionner (ex : A2:F2). Quel est le plus simple (et élégant ! c'est
comme en maths, l'élégance en VBA ça compte ;-)
k'you !

--

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
Avatar
Denis Michon
Bonjour Misange,

Moi, Misange, je trouve que tu n'es pas très difficile !!!

;-))

Cette procédure fonctionne par intermittence ... cela dépend comment tes données sont placées dans la feuille.


Salutations!


"Misange" a écrit dans le message de news:
Merci FX, ça roule !

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta


FxM wrote:
Bonsoir Misange,

A tester comme d'hab :
Sub test2()
With Range("A2:IV65536")
zz = Range("A1:" & .Find("*", .Item(1), , , ,
xlPrevious).Address).Address
End With
End Sub

@+
FxM


Misange wrote:

Coucou,
j'ai des données dans une plage qui va de la cellule A1 à ... Xn, X et
n étant variables., X+1 et N+1 étant vides.
Je voudrais sélectionner en VBA la plage A2:Xn avec une syntaxe qui ne
fasse pas 3 lignes à coup de end(xlright) et end(xldown)... sachant
qu'en prime il peut très bien n'y avoir qu'une seule ligne à
sélectionner (ex : A2:F2). Quel est le plus simple (et élégant ! c'est
comme en maths, l'élégance en VBA ça compte ;-)
k'you !






Avatar
Misange
j'avais corrigé ;-)

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta


FxM wrote:
Essais, essais, quand tu nous tiens ....
Corrections :
- A2 (et non A1)
- select et non zz pour l'adresse.

Sub test3()
With Range("A2:IV65536")
Range("A2:" & .Find("*", .Item(1), , , , _
xlPrevious).Address).select
End With
End Sub

@+
FxM

Misange wrote:

Coucou,
j'ai des données dans une plage qui va de la cellule A1 à ... Xn, X
et n étant variables., X+1 et N+1 étant vides.
Je voudrais sélectionner en VBA la plage A2:Xn avec une syntaxe qui
ne fasse pas 3 lignes à coup de end(xlright) et end(xldown)...
sachant qu'en prime il peut très bien n'y avoir qu'une seule ligne à
sélectionner (ex : A2:F2). Quel est le plus simple (et élégant !
c'est comme en maths, l'élégance en VBA ça compte ;-)
k'you !









Avatar
Misange
Ta proc marche surement mais c'est quand même un peu long ;-( (je sais
je suis difficile... Mais j'avais un truc de ce genre que je voulais
simplifier.
en l'occurence pour la soluce de FXM, c'est pas très genant la ligne du
dessous est vide...
J'ai un autre truc sur le gaz, plus simple mais la journée a été plus
que chargée (boulot !!) et je décroche pour ce soir.
Bonne journée aux Canadiens, bonne nuit aux autres

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta


Denis Michon wrote:
Bonjour Misange,

Moi, Misange, je trouve que tu n'es pas très difficile !!!

;-))

Cette procédure fonctionne par intermittence ... cela dépend comment tes données sont placées dans la feuille.


Salutations!


"Misange" a écrit dans le message de news:
Merci FX, ça roule !

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta


FxM wrote:

Bonsoir Misange,

A tester comme d'hab :
Sub test2()
With Range("A2:IV65536")
zz = Range("A1:" & .Find("*", .Item(1), , , ,
xlPrevious).Address).Address
End With
End Sub

@+
FxM


Misange wrote:


Coucou,
j'ai des données dans une plage qui va de la cellule A1 à ... Xn, X et
n étant variables., X+1 et N+1 étant vides.
Je voudrais sélectionner en VBA la plage A2:Xn avec une syntaxe qui ne
fasse pas 3 lignes à coup de end(xlright) et end(xldown)... sachant
qu'en prime il peut très bien n'y avoir qu'une seule ligne à
sélectionner (ex : A2:F2). Quel est le plus simple (et élégant ! c'est
comme en maths, l'élégance en VBA ça compte ;-)
k'you !










Avatar
Daniel.M
Salut Misange,

Une autre pour le fun, mais elle fait 3 lignes! ;-)

With Range("A1").CurrentRegion
Intersect(.Offset(1), .Cells).Select
End With

Salutations,

Daniel M.

"Misange" wrote in message
news:
Coucou,
j'ai des données dans une plage qui va de la cellule A1 à ... Xn, X et n
étant variables., X+1 et N+1 étant vides.
Je voudrais sélectionner en VBA la plage A2:Xn avec une syntaxe qui ne
fasse pas 3 lignes à coup de end(xlright) et end(xldown)... sachant
qu'en prime il peut très bien n'y avoir qu'une seule ligne à
sélectionner (ex : A2:F2). Quel est le plus simple (et élégant ! c'est
comme en maths, l'élégance en VBA ça compte ;-)
k'you !

--

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta



Avatar
AV
Cher passereau,

Ta recherche effrénée d'élégance et de concision ne te conduirait-elle pas à
l'obscurantisme "dandyque" ?
:-))
Si l'on accepte que la dernière cellule d'un tableau est l'intersection de la
dernière colonne renseignée ET de la dernière ligne renseignée, la proposition
de FxM, ne peut, comme l'a souligné Denis, être satisfaisante car le "Find"
cherche la dernière ligne renseignée et DANS CETTE LIGNE, renvoie la dernière
colonne renseignée (la ligne est, dans ce cas, prioritaire sur la colonne !)

Exemple de tableau et résultats de l'exécution de la dite-macro
Seules cellules renseignées de la feuille :
A1;B10;C5
Sélection attendue : A2:C10
Sélection faite : A2:B10 !

Pour privilégier la concision et l'élégance sur la clarté, ça pourrait faire une
ligne :
Range("A2", Cells(Cells.Find("*", , , , xlByRows, xlPrevious).Row,
Cells.Find("*", , , , xlByColumns, xlPrevious).Column)).Select

AV
Avatar
Misange
Daniel.M wrote:

With Range("A1").CurrentRegion
Intersect(.Offset(1), .Cells).Select
End With


C'est limpide !
adopté. Mais je garde sous le coude aussi la soluce d'Alain
Merci Daniel
--

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

1 2 3