Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

macro - étendre plage après offset

13 réponses
Avatar
j-pascal
Bonjour,

Je souhaiterais ajouter un certain nombre de noms à la fin d'une liste. J'ai
ceci :

Sub essai_ajouts()

Sheets("toto").Select
Range("A4").Select
Selection.End(xlDown).Offset(1, 0).Select

End Sub

La cellule active est donc la première cellule vide après ma liste. A partir
de cette cellule, je veux ajouter les noms. J'avais pensé à un truc du genre
:

Range("ActiveCells" & mavar).Select

Mais sans trop de surprise, ça ne marche pas !

Question : comment détermine-t-on en vba la cellule active ? Comment puis-je
en partant de la cellule active et en ajoutant n cellules (ou "n" sera une
variable) déterminer une nouvelle plage ?

Merci d'avance pour vos (éventuelles) réponses.

JP

3 réponses

1 2
Avatar
Jacky
Re..
la colonne, la plage commence à la deuxième ligne.
Ceci corrige

'---------
Sub jj()
derlg = Sheets("Feuil1").Range("a65536").End(3).Row + 1
If derlg = 2 And [a1] = "" Then derlg = 1
n = 5 'A adapter
Range("a" & derlg & ":a" & derlg + n - 1).Select
End Sub
'-------
JJ

"j-pascal" a écrit dans le message de news:
O4Y%
Re,

Je viens de m'apercevoir que lorsqu'il n'y a pas de données initiales dans
la colonne, la plage commence à la deuxième ligne. C'est normal ?

JP

Jacky wrote:
Re....
.... néanmoins ce que je cherche, c'est sélectionner la plage qui
part de la première cellule vide (après la dernière cellule pleine
!) + "n"
'---------

Sub jj()
derlg = Sheets("Feuil1").Range("a65536").End(3).Row + 1
n = 5 'A adapter
Range("a" & derlg & ":a" & derlg + n).Select
End Sub
'-------

"j-pascal" a écrit dans le message de news:
%
Bonsoir Jacky,

Ta procédure décale bien de "n" cellules en dessous de la dernière
cellule pleine ; néanmoins ce que je cherche, c'est sélectionner la
plage qui part de la première cellule vide (après la dernière
cellule pleine !) + "n" cellules. J'ai essayé plein de trucs et ça
ne marche pas (erreur de compilation !).

Peut-être @ + ?

JP

wrote:
Bonjour,
Essaie ceci:
'-----------
Sub jj()
derlg = Sheets("Feuil1").Range("a65536").End(3).Row
Range("a" & derlg).Select
MsgBox "Dernière cellule occupée de la feuille 1 colonne A est : "
& ActiveCell.Address(0, 0)
decalage = 5
Range("a" & derlg + decalage).Select
MsgBox "La selection décalée de : " & decalage & " lignes" &
Chr(10) & "Cellule : " & ActiveCell.Address(0, 0)
End Sub
'----------

"j-pascal" a écrit dans le message de
news: u8%
Bonjour,

Je souhaiterais ajouter un certain nombre de noms à la fin d'une
liste. J'ai ceci :

Sub essai_ajouts()

Sheets("toto").Select
Range("A4").Select
Selection.End(xlDown).Offset(1, 0).Select

End Sub

La cellule active est donc la première cellule vide après ma
liste. A partir de cette cellule, je veux ajouter les noms.
J'avais pensé à un truc du genre :

Range("ActiveCells" & mavar).Select

Mais sans trop de surprise, ça ne marche pas !

Question : comment détermine-t-on en vba la cellule active ?
Comment puis-je en partant de la cellule active et en ajoutant n
cellules (ou "n" sera une variable) déterminer une nouvelle plage ?

Merci d'avance pour vos (éventuelles) réponses.

JP











Avatar
j-pascal
PARFAIT !!

Merci infiniment Jacky, ce code m'est très précieux.
J'avais déjà pensé à une autre forme de test conditionnel, mais c'était
assurément plus lourd ;-)

Question bête, mais à quoi sert le (3) après ".End" (End(3).Row) ?

JP

Jacky wrote:
Re..
la colonne, la plage commence à la deuxième ligne.
Ceci corrige

'---------
Sub jj()
derlg = Sheets("Feuil1").Range("a65536").End(3).Row + 1
If derlg = 2 And [a1] = "" Then derlg = 1
n = 5 'A adapter
Range("a" & derlg & ":a" & derlg + n - 1).Select
End Sub
'-------
JJ

"j-pascal" a écrit dans le message de news:
O4Y%
Re,

Je viens de m'apercevoir que lorsqu'il n'y a pas de données
initiales dans la colonne, la plage commence à la deuxième ligne.
C'est normal ? JP

Jacky wrote:
Re....
.... néanmoins ce que je cherche, c'est sélectionner la plage qui
part de la première cellule vide (après la dernière cellule pleine
!) + "n"
'---------

Sub jj()
derlg = Sheets("Feuil1").Range("a65536").End(3).Row + 1
n = 5 'A adapter
Range("a" & derlg & ":a" & derlg + n).Select
End Sub
'-------

"j-pascal" a écrit dans le message de
news: %
Bonsoir Jacky,

Ta procédure décale bien de "n" cellules en dessous de la dernière
cellule pleine ; néanmoins ce que je cherche, c'est sélectionner la
plage qui part de la première cellule vide (après la dernière
cellule pleine !) + "n" cellules. J'ai essayé plein de trucs et ça
ne marche pas (erreur de compilation !).

Peut-être @ + ?

JP

wrote:
Bonjour,
Essaie ceci:
'-----------
Sub jj()
derlg = Sheets("Feuil1").Range("a65536").End(3).Row
Range("a" & derlg).Select
MsgBox "Dernière cellule occupée de la feuille 1 colonne A est : " &
ActiveCell.Address(0, 0)
decalage = 5
Range("a" & derlg + decalage).Select
MsgBox "La selection décalée de : " & decalage & " lignes" &
Chr(10) & "Cellule : " & ActiveCell.Address(0, 0)
End Sub
'----------

"j-pascal" a écrit dans le message de
news: u8%
Bonjour,

Je souhaiterais ajouter un certain nombre de noms à la fin d'une
liste. J'ai ceci :

Sub essai_ajouts()

Sheets("toto").Select
Range("A4").Select
Selection.End(xlDown).Offset(1, 0).Select

End Sub

La cellule active est donc la première cellule vide après ma
liste. A partir de cette cellule, je veux ajouter les noms.
J'avais pensé à un truc du genre :

Range("ActiveCells" & mavar).Select

Mais sans trop de surprise, ça ne marche pas !

Question : comment détermine-t-on en vba la cellule active ?
Comment puis-je en partant de la cellule active et en ajoutant n
cellules (ou "n" sera une variable) déterminer une nouvelle
plage ? Merci d'avance pour vos (éventuelles) réponses.

JP












Avatar
Jacky
Re...
mais à quoi sert le (3) après ".End" (End(3).Row) ?
C'est le raccourci de "end(xlup)"



Salutations
JJ

"j-pascal" a écrit dans le message de
news:%
PARFAIT !!

Merci infiniment Jacky, ce code m'est très précieux.
J'avais déjà pensé à une autre forme de test conditionnel, mais c'était
assurément plus lourd ;-)

Question bête, mais à quoi sert le (3) après ".End" (End(3).Row) ?

JP

Jacky wrote:
Re..
la colonne, la plage commence à la deuxième ligne.
Ceci corrige

'---------
Sub jj()
derlg = Sheets("Feuil1").Range("a65536").End(3).Row + 1
If derlg = 2 And [a1] = "" Then derlg = 1
n = 5 'A adapter
Range("a" & derlg & ":a" & derlg + n - 1).Select
End Sub
'-------
JJ

"j-pascal" a écrit dans le message de news:
O4Y%
Re,

Je viens de m'apercevoir que lorsqu'il n'y a pas de données
initiales dans la colonne, la plage commence à la deuxième ligne.
C'est normal ? JP

Jacky wrote:
Re....
.... néanmoins ce que je cherche, c'est sélectionner la plage qui
part de la première cellule vide (après la dernière cellule pleine
!) + "n"
'---------

Sub jj()
derlg = Sheets("Feuil1").Range("a65536").End(3).Row + 1
n = 5 'A adapter
Range("a" & derlg & ":a" & derlg + n).Select
End Sub
'-------

"j-pascal" a écrit dans le message de
news: %
Bonsoir Jacky,

Ta procédure décale bien de "n" cellules en dessous de la dernière
cellule pleine ; néanmoins ce que je cherche, c'est sélectionner la
plage qui part de la première cellule vide (après la dernière
cellule pleine !) + "n" cellules. J'ai essayé plein de trucs et ça
ne marche pas (erreur de compilation !).

Peut-être @ + ?

JP

wrote:
Bonjour,
Essaie ceci:
'-----------
Sub jj()
derlg = Sheets("Feuil1").Range("a65536").End(3).Row
Range("a" & derlg).Select
MsgBox "Dernière cellule occupée de la feuille 1 colonne A est : " &
ActiveCell.Address(0, 0)
decalage = 5
Range("a" & derlg + decalage).Select
MsgBox "La selection décalée de : " & decalage & " lignes" &
Chr(10) & "Cellule : " & ActiveCell.Address(0, 0)
End Sub
'----------

"j-pascal" a écrit dans le message de
news: u8%
Bonjour,

Je souhaiterais ajouter un certain nombre de noms à la fin d'une
liste. J'ai ceci :

Sub essai_ajouts()

Sheets("toto").Select
Range("A4").Select
Selection.End(xlDown).Offset(1, 0).Select

End Sub

La cellule active est donc la première cellule vide après ma
liste. A partir de cette cellule, je veux ajouter les noms.
J'avais pensé à un truc du genre :

Range("ActiveCells" & mavar).Select

Mais sans trop de surprise, ça ne marche pas !

Question : comment détermine-t-on en vba la cellule active ?
Comment puis-je en partant de la cellule active et en ajoutant n
cellules (ou "n" sera une variable) déterminer une nouvelle
plage ? Merci d'avance pour vos (éventuelles) réponses.

JP















1 2