OVH Cloud OVH Cloud

recherche dernière cellule d'une ligne, récupérer sa valeur

3 réponses
Avatar
Seb86
Bonjour,
Voilà j'ai une base de donnée classique,
Code client, nom, prénom etc...
à partir de la dernière colonne, je rentre les dates de visites du clients.
Toutes mes colonnes sont nommées, sauf évidemment à partir des dates de visite.
Je voudrais donc pouvoir savoir ou est la dernière cellule pleine de la ligne pour récupérer sa valeur dans une text box, le dernière visite, et dans la cellule de droite inscrire la date du jour de la visite en cours.

Voilà ce qui est en place,

La variable LnumL permet de connaitre le numéro de ligne pour différencier l'enregistrement d'un nouveau client de celle d'une modification de données

Dim DerCol As Long

'cherche la dernière colonne pleine
DerCol = Cells(LnumL, Cells.Columns.Count).End(xlLeft).Column


'à l'enregistrement
Cells(LnumL, Range("Courriel").Column) = Me.TBCourriel.Text
Cells(LnumL, Range("Technique").Column) = Me.TBTechnique.Text
Cells(LnumL, Range("Creation").Column) = Me.TBCreation.Text

'partie du code que je ne trouve pas à faire
Cells(LnumL, dercol+1.column) = Me.TBDateJour.Text

'à la lecture
Me.TBCode_Client.Text = Cells(kelligne, Range("Code_Client").Column)
Me.TBCreation.Text = Cells(kelligne, Range("Creation").Column)

'partie du code que je n'arrive pas à faire
Me.TBDateDerVis.Text = Cells(kelligne, DerCol.Column)

J'espère avoir été assez compréhensible dans ma requête.

D'avance merci.
Seb.

3 réponses

Avatar
Michd
Bonjour,
Dans la procédure, j'utilise ceci :
With Feuil1 'OU Worksheets("Feuil1")
Feuil1 représente la propriété "Name" de l'objet Worksheet
Feuil1 dans l'expression Worksheets("Feuil1") représente le nom de l'onglet de la feuille.
Les 2 cas de figure peuvent être utilisés. Il est préférable d'utiliser le nom de la propriété de
l'objet Worksheet "Feuil1")
pour les raisons suivantes :
A ) Même si tu modifies le nom de l'onglet, cela ne touche pas le fonctionnement d'une macro
B ) Après avoir tapé le point après "Feuil1", la liste des propriétés et méthodes de l'objet
s'affiche. Tu n'as pas à les mémoriser et son usage évite les fautes d'orthographe dans le code.
C ) L'exécution du code est plus rapide (même si ce n'est pas évident pour une petite procédure)
l'humain ne fonctionne pas en nanosecondes!
'-------------------------------------------------------------
Sub test()
Dim DerCol As Long
'Le 1 c'est pour la ligne 1
With Feuil1 'OU Worksheets("Feuil1")
DerCol = .Rows(1).End(xlToRight).Column
MsgBox Feuil1.Cells(1, DerCol).Value
End With
'suppose que tu veux as plusieurs lignes et que tu
'veux connaître la dernière colonne occupée par
'une valeur, peu importe la ligne. Il n'y pas
'nécessairement une valeur pour chacune des lignes
'de cette dernière colonne.
With Feuil1 'OU Worksheets("Feuil1")
DerCol = .Range("1:5").Find("*", LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
'Même chose dans le cas où tu as des formules qui retournent
'des valeurs au lieu de valeurs dans les cellules.
DerCol = .Range("1:5").Find("*", LookIn:=xlValues, _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
End With
End Sub
'-------------------------------------------------------------
MichD
"Seb86" a écrit dans le message de groupe de discussion :
Bonjour,
Voilà j'ai une base de donnée classique,
Code client, nom, prénom etc...
à partir de la dernière colonne, je rentre les dates de visites du clients.
Toutes mes colonnes sont nommées, sauf évidemment à partir des dates de visite.
Je voudrais donc pouvoir savoir ou est la dernière cellule pleine de la ligne
pour récupérer sa valeur dans une text box, le dernière visite, et dans la
cellule de droite inscrire la date du jour de la visite en cours.
Voilà ce qui est en place,
La variable LnumL permet de connaitre le numéro de ligne pour différencier
l'enregistrement d'un nouveau client de celle d'une modification de données
Dim DerCol As Long
'cherche la dernière colonne pleine
DerCol = Cells(LnumL, Cells.Columns.Count).End(xlLeft).Column
'à l'enregistrement
Cells(LnumL, Range("Courriel").Column) = Me.TBCourriel.Text
Cells(LnumL, Range("Technique").Column) = Me.TBTechnique.Text
Cells(LnumL, Range("Creation").Column) = Me.TBCreation.Text
'partie du code que je ne trouve pas à faire
Cells(LnumL, dercol+1.column) = Me.TBDateJour.Text
'à la lecture
Me.TBCode_Client.Text = Cells(kelligne, Range("Code_Client").Column)
Me.TBCreation.Text = Cells(kelligne, Range("Creation").Column)
'partie du code que je n'arrive pas à faire
Me.TBDateDerVis.Text = Cells(kelligne, DerCol.Column)
J'espère avoir été assez compréhensible dans ma requête.
D'avance merci.
Seb.
Avatar
isabelle
Bonjour,
essayer comme ça,
DerCol = Cells(LnumL, Cells.Columns.Count).End(xlToLeft).Column
isabelle
Le 2018-07-07 à 10:13, Seb86 a écrit :
Bonjour,
Voilà j'ai une base de donnée classique,
Code client, nom, prénom etc...
à partir de la dernière colonne, je rentre les dates de visites du clients.
Toutes mes colonnes sont nommées, sauf évidemment à partir des dates de visite.
Je voudrais donc pouvoir savoir ou est la dernière cellule pleine de la ligne
pour récupérer sa valeur dans une text box, le dernière visite, et dans la
cellule de droite inscrire la date du jour de la visite en cours.
Voilà ce qui est en place,
La variable LnumL permet de connaitre le numéro de ligne pour différencier
l'enregistrement d'un nouveau client de celle d'une modification de données
Dim DerCol As Long
'cherche la dernière colonne pleine
DerCol = Cells(LnumL, Cells.Columns.Count).End(xlLeft).Column
'à l'enregistrement
Cells(LnumL, Range("Courriel").Column) = Me.TBCourriel.Text
Cells(LnumL, Range("Technique").Column) = Me.TBTechnique.Text
Cells(LnumL, Range("Creation").Column) = Me.TBCreation.Text
'partie du code que je ne trouve pas à faire
Cells(LnumL, dercol+1.column) = Me.TBDateJour.Text
'à la lecture
Me.TBCode_Client.Text = Cells(kelligne, Range("Code_Client").Column)
Me.TBCreation.Text = Cells(kelligne, Range("Creation").Column)
'partie du code que je n'arrive pas à faire
Me.TBDateDerVis.Text = Cells(kelligne, DerCol.Column)
J'espère avoir été assez compréhensible dans ma requête.
D'avance merci.
Seb.
Avatar
seb86
Le samedi 07 Juillet 2018 à 16:13 par Seb86 :
Bonjour,
Voilà j'ai une base de donnée classique,
Code client, nom, prénom etc...
à partir de la dernière colonne, je rentre les dates de visites
du clients.
Toutes mes colonnes sont nommées, sauf évidemment à partir
des dates de visite.
Je voudrais donc pouvoir savoir ou est la dernière cellule pleine de la
ligne pour récupérer sa valeur dans une text box, le
dernière visite, et dans la cellule de droite inscrire la date du jour
de la visite en cours.
Voilà ce qui est en place,
La variable LnumL permet de connaitre le numéro de ligne pour
différencier l'enregistrement d'un nouveau client de celle d'une
modification de données
Dim DerCol As Long
'cherche la dernière colonne pleine
DerCol = Cells(LnumL, Cells.Columns.Count).End(xlLeft).Column
'à l'enregistrement
Cells(LnumL, Range("Courriel").Column) = Me.TBCourriel.Text
Cells(LnumL, Range("Technique").Column) = Me.TBTechnique.Text
Cells(LnumL, Range("Creation").Column) = Me.TBCreation.Text
'partie du code que je ne trouve pas à faire
Cells(LnumL, dercol+1.column) = Me.TBDateJour.Text
'à la lecture
Me.TBCode_Client.Text = Cells(kelligne,
Range("Code_Client").Column)
Me.TBCreation.Text = Cells(kelligne, Range("Creation").Column)
'partie du code que je n'arrive pas à faire
Me.TBDateDerVis.Text = Cells(kelligne, DerCol.Column)
J'espère avoir été assez compréhensible dans ma
requête.
D'avance merci.
Seb.
Bonjour
Merci pour les réponses, je vais travailler dessus, je tiens au courant des résultats
Seb