Selection.End(xlDown).Select +1

Sofhy

XLDnaute Occasionnel
Bonsoir à tous,

J'ai un code qui me permet de sélectionner la dernière cellule de la colonne E.

Code:
Range("E2").Select
Selection.End(xlDown).Select

Par contre, comment je fais pour que le code me sélectionne la cellule juste en dessous dans la même colonne.
J'ai tenté du +1, mais ce n'est pas aussi simple.

Merci par avance,
Sofhy
 

Papou-net

XLDnaute Barbatruc
Re : Selection.End(xlDown).Select +1

Bonsoir Sofhy,

Tout simplement comme ceci, si j'ai bien compris la question :

Code:
Range("E2").Select
Selection.End(xlDown)[COLOR="Red"].Offset(1, 0)[/COLOR].Select

ou plus simplement :

Code:
Range("E2").End(xlDown).Offset(1, 0).Select

Espérant avoir répondu.

Cordialement.
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Selection.End(xlDown).Select +1

Bonjour Sophy, Papou

pour la dernière cellule d'une colonne, je serais parti du bas, cela permet d'éviter les cellules vides au milieu de la colonne, au cas ou... :

Code:
Range("E65536").End(xlUp)(2).Select

bonne journée
@+
 

mlem47

XLDnaute Nouveau
Re : Selection.End(xlDown).Select +1

Bonjour.
Je vous avertis, je suis tout à fait néophyte dans vba.
Je voudrais pouvoir extraire les données d’une plage dans ce cas-ci "am25:y2" de réservation de salles pour en établir la facture. Il y a donc, par fichier, une trentaine de feuilles, à récapituler sur une feuille cible afin de pouvoir la trier et établir une facture mensuelle par usager… J’ai tenté ceci :

Sub Transfert()

Windows("2013-10-Facturation Réservations octobre 2013.xlsm").Activate
Sheets("1").Select
Range("am25:y2").Select
Selection.Copy
Windows("2013-10-Facturation Réservations octobre 2013.xlsm").Activate
Sheets("Feuil2").Select
Range("A1").Select
Selection.End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste

Windows("2013-10-Facturation Réservations octobre 2013.xlsm").Activate
Sheets("2").Select
Range("am25:y2").Select
Selection.Copy
Windows("2013-10-Facturation Réservations octobre 2013.xlsm").Activate
Sheets("feuil2").Select
Range("a25").Select
Selection.End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste

End Sub

A reproduire autant de fois qu'il y a de jours...
Mais
1° message d’erreur sur la ligne : Selection.End(xlDown).Offset(1, 0).Select
2° Je me rends compte qu’il y a sûrement une routine possible pour aller successivement sur chaque feuille ??

Vous voyez hélas l'étendue de mon ignorance mais bon j'apprends...
Si quelqu'un peut m'aider : merci
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Selection.End(xlDown).Select +1

Bonjour,

remplace peut être :
Code:
Range("a25").Select
Selection.End(xlDown).Offset(1, 0).Select

par :
Code:
Range("a65536").End(xlUp)(2).Select

bien que les "select" ou autres "activate" soient rarement utiles en vba...

bonne journée
@+
 

mlem47

XLDnaute Nouveau
Re : Selection.End(xlDown).Select +1

Bonsoir,

Désolé d'avoir tardé pour vous remercier.
Votre réponse a été très utile, j'ai juste dû trouver comment coller la valeur plutôt que le contenu puisque ce sont des formules j'avais beaucoup de "+ref" comme réponses!!! Enfin ça c'est résolu aussi...
Cependant je ne sais pas si je peux encore vous prendre de votre temps la macro reprend à chaque sollicitation la plage de la feuille : "1" or il devrait y avoir plus tard les 30 jours du mois à récupérer : existe-t-il une procédure pour récupérer la même plage sur chacune des feuilles?
Si vous avez le temps.... je vous remets le fichier tel qu'il a été modifié et la macro corrigée.

Sub Transfert()

Windows("2013-10-Facturation Réservations octobre 2013.xlsm").Activate
Sheets("1").Select
Range("y3:am25").Select
Selection.Copy
Windows("2013-10-Facturation Réservations octobre 2013.xlsm").Activate
Sheets("Récapitulatif").Select
Range("a65536").End(xlUp)(2).Select
Selection.PasteSpecial Paste:=xlValues


End Sub
 

mlem47

XLDnaute Nouveau
Re : Selection.End(xlDown).Select +1

Pierrot93,


je reviens encore vers vous pour vous redire merci : en effet en fouillant sur le forum j'ai retrouvé une explications que vous donniez en aout 2012. J'ai essayer de l'appliquer et en tentant plusieurs "bidouillages" je pense avoir une solution acceptable.
Je la testerai grandeur-nature dans les prochains jours...
La voici :

Sub Transfert()

Dim i As Integer
For i = 1 To Sheets.Count
'ton code
'pour la feuille x Sheets(i).tes instructions


Windows("2013-10-Facturation Réservations octobre 2013.xlsm").Activate
Sheets(i).Select
Range("y3:an25").Select
Selection.Copy
Windows("2013-10-Facturation Réservations octobre 2013.xlsm").Activate
Sheets("Recapitulatif").Select
Range("a65536").End(xlUp)(2).Select
Selection.PasteSpecial Paste:=xlValues

Next i

Range("c1").Select
End Sub


Il y a encore de petites scories mais je crois que ça va marcher. Encore MERCI
 

Staple1600

XLDnaute Barbatruc
Re : Selection.End(xlDown).Select +1

Bonjour à tous

Comme te le disait Pierrot93, tu peux te passer des Select et autre Activate
Donc ton dernier code peut aussi s'écrire
Code:
Sub Transfert()
Dim MONCLASSEUR As Workbook, i As Integer
Set MONCLASSEUR = Workbooks("2013-10-Facturation Réservations octobre 2013.xlsm")

With MONCLASSEUR
    For i = 1 To .Sheets.Count
        If Sheets(i).Name <> "Recapitulatif" Then
        Sheets(i).Range("Y3:AN25").Copy .Sheets("Recapitulatif").Range("a65536").End(xlUp)(2)
        End If
    Next i
End With
End Sub
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
324

Statistiques des forums

Discussions
312 338
Messages
2 087 396
Membres
103 537
dernier inscrit
alisafred974