1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

XL 2010 Macro sélectionner plage jusqu'à l'avant dernière ligne ???

Discussion dans 'Forum Excel' démarrée par Lvc, 8 Février 2019.

  1. Lvc

    Lvc XLDnaute Nouveau

    Inscrit depuis le :
    11 Janvier 2019
    Messages :
    3
    "J'aime" reçus :
    0
    Hello

    Je recherche à créer une macro pour sélectionner dans un tableau toutes les cellules des colonnes A à Q
    jusqu'à l'avant dernière ligne òu il y a des valeurs.

    Pourquoi : pour ensuite continuer une macro qui copiera toute les données issues de fonctions et ne collera plus que les valeur pour alléger mon fichier ( cette dernière partie ça devrait aller mais c'est la première qui me bloque depuis ce matin.

    Quelqu'un peut-il m'aider svp ???

    Merci d'avance

    Vincent
     
  2. Chargement...


  3. Paf

    Paf XLDnaute Barbatruc

    Inscrit depuis le :
    1 Octobre 2012
    Messages :
    2971
    "J'aime" reçus :
    170
    Utilise:
    Excel 2003 (PC)
    Bonjour,

    pour déterminer la dernière ligne on trouve maints exemples sur le net, en retranchant 1 on devrait trouver l'avant dernière?

    A+
     
  4. Robert

    Robert XLDnaute Barbatruc

    Inscrit depuis le :
    20 Février 2005
    Messages :
    9724
    "J'aime" reçus :
    691
    Habite à:
    Sète
    Utilise:
    Excel 2010 (PC)
    Bonjour le fil, bonjour le forum,

    Plusieurs façons de procéder, entre autres :
    1- Si la colonne A (à adapter) ne comporte pas de trou, donc il n'y a aucune cellule vide entre la première et la dernière. On part du haut et on descend :

    Code (Visual Basic):
    Dim LI As Long
    LI=Cells(1, "A").end(xlDown).Row -1
    2- Si la colonne A (à adapter) a des trous, donc si il y a au moins une cellule vide entre la première et la dernière. On part du bas et on remonte :
    Code (Visual Basic):
    Dim LI As Long
    LI=Cells(Application.Rows.Count, "A").end(xlUp).Row -1
    C'est celle que j'utilise le plus souvent mais à condition qu'il n'y ait aucune données dans la colonne A en dessous de ton tableau...

    Comme l'a dit PAF, le -1 permet de déterminer l'avant dernière...
     
  5. Lvc

    Lvc XLDnaute Nouveau

    Inscrit depuis le :
    11 Janvier 2019
    Messages :
    3
    "J'aime" reçus :
    0
    Hello, désolé pour mon absence, une mauvaise grippe à soigner mais me revoilà.

    Je vous remercie toutes et tous pour vos réponses, toutefois je me permets de repréciser ma demande :
    Ce que ce veux c'est créer une macro pour atteinte une sélection de colonnes et de lignes non vides
    comme ci-dessous, mais ne pas sélectionner la dernière ligne.
    J'ai essayé d'inclure le critère ".Row -1" mais cela ne fonctionne pas, où dois-je le placer ?, cela est-il possible d'utiliser ".Row -1" dans cette macro ??


    Merci d'avance pour votre aide :)


    Vincent
    __________________________________________________________________________________________________
    Sub Dernière_Ligne_T_Syspro()

    Sheets("Syspro").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select
    End Sub
     
  6. Robert

    Robert XLDnaute Barbatruc

    Inscrit depuis le :
    20 Février 2005
    Messages :
    9724
    "J'aime" reçus :
    691
    Habite à:
    Sète
    Utilise:
    Excel 2010 (PC)
    Bonjour le fil, bonjour le forum,

    Je reprends ton premier post. Si ton tableau commence en A1 (à adapter) :

    Code (Visual Basic):

    Sub Macro1()
    Dim O As Worksheet
    Dim PL As Range

    Set O = Sheets("Syspro")
    Set PL = O.Range("A1").CurrentRegion
    Set PL = PL.Resize(PL.Rows.Count - 1, PL.Columns.Count)
    PL.Select
    End Sub
     
  7. Paf

    Paf XLDnaute Barbatruc

    Inscrit depuis le :
    1 Octobre 2012
    Messages :
    2971
    "J'aime" reçus :
    170
    Utilise:
    Excel 2003 (PC)
    re bonjour à tous,

    une autre façon:
    Code (Visual Basic):
    ...
    'En décomposant
    DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row 'une manière courante de déterminer la dernière ligne
    AvantDerniereLigne = DerniereLigne - 1
    Plage = Range("A1:Q" & AvantDerniereLigne)
    'ou
    Plage = Range("A1:Q" & Range("A" & Rows.Count).End(xlUp).Row - 1)
    ...
     
  8. Lvc

    Lvc XLDnaute Nouveau

    Inscrit depuis le :
    11 Janvier 2019
    Messages :
    3
    "J'aime" reçus :
    0
    Hello les amis

    J'ai appliqué les codes proposés et celui de Paf répond exactement à mon besoin.
    Robert, j'ai essayé le tien mais j'ai eu un petit bug et en essayant dans la foulée celui de Paf cela a fonctionné
    alors je l'ai adopté par facilité.
    Je vous remercie vivement pour votre aide, grâce à vous je vais pouvoir alléger mon
    fichier et travailler avec plus de rapidité et moins d'énervement.

    Bon W.E

    Amicalement

    Vincnet
     

Partager cette page