OVH Cloud OVH Cloud

Selection.End(xldown).Select et puis ?

4 réponses
Avatar
Aude
Bonjour,

J'ai un tableau de données classiques et souhaite développer une petite
macro pour l'alimenter automatiquement. Les lignes de données de mon tableau
augmentent donc au fur et à mesure que j'y rentre des données. Comment
selectionner automatiquement la première ligne vide du tableau dans laquelle
je copy/paste des données ?
Selection.End(xldown).Select m'emmène bien à la dernière ligne de données du
tableau mais je voudrais activer la cellule vide du dessous.

Merci pour votre aide !
A

4 réponses

Avatar
MichDenis
Bonsoir Aude,

J'utiliserais plutôt ceci en adaptant le nom de la feuille et de la colonne désirée.

'-------------------
With Worksheets("Feuil1")
.Activate
.Range("A" & .Range("A65536").End(xlUp)(2).Row).Select
End With
'-------------------


Salutations!



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

Bonjour,

J'ai un tableau de données classiques et souhaite développer une petite
macro pour l'alimenter automatiquement. Les lignes de données de mon tableau
augmentent donc au fur et à mesure que j'y rentre des données. Comment
selectionner automatiquement la première ligne vide du tableau dans laquelle
je copy/paste des données ?
Selection.End(xldown).Select m'emmène bien à la dernière ligne de données du
tableau mais je voudrais activer la cellule vide du dessous.

Merci pour votre aide !
A
Avatar
papou
Bonjour
D'une manière générale pour ce qui me concerne, je préfère définir la
dernière ligne vide en commençant par le bas.
De plus, il est rarement indispensable de devoir sélectionner la cellule.
Enfin, il peut être important d'identifier la feuille qui doit être traitée
par ta macro (et si ce n'est pas la bonne feuille qui est active ?).
Donc dans ton cas, en imaginant qu'il s'agisse de saisir une valeur sur la
dernière ligne vide en colonne A de la feuille Feuil1 par exemple :
Worksheets("Feuil1").Range("A65536").End(xlUp)(2).Value = "exemple"
ou en beaucoup plus court :
Feuil1.[A65536].End(xlUp)(2) = "exemple"
Cordialement
Pascal

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

Bonjour,

J'ai un tableau de données classiques et souhaite développer une petite
macro pour l'alimenter automatiquement. Les lignes de données de mon
tableau
augmentent donc au fur et à mesure que j'y rentre des données. Comment
selectionner automatiquement la première ligne vide du tableau dans
laquelle
je copy/paste des données ?
Selection.End(xldown).Select m'emmène bien à la dernière ligne de données
du
tableau mais je voudrais activer la cellule vide du dessous.

Merci pour votre aide !
A


Avatar
Aude
Ok merci Nono, Mich et Papou !
J'ai utilisé la solution de Papou qui marche à merveille ; je me souviens
avoir déjà utilisé Offset.
Mais, j'ai maintenant besoin d'exploiter une notion présente dans les
réponses de Mich et Papou : Worksheets("Feuil1")...
J'ai plusieurs onglets (feuil1, feuil2...) qui doivent utiliser la même
macro pour envoyer leurs données vers les lignes vides de mon tableau.

Je crois avoir besoin d'une condition : si feuil1 active, alors copy des
données de feuil1 vers feuilcible. si feuil2 active, copy des données de
feuil2 vers feuilcible.

Bon, je crois que ce sera tout. Merci !
A



"MichDenis" wrote:

Bonsoir Aude,

J'utiliserais plutôt ceci en adaptant le nom de la feuille et de la colonne désirée.

'-------------------
With Worksheets("Feuil1")
.Activate
.Range("A" & .Range("A65536").End(xlUp)(2).Row).Select
End With
'-------------------


Salutations!



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

Bonjour,

J'ai un tableau de données classiques et souhaite développer une petite
macro pour l'alimenter automatiquement. Les lignes de données de mon tableau
augmentent donc au fur et à mesure que j'y rentre des données. Comment
selectionner automatiquement la première ligne vide du tableau dans laquelle
je copy/paste des données ?
Selection.End(xldown).Select m'emmène bien à la dernière ligne de données du
tableau mais je voudrais activer la cellule vide du dessous.

Merci pour votre aide !
A





Avatar
papou
Re
Pour une même action (macro) à déclencher pour plusieurs feuilles dans un
même classeur, il faut remonter d'un niveau et rechercher l'évènement au
niveau du classeur.
Dans ton cas il s'agit de :
Private Sub Workbook_SheetActivate(ByVal Sh As Object)

End Sub
Ensuite il te suffira d'adapter tes différents contrôles si besoin en
utilisant Sh en tant que variable de nom de feuille :
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Select Case Sh.Name
Case Is = "Feuil1"
'....code ici
Case Is = "Feuil2"
'...autre code là
End Select
End Sub

Cordialement
Pascal

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

Ok merci Nono, Mich et Papou !
J'ai utilisé la solution de Papou qui marche à merveille ; je me souviens
avoir déjà utilisé Offset.
Mais, j'ai maintenant besoin d'exploiter une notion présente dans les
réponses de Mich et Papou : Worksheets("Feuil1")...
J'ai plusieurs onglets (feuil1, feuil2...) qui doivent utiliser la même
macro pour envoyer leurs données vers les lignes vides de mon tableau.

Je crois avoir besoin d'une condition : si feuil1 active, alors copy des
données de feuil1 vers feuilcible. si feuil2 active, copy des données de
feuil2 vers feuilcible.

Bon, je crois que ce sera tout. Merci !
A



"MichDenis" wrote:

Bonsoir Aude,

J'utiliserais plutôt ceci en adaptant le nom de la feuille et de la
colonne désirée.

'-------------------
With Worksheets("Feuil1")
.Activate
.Range("A" & .Range("A65536").End(xlUp)(2).Row).Select
End With
'-------------------


Salutations!



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

Bonjour,

J'ai un tableau de données classiques et souhaite développer une petite
macro pour l'alimenter automatiquement. Les lignes de données de mon
tableau
augmentent donc au fur et à mesure que j'y rentre des données. Comment
selectionner automatiquement la première ligne vide du tableau dans
laquelle
je copy/paste des données ?
Selection.End(xldown).Select m'emmène bien à la dernière ligne de données
du
tableau mais je voudrais activer la cellule vide du dessous.

Merci pour votre aide !
A