Selection d'une plage variable

Dror -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous,



Please help, je voudrais selectionner une plage vers le bas, en partant de la cellule active, jusqu'à une ligne que j'ai mémorisé dans "dernlign".

Je m'en sors pas.

J'ai ça

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

mais je voudrais l'arrêter à dernlign.

Merci

3 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour

    Dim plage As Range, debut As String, fin As String

    debut = ActiveCell.Address
    fin = Columns(ActiveCell.Column).Find(what:="*", searchdirection:=xlPrevious).Address
    Set plage = Range(debut & ":" & fin)
    MsgBox plage.Address 'vérif
    0
    1. Dror
       
      oula ! Carrément.

      Et il est où dernlign ?
      A quoi sert la msgbox ?
      0
  2. Theo.R Messages postés 585 Statut Membre 31
     
    Bonjour,

    Je ne suis pas bien sûr d'avoir compris :vous souhaitez sélectionner la plage entre la cellule active en allant vers le bas jusqu'à la cellule en "dernlign" ?

    Si oui, il vous suffit d'un simple Range(...).. pouvez-vous nous donner votre code entier pour identifier au plus simple la cellule active svp ?
    -1
  3. Dror
     
    D'abord, pour identifier la derniere ligne du tableau, je fais :

    Range("B5").Select
    Selection.End(xlDown).Select
    dernlign = Selection.Row

    Puis, plus tard, je me trouve sur une cellule quelconque, et j'ai besoin de selection une plage en partant de cette cellule, en descendant jusqu'à la ligne mémorisée.

    D'habitude, je fais :

    Range("G6:G" & dernlign).Select

    Mais là, je ne suis pas forcément en G.

    Donc j'ai fais :

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

    Mais il va jusqu'en bas.
    -2
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      Essaie ce test, ça te montrera ce qu'est un MsgBox...
      Sub test()
      MsgBox Selection.Address
      MsgBox Split(Selection.Address, "$")(1)
      Dim Lettre As String, dernLign As Long, PremLign As Integer
      PremLign = 6
      dernLign = Range("B5").End(xlDown).Row
      Lettre = Split(Selection.Address, "$")(1)
      MsgBox Range(Lettre & PremLign & ":" & Lettre & dernLign).Address
      End Sub
      0
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention  
         
        bonjour Frank

        dernLign = Range("B5").End(xlDown).Row

        thread bizarre car apparemment non fiable:
        si il y a une cellule vide avant la dernière ligne la ligne renvoyée sera la ligne de cette cellule
        - d'après AV, MVP*Excel, la seule fiable est celle que j'emploie d'après ces conseils.
        Je t'envoie le classeur(utilisation de la fonction "evaluate") en MP

        Quant à Dror, je le remercie pour sa politesse et son esprit particulièrement ouvert...
        • MVP: Most valuable Professional, titre attribué par Maison mère Microsoft et attribué annuellement
        0
      2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772 > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Salut Michel,

        Oui je sais que ce code n'est pas fiable, j'ai fait une fiche pratique à ce sujet...
        J'ai juste repris ce qu'annonce le demandeur.
        Après ma réponse n'a ici qu'un but pédagogique.

        Mais, sinon, tu as raison sur la méthode find : la seule fiable

        A+
        0