Sélection jusqu'à la dernière cellule avec valeur

Bonjour,

J'essaye de sélectionner une plage jusqu'à la dernière ligne avec une valeur (cette dernière étant variable). La zone concerné est de A1:J, sachant que les variables ne commencent qu'à partir de la ligne 9.

Je pense toucher au but avec :

Sub TEST()
    ligfin = Columns("J").Find("*", Range("J9"), , , , xlPrevious).Row
    Range("A1:J" & ligfin).Select
End Sub

Cependant, avec ce code, je sélectionne même les lignes avec une valeur = ""

Je n'arrive pas à intégrer la condition que la sélection s'arrête à la dernière ligne avec une valeur et ne pas prendre les vide malgré les formules de calcule.

Désolé, je ne peux pas partager le document cette fois à cause de données confidentielles.

Merci

Essayez ceci :

Sub Test()
    Dim y As Integer, x As Integer, i As Integer, j As Integer
    Dim iD As Long

    y = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    x = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column

    For j = y To 1 Step -1
        iD = 0
        For i = 1 To x
            If ActiveSheet.Cells(j, i) <> "" Then
                iD = j
                Exit For
            End If
        Next i
        If iD = j Then Exit For
    Next j
    MsgBox iD
End Sub

Edit : pas réveillé, j'avais oublié le code

Bonjour,

Essayez avec ceci, mais cela sélectionne les lignes entières.

Sub TEST()
    ligfin = Columns("J").Find("*", , , , , xlPrevious).Row
    For i = 1 To ligfin
        If Cells(i, "J") <> "" Then
            LigTot = LigTot & ", " & i & ":" & i
        End If
    Next i
    Range(Right(LigTot, Len(LigTot) - 2)).Select
End Sub

ou ceci qui s'arrête a la colonne J

Sub TEST()
    ligfin = Columns("J").Find("*", , , , , xlPrevious).Row
    For i = 1 To ligfin
        If Cells(i, "J") <> "" Then
            LigTot = LigTot & ", A" & i & ":J" & i
        End If
    Next i
    Range(Right(LigTot, Len(LigTot) - 2)).Select
End Sub

Cdlt

Bonjour,

Une autre façon de faire :

Sub TEST()
  Dim C As Range
  With Columns("J")
    Set C = .Find("*", Range("J9"), , , , xlPrevious)
    Do While C = ""
        Set C = .FindNext(C)
    Loop
    C.Select
  End With
End Sub

Daniel

Et avec Excel 2021 (à tester) :

Sub test2()
  With Application
  .Index([J:J], .XMatch("*", [J:J], 2, -1)).Select
  End With
End Sub

Daniel

Désolé, aucune d emes deux propositions ne fonctionne

Bonjour, et merci pour vos réponses aussi rapide.

DanielC, en effet ça ne marche pas. La 1ere sélectionne juste la cellule J9 et la 2e fait la même chose que ma formule actuel.

Arturo83, j'ai une erreur "range de l'objet _global a échoué" pour la ligne - Range(Right(LigTot, Len(LigTot) - 2)).Select -

Peut être car incompatible avec le version d'Excel que nous avons.

Optimix, le classeur étant protégé pour évité des modification non voulu, la macro est bloqué dès le début à - y = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row -

Quand j'enlève la protection j'ai une erreur "incompatibilité de type" avec la ligne - If ActiveSheet.Cells(j, i) <> "" Then -

Merci de vous pencher sur ce petit casse-tête

Bonjour,

On ne connait pas votre version d'excel.

Pour obtenir une réponse correcte et adaptée à vos besoins, il serait judicieux que vous déposiez un fichier (sans données confidentielles).

Cdlt

Avez-vous un pb avec ce bout de code ?

7derligne.xlsm (22.74 Ko)

bonjour le fil,

je pense que ceci fonctionne dans toutes les versions

Sub TEST()
     Dim c     As Range, ligne, b
     Set c = Columns("J").Find("*", Range("J1"), , , , xlPrevious)
     b = (c Is Nothing)
     If Not b Then b = (c.Row < 9)
     If b Then MsgBox "erreur": Exit Sub
     Range("J9:J" & c.Row).Name = "Ti_ti"
     ligne = Evaluate("max(if(Ti_ti<>"""",row(Ti_ti),0))")
     Range("A1:J1").Resize(ligne).Select
End Sub

Sub TEST1()
     Dim ligne
     ligne = Evaluate("max(if(J:J<>"""",row(J:J),0))")
     If ligne >= 9 Then
          Range("A1:J1").Resize(ligne).Select
     Else
          MsgBox "erreur"
     End If
End Sub

Merci BsAlv, les 2 codes que tu a fait fonctionnent. J'ai préféré le 2e car plus cours.

Désolé de ne pas avoir pu partager le document, mais je ne pouvait vraiment pas sans risqué de divulguer des infos confidentielles.

Encore merci à tous pour votre aide.

Rechercher des sujets similaires à "selection derniere valeur"