XL 2019 Sélectionner une plage de données variable selon le nombre de ligne

Samulo

XLDnaute Nouveau
Bonjour,

Je reçois un fichier chaque jour dans le cadre de mon travail et la base de données utilisée est variable en ligne. J'aimerai une macro qui sélectionne la zone "jaune" dans le fichier soit jusqu'à la dernière ligne non vide en sachant que chaque jour des lignes s'efface ou se rajoute. Cette sélection de données sera ensuite utiliser pour ma fonction INDEX & EQUIV.

Merci de votre aide,

Samuel
 

Pièces jointes

  • PDP.xlsx
    10.3 KB · Affichages: 15

Staple1600

XLDnaute Barbatruc
Re

Allez un petit jaune, dés le matin ;)
VB:
Sub test()
c = Cells(1, Columns.Count).End(xlToLeft).Column
l = Cells(Rows.Count, 2).End(xlUp).Row
MsgBox Range(Cells(2, 2), Cells(l, c)).Address 'pour test
Range(Cells(2, 2), Cells(l, c)).Select
End Sub
 

Phil69970

XLDnaute Barbatruc
@Samulo
Normal que cela ne fonctionne pas remet la procédure dans la feuil1

1619082618827.png


@Staple1600 c'est encore l'heure du blanc non ! 🤔

@Phil69970
 

Samulo

XLDnaute Nouveau
@Samulo

Si tu veux le mettre dans un module il faut dire à excel de quoi tu parles c'est à dire tu dois lui indiquer la feuille que tu veux....

VB:
Sub Macro1()

With Worksheets("MODIF PDP")
    .Range("B2", .UsedRange.Cells(.UsedRange.Cells.Count)).Select
End With

End Sub

@Phil69970
Parfait j'utilise un Select pour ensuite définir un nom de cette sélection pour pouvoir l'intégrer dans une formule Index.

Comment je peux rajouter le fait de définir un nom pour cette sélection ?
 

Staple1600

XLDnaute Barbatruc
Re

Samuto
Dans ce cas, le select est inutile
On peut nommer directement
VB:
Sub nommer()
x = Columns.Count: xx = Rows.Count
c = Cells(1, x).End(1).Column: DL = Cells(xx, 2).End(3).Row
Range([B2], Cells(DL, c)).Name = "toto"
End Sub
J'ai repris de la simplication de soan
(les syntaxes étant identiques dans le #17 et le #22 pour identifier "dernière ligne et dernière colonne")
 

Samulo

XLDnaute Nouveau
Re

Samuto
Dans ce cas, le select est inutile
On peut nommer directement
VB:
Sub nommer()
x = Columns.Count: xx = Rows.Count
c = Cells(1, x).End(1).Column: DL = Cells(xx, 2).End(3).Row
Range([B2], Cells(DL, c)).Name = "toto"
End Sub
J'ai repris de la simplication de soan
(les syntaxes étant identiques dans le #17 et le #22 pour identifier "dernière ligne et dernière colonne")
J'ai essayé cela ne fonctionne pas.. Cela ne sélectionne pas la bonne plage...
 

Pièces jointes

  • PDP (2).xlsm
    19 KB · Affichages: 4

Staple1600

XLDnaute Barbatruc
Re

Le code fonctionne si les colonnes aprés le tableau sont vides.
Ce qui n'était pas le cas dans ton dernier fichier exemple.
Fais le ménage et retestes
VB:
Sub Macro3()
Dim c&, l&, rng As Range
  c = Cells(1, Columns.Count).End(xlToLeft).Column
  l = Cells(Rows.Count, 2).End(xlUp).Row
  Set rng = Range([D2], Cells(l, c))
  rng.Name = "BASE"
  'ci dessous juste pour test
  With rng
  mess = .Address & vbCr
  mess = mess & .Name.Name & vbCr
  End With
  MsgBox mess
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 734
Messages
2 082 020
Membres
101 872
dernier inscrit
Colin T