une selection de cellules

R

Reeaz

Guest
Bonjour,

j'ai un tableau qui fait 4 collonnes mais dont le nombre de lignes est succeptible de varier.
Je voudrai créer une macro qui ne me selectionne que certaines collonnes sachant que je ne veux pas pas prendre le libellé de la collonne.
Par exmple ds mon fichier je ne voudrais selectionner que la plage C4:E18.
Ma macro est la suivante:

Sub selection()

Sheets("TCDBranch").Select
Range("D4").Select
Range(selection, selection.End(xlDown)).Select
Range(selection, selection.Offset(0, -1)).Select

End Sub

Mais ca ne marche pas!
Cela pourrait être très simple mais comme le nombre de lignes de mon tableau n'est pas toujours pareil, parfois il maque des éléments à mon tableau.

Si qqun pouvait m'aider...

Merci
 

Pièces jointes

  • ex010703.xls
    16.5 KB · Affichages: 48
S

SYL'S

Guest
Salut reeaz,

je te joint ton fichier un peu bricolé...

c'est simple, j'ai défini un nom "maliste" C4:E18 et demandé à la macro d'ouvrir ce nom....même si tu rajoutes des lignes ça marche...

en attendant une solluce de pro..

excellemment votre. syl's le bricolo :)))
 

Pièces jointes

  • Fg.zip
    7.8 KB · Affichages: 29
M

Moa

Guest
Salut Reeaz !

Essaie plutôt ça :


Sub Selection()
Sheets("TCDBranch").Select
Range("C4:e4").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.Offset(1, 0)).Select
End Sub

@ +

Moa
 
M

Moa

Guest
Excuse j'ai oublié de te préciser une petite chose :

Quand tu fais un "Offset", tu indiques en premier la ligne et en second la colonne.

Donc dans ta macro, tu avais demandé la même ligne et la colonne d'avant, alors qu'il te fallait juste demander une ligne supplémentaire.

Tu remarqueras que je demande Range(C4:E4).

Donc, soit tu fais comme ça en demandant tout de suite la largeur du tableau que tu veux sélectionner, ou soit, tu utilises :

Range(Selection, Selection.End(xlToRight)).Select

Voilà !

@ +

Moa
 
T

Ti

Guest
il y a encore plus simple et plus propre :

Sub Selection()
Dim Plage As Range
With Sheets("TCDBranch")
'en attribuant ta plage à une variable, tu peux ainsi éventuellement la réutiliser
'plus tard sans devoir la requalifier
'si tu ne veux l'utiliser qu'une seule fois, tu peux supprimer la variable Plage
'et écrire simplement :
'.Range("C4", .Range("E4").End(xlDown)).Select

Set Plage = .Range("C4", .Range("E4").End(xlDown))
End With
Plage.Select
End Sub
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
351
Réponses
12
Affichages
455

Statistiques des forums

Discussions
312 613
Messages
2 090 233
Membres
104 459
dernier inscrit
Adeline43