Probleme en vba pour trouver dernière cellule remplie d'une ligne

donpopo

XLDnaute Occasionnel
Bonjour, le forum,

D'ordinaire, j'arrive à maîtriser la ligne de commande :
Columns.Count).End(xlToLeft).Value
Celle-ci me renvoie bien la valeur de la dernière cellule remplie d'une ligne; cette ligne est remplie manuellement par mes soins et ne comporte pas de formule.

Cependant, lorsque j'essaie de procéder de la même manière sur une ligne qui possède des formules dans chaque cellule, cette commande ne me renvoie rien.
Est-ce à cause des formules reprises dans ces cellules?
Si oui, y a t'il une solution à ce problème?

D'avance, merci de votre attention,

donpopo
 

Staple1600

XLDnaute Barbatruc
Bonsoir

Voir ci-dessous
VB:
Sub test()
With ActiveSheet
m = "Colonne: " & .Cells(1, .Columns.Count).End(xlToLeft).Column & Chr(13)
m = m & "Adresse cellule: " & .Cells(1, .Columns.Count).End(xlToLeft).Address(0, 0)
End With
MsgBox m, vbInformation, "Test"
End Sub
 

job75

XLDnaute Barbatruc
Bonjour donpopo, JM,

Voyez le fichier joint, la macro repère la dernière cellule ne contenant pas le texte vide "" :
VB:
Sub DerCol()
Dim i As Integer
With Feuil1.UsedRange.Rows(1)
    For i = .Columns.Count To 1 Step -1
        If .Cells(i) <> "" Then
            MsgBox "Dernière valeur non vide : " & .Cells(i) & " dans " & .Cells(i).Address(0, 0)
            Exit Sub
        End If
    Next
End With
MsgBox "Toutes les cellules sont vides ou contiennent le texte vide """"..."
End Sub
 

Pièces jointes

  • Dernière colonne(1).xlsm
    21.4 KB · Affichages: 12

Staple1600

XLDnaute Barbatruc
Re,

Address(0,0) permet d'afficher l'adresse d'une cellule sans les $
Ci-dessous un petit test "explicatif"
VB:
Sub test_2()
MsgBox Range("A1").Address(RowAbsolute = 1, columnAbsolute = 1, xlA1), vbExclamation
'qui peut se résumer en:
MsgBox Range("A1").Address(0, 0, xlA1), vbInformation
'ou encore en
MsgBox [A1].Address(0, 0), vbMsgBoxRight
End Sub
 
Dernière édition:

job75

XLDnaute Barbatruc
On peut éviter la boucle For en évaluant une formule Excel (matricielle) :
VB:
Sub DerCol()
Dim i As Integer
With Feuil1.UsedRange.Rows(1)
    i = Evaluate("MAX((" & .Address & "<>"""")*COLUMN(" & .Address & "))")
    If i Then MsgBox "Dernière valeur non vide : " & .Cells(i) & " dans " & .Cells(i).Address(0, 0) _
        Else MsgBox "Toutes les cellules sont vides ou contiennent le texte vide """"..."
End With
End Sub
Fichier (2).
 

Pièces jointes

  • Dernière colonne(2).xlsm
    21.7 KB · Affichages: 8

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 009
Membres
101 865
dernier inscrit
MLL