XL 2019 Selection.Offset

gg13

XLDnaute Occasionnel
Bonjour,
Je voudrais sélectionner une plage de cellules avec la fonction Selection.Offset si possible ou autre.
J’arrive à me positionner sur la dernière cellule d’une colonne (ex A80) et je voudrais sélectionner
la plage par exemple A80 ; A70. (la plage varie et peut être quelconque)
J’ai testé plusieurs écritures rien ne marche.

Merci si vous pouvez m’aider.
GG13
 
C

Compte Supprimé 979

Guest
Bonjour gg13

1) Quelle est la logique à cette sélection
2) A quoi va t'elle vous servir

En développement Objet nous n'avons pas besoin de faire de ".select"
pour appliquer un paramètre à la plage 🤔

A+
 

gg13

XLDnaute Occasionnel
Bonjour BrunoM45
En fait je cherche simplement à sélectionner une plage pour la copier.
je trouve la dernière cellule avec Range("A" & Derlig).Select
et je pensais que avec Selection.Offset je pourrais copier une plage, mais cette fonction sélectionne une autre cellule mais pas une plage.
gg13

 
C

Compte Supprimé 979

Guest
Re

Donc c'est bien ce que je disais, il est inutile de sélectionner pour copier ;)

2 Possibilités
Code:
Sub Test1()
  With ActiveSheet
    .Range("A1").CurrentRegion.Copy
  End With
End Sub

Sub Test2()
  Dim dCol As Long, dLig As Long
  With ActiveSheet
    dCol = .Cells(1, Columns.Count).End(xlToLeft).Column
    dLig = .Cells(Rows.Count, 1).End(xlUp).Row
    .Range(.Cells(1, 1), .Cells(dLig, dCol)).Copy
  End With
End Sub

A+
 

gg13

XLDnaute Occasionnel
Re

Donc c'est bien ce que je disais, il est inutile de sélectionner pour copier ;)

2 Possibilités
Code:
Sub Test1()
  With ActiveSheet
    .Range("A1").CurrentRegion.Copy
  End With
End Sub

Sub Test2()
  Dim dCol As Long, dLig As Long
  With ActiveSheet
    dCol = .Cells(1, Columns.Count).End(xlToLeft).Column
    dLig = .Cells(Rows.Count, 1).End(xlUp).Row
    .Range(.Cells(1, 1), .Cells(dLig, dCol)).Copy
  End With
End Sub

A+
 

gg13

XLDnaute Occasionnel
Pour test 1
comment est définie CurrentRegion ???

Pour le test 2
en fait je reste dans la même colonne donc je n'ai besoin que de la plage de la cellule active à
une autre au-dessus ou au dessous.


Peut être
Sub Test2()
Dim dLig As Long
With ActiveSheet
dLig = .Cells(Rows.Count, 1).End(xlUp).Row
.Range(.Cells(1, 1), .Cells(dLig).Copy
End With
End Sub

Que représente Range(.Cells(1, 1) ??
Merci pour ton aide
GG13
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,

CuurrentRegion est l'équivalent en Excel de:
  • se placer sur une cellule
  • tapez Ctrl + * (contrôle + touche "*")
Ce qui a pour effet de sélectionner la plus petite plage rectangulaire autour de la cellule courante :
  • limitée par une colonne vide en allant vers la droite
  • limitée par une colonne vide en allant vers la gauche
  • limitée par une ligne vide en allant vers le haut
  • limitée par une colonne vide en allant vers le bas

Attention: autant CurrentRegion que l'instruction END() peuvent renvoyer une plage ou cellule erronée si lors du processus des colonnes ou lignes sont masquées.

1669490364771.png
 
Dernière édition:

gg13

XLDnaute Occasionnel
Mapomme.
Merci pour cette explication, très utile je la garde en réserve, mais ça ne répond pas à mon problème.
Si je suis en cellule A80 et que je dois sélectionner 10 noms, au-dessus ou au dessous, je dois sélectionner la plage de la cellule de départ jusqu'à la cellule d'arrivée.
Ça je sais le faire avec une plage celldep et celllfin select mais je pensais qu'une écriture plus rapide et plus "professionnelle " pouvait exister.
GG13
 

gg13

XLDnaute Occasionnel
Bonjour,
J'ai fini par comprendre ce que représente RESIZE
Mapomme, la soluttion marche si j'écris des chiffres.

Cells(Rows.Count, "Q").End(xlUp).Offset(-7).Resize(8).Copy '
Mais les valeurs
Offset et Resize sont des variables dont j'ai testé avec X et Y

Cells(Rows.Count, "Q").End(xlUp).Offset(X).Resize(Y).Copy

Mais les variables X et Y ne passent pas.

Si quelqu'un peut me dire comment écrire cette fonction,merci
GG13
 

Discussions similaires

Réponses
3
Affichages
431

Statistiques des forums

Discussions
312 504
Messages
2 089 072
Membres
104 018
dernier inscrit
Mzghal