Dernière colonne non vide d'une ligne DE TABLEAU

Bonjour,

Je cherche à mettre une requête dans mon code vba qui irait chercher la dernière colonne non vide d'une ligne (à partir d'une certaine colonne, en l'occurence colonne 50) de mon tableau qui fait 98 colonnes.

J'utilise ce code :

Private Sub RemplissageSéance()
  Dim dercol
  dercol = Cells(2, Columns.Count).End(xlToLeft).Column

  If dercol > 49 Then
    TextBox51.Value = f.Cells(2, dercol)
  End If
End Sub

Mais il me donne systématiquement dercol = 98, alors que je n'ai rien après la 10ème colonne... j'ai l'impression que du moment que c'est un tableau, il considère que la colonne n'est pas vide.

Est-ce bien le problème ? Et si oui comment y remédier svp ?

Merci

Bonjour à tous !

Arnnaud, comme ceci peut-être

Private Sub RemplissageSéance()
  Dim dercol
  dercol = Cells(2, Columns.Count).End(xlToLeft).Column

  If f.cells(2,dercol) > 49 Then
    TextBox51.Value = f.Cells(2, dercol)
  End If
End Sub

@Nordik_Nation salut,

Merci de ton message, mais si je comprends il change la condition qui devient "si le contenu de la dernière cellule est supérieur à 49 alors...".

Mais dans mon cas je souhaite "si la dernière cellule est dans une colonne après la colonne 49 alors...".

Et surtout le problème n'est pas là, le problème est que la dernière cellule non vide trouvée de la ligne 2 est toujours la dernière colonne du tableau, même si elle est vide !

Il me sort dercol = 98 car mon tableau fait 98 colonnes, et si je rajoute 2 colonnes vides au tableau, il me sort dercol = 100...

Je joins mon tableau au cas où

Bonjour le fil, Arnnaud

Comme ceci normalement

Private Sub RemplissageSéance()
  Dim dercol
  dercol = Cells(2, 50).End(xlToRight).Column
  If dercol >= 50 Then  TextBox51.Value = f.Cells(2, dercol)
End Sub

A+

Bonjour,
Une autre proposition à adapter.
Cdlt.

Option Explicit

Public Sub RemplissageSéance()
Dim ws As Worksheet, lo As ListObject, lastCol As Long

    Set ws = Worksheets("Bilan 1")
    Set lo = ws.ListObjects("Tableau1")
    lastCol = LastUsedColInTable(lo, 2)

    If lastCol > 49 Then
        TextBox51.Value = ws.Cells(2, lastCol)
    End If

End Sub

Private Function LastUsedColInTable(tbl As ListObject, lRow As Long) As Long
Dim Cell As Range

    With tbl.Range.Rows(lRow)
        Set Cell = .Find(what:="*", After:=.Cells(1), LookIn:=xlValues, _
             searchorder:=xlByColumns, SearchDirection:=xlPrevious)
        If Not Cell Is Nothing Then
            LastUsedColInTable = Cell.Column
        Else
            LastUsedColInTable = 1
        End If
    End With

End Function

@BrunoM45 merci pour le code, mais il me sort la première colonne non vide après la 50ème et non la dernière colonne non vide après la 50ème :/

Par contre @Jean-Eric ça a l'air de bien fonctionner !

Je vais le tester un peu plus mais pour l'instant c'est top merci beaucoup!

J'ai juste changé ceci :

        TextBox51.Value = ws.Cells(LigneSrc, lastCol)

Avec ma LigneSrc en fonction du patient sélectionné, ça a l'air de fonctionner toujours.

Par contre j'ai l'habitude de mettre mes sub en private sub, est-ce que cela change quelque chose de le mettre en public ?

Merci encore

Re

@BrunoM45 merci pour le code, mais il me sort la première colonne non vide après la 50ème et non la dernière colonne non vide après la 50ème

dercol = Cells(2, 50).End(xlToRight).Column + 1

Bon il fallait le savoir

Re,

dercol = Cells(2, 50).End(xlToRight).Column + 1

hum, là ça rajoute juste 1 au numéro de la première colonne non vide après 50, mais pas la dernière colonne non vide après 50

Re,

Arf oui... punaise je me mélange les pinceaux (j'ai besoin de sommeil)

Pas de souci, merci quand même

Après quelques tests j'ai l'impression que la proposition de Jean-Eric marche nickel! Je l'aurai pas pondu tout seul par contre

Merci beaucoup pour moi c'est bon

Re,

Pour la solution de Jean-Eric, il ne peut y avoir aucun doute c'est toujours

Rechercher des sujets similaires à "derniere colonne vide ligne tableau"