XL 2010 se deplacer vers le bas en VBA

philmaure

XLDnaute Impliqué
bonjour,

comment dupliquer la commande : Range(Selection, Selection.End(xlDown)).Select jusqu'à ce qu'il y a des données

Dans mon exemple joint, en se positionnant sur la cellule A1 comment sélectionner l'ensemble des données.

Je ne souhaite pas comme solution la sélection de la colonne a en totalité mais bien que les données.

Merci pour votre aide
Cdlt
Philmaure
 

Pièces jointes

  • test.xlsx
    9 KB · Affichages: 28

philmaure

XLDnaute Impliqué
re,

merci pour la réponse mais effectivement j'ai mal exprimé mon besoin

dans un tableau avec X ligne et colonne, j'ai besoin de faire une selection précise.
si dans ma macro je met 28 fois la ligne de commande : Range(Selection, Selection.End(xlDown)).Select
je parviens à sélectionner ce dont j'ai besoin.

Ma question est est -il possible de simplifier ma macro et eviter de copier 28 fois la ligne de commande.

Merci
Cdlt
Philippe
 

vgendron

XLDnaute Barbatruc
euh..

voir ce code et les différentes façons de sélectionner

Code:
Sub sel()
'selection de toutes les datas sur la colonne A à partir de A2
Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row).Select

'selection uniquement du bloc A2
Range("A2").CurrentRegion.Select

'selection uniquement du bloc A10
Range("A10").CurrentRegion.Select


'selection des i blocs les uns après les autres
For i = 1 To 2
    Range("A" & 8 * i - 6).CurrentRegion.Select
Next i
End Sub
 

ROGER2327

XLDnaute Barbatruc
Bonjour à tous.

Juste pour s'amuser :​
VB:
Sub toto()
Dim m&, i&, j&, k&, p As Range
  With [A1].Cells
    m = Cells(Rows.Count, .Column).End(xlUp).Row
    If m <= .Row Then
      If .Value <> "" Then Set p = .Cells Else MsgBox "Rien !": Exit Sub
    Else
      For i = m To .Row Step -1
        If Cells(i, .Column).Value = "" Then
          j = i - (i < m)
          If j < m Then
            If p Is Nothing Then
              Set p = Range(Cells(j, .Column), Cells(k, .Column))
            Else
              Set p = Union(Range(Cells(k, .Column), Cells(j, .Column)), p)
            End If
          End If
          For k = i To .Row Step -1
            If Cells(k, .Column) <> "" Then Exit For
          Next
          i = k
        Else
          If i = m Then k = m: Set p = Range(Cells(m, .Column), Cells(m, .Column))
        End If
      Next
      If p Is Nothing Then Set p = Range(Cells(.Row, .Column), Cells(m, .Column))
      If .Value <> "" And k <> 0 Then Set p = Union(Range(Cells(.Row, .Column), Cells(k, .Column)), p)
    End If
  End With
  p.Select
End Sub

En prime, ça ne plante pas si la colonne est vide...


Bonne soirée.


ℝOGER2327
#8314

Samedi 21 Tatane 143 (Saints Catoblepas, lord et Anoblepas, amiral - fête Suprême Quarte)
16 Thermidor An CCXXIV, 6,5589h - guimauve
2016-W31-3T15:44:29Z
 
Dernière édition:

Discussions similaires

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

Statistiques des forums

Discussions
312 176
Messages
2 085 961
Membres
103 066
dernier inscrit
bobfils