XL 2010 Trouver la derniere ligne d'une plage de cellule

Kris41

XLDnaute Nouveau
Bonjour à tous,

Je suis entrain de travailler sur un fichier excel et j'essai d'amélioré le code en même temps que le fichier.

Je rencontre un problème. Je n'arrive pas à coder en vba la recherche de la dernière ligne d'une plage de cellule.

Je vous explique, sur la première feuille de calcul nommée RECAPITULATIF, j'ai plusieurs tableaux. Je voudrais trouver la dernière ligne du premier tableau nommé TABLEAU_1 afin d'insérer automatiquement un autre ligne.

Est-ce que quelqu'un pourrait m'aider afin de pouvoir avancer un peu plus dans le code, s'il vous plait ?

Je vous en remercie par avance.

Bonne fin de journée.
 

Pièces jointes

  • TABLEAU DE SUIVI V2 PARTAGE.xlsm
    49.1 KB · Affichages: 35

Kris41

XLDnaute Nouveau
Bonjour à tous,

Hier soir j'ai réussi à mettre un code en place dans ma feuille RECAPITULATIF. En effet, sur cette feuille j'ai plusieurs tableaux chacun étant indépendant l'un des autres. Je voulais insérer une ligne sous la ligne nouvellement remplie que ce soit dans l'un des tableaux et voici le résultat du code que j'ai obtenu.

Code:
'**********************************************************************************************
'CODAGE SUR LE CHANGEMENT DE VALEUR
'**********************************************************************************************

Private Sub Worksheet_Change(ByVal Target As Range)

Dim CELLULECIBLE As Range
Dim CELLULECOPIE As Range

' DESACTIVATION DE LA MISE A JOUR DE L'ECRAN
' CELA PERMET QUE NE PAS VOIR L'ECRAN TREMBLE LORSQUE LE CODE S'EXECUTE

'Application.ScreenUpdating = False

' POSE LA CONDITION DE CONTROLE SEULEMENT SUR LA COLONNE "CREATION FEUILLE"
' SI LA CONDITION N'EST PAS REMPLIE ALORS ON SORT DE LA "SUB"

If Target.Column <> 23 Then Exit Sub

' POSE LA CONDITION DU CHANGEMENT DE VALEUR DANS LA COLONNE "CREATION FEUILLE"
' SI LA CONDITION EST EGALE A RIEN ALORS ON SORT DE LA SUB

If Target.Value = "" Then Exit Sub

' POSE LA CONDITION D'EGALITE A LA LETTRE O POUR OUI
' SI LA CONDITION EST EGALE A O ALORS LA SUITE DU CODE S'EXECUTE

If Target.Value = "O" Then

'********************************************************************************************
' CODAGE SUR L'INSERTION D'UNE LIGNE
'********************************************************************************************

' DECLARE LA DONNEE DE LA VARIABLE ICI ELLE DONNE LA POSITION DE MA VARIABLE :
' LA VARIABLE ETANT LA CELLULE ACTIVE ON LA DEFINIE PAR LA POSITION DE CELLE-CI
' ICI ON CIBLE LA CELLULE EN COLONNE "B" DE LA LIGNE DE DESSOUS

Set CELLULECIBLE = ActiveCell.Offset(1, -22)

' INSERTION D'UNE LIGNE ENTIERE

CELLULECIBLE.EntireRow.Insert

' SELECTION DE LA CELLULE CIBLEE EN VARIABLE

CELLULECIBLE.Offset(-1, 0).Select
[code]

Je pense que le code peut être amélioré mais je ne suis pas encore assez avancé en vba pour cela.

Je vous remercie tous pour l'aide apporté.

Bonne journée.
 

Kris41

XLDnaute Nouveau
Bonsoir Paritec

Dans mon projet de tableur je ne veux pas utiliser de bouton pour ajouter une ligne de saisie dans un tableau qui va évoluer toutes l'année à loins que ce ne soit poir une mise à jour des lignes dans les autres feuilles !

Je te remercie pour l'aide que tu m'apporte !

Cela permet de réfléchir autrement sur certaines situations !

Bonne soirée.
 

Paritec

XLDnaute Barbatruc
Bonsoir Kris41 le forum
bah c'est n'importe quoi ce que tu dis, tu as demandé une insertion de ligne, moi je t'ai mis un bouton mais tu peux lancer la macro avec n'importe quelle commande, un double clique un clique droit, ou autre si tu le dis, on sait faire
Pour le usedrange, cela permet de trouver la dernière ligne utilisée dans un fichier !!!! donc vraiment pas pour ce que tu veux
a+
Papou:)
 

Kris41

XLDnaute Nouveau
Bonsoir Paritec, le forum,

Avant de t'avancer Paritec tu devrais peut-être étudier d'autres options car si je dis n'importe quoi ?comment se fait-il que j'arrive à insérer une ligne à l'emplacement que je veux avec le code que j'ai écrit et cela sans un bouton ou une macro qui serait trop restrictive.

Au moins j'ai le respect d'avant de demander et même après la demande de continuer à rechercher des solutions pour les différents évènements que je veux produire sous excel.

Donc effectivement j'ai demandé une insertion de ligne mais je n'ai pas demandé de bouton, j'ai demandé du code VBA et je n'ai pas demandé une macro. De plus je dois dire que le code vba est plus propre et plus complet que la macro en elle-même.

De plus dans l'insertion de la ligne, il faut bien recherche la dernière ligne utilisé afin de l’insérer à la bonne place quand le tableau évolue avec une saisie. Et pour finir il faudrait lire le titre de cette discussion "Trouver la dernière ligne d'une plage de cellule ".

Merci. Bonne soirée.
 

Paritec

XLDnaute Barbatruc
Bonsoir Monsieur je sais Tout j'ai nommé Kris41 le forum
C'est vrai moi je ne comprends rien, et surtout je t'ai fait une macro, alors que toi tu voulais du vba!!!
Ce que je suis incompétent tout de même.
Mais le ridicule c'est quand même toi avec tes affirmations, car une macro excel c'est justement écrit en vba
et si tu étais capable de lire une macro, donc en vba, tu saurais que ce que j'ai fait c'est justement de chercher la dernière ligne de ton tableau et d'insérer une ligne à la dernière ligne de ton tableau comme demandé en poste 1.
la dernière ligne du premier tableau nommé TABLEAU_1 afin d'insérer automatiquement un autre ligne.
Mais je ne vais pas perdre mon temps à essayer de te convaincre vu ta réponse, tu es un surdoué, du moins tu le penses, moi un nul mais ce n'est pas grave, je vais m'en contenter.
a+
Papou:)
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bonjour
la question est vicieuse malgré tout
la dernière ligne utilisée d'un tableau défini
oui Ok mais il faudrait
  • tester chaque colonne avec .end(xlup) ou (xldown)qué galère
  • usedrange ok mais il te donne toute la plage utilisée de tout le sheets
  • currentregion ok mais si tu a une cellule dans ton tablo entouré que de ligne vide walouh!!!!

tu veux la dernière cellule utilisée dans ton tableau (ligne ou colonne on s'en fou) on y va tout droit

Code:
Sub test()
     Dim plage As Range, C As Range
    Set plage = Range("A1:E23")
    If plage.Cells(plage.Cells.Count) <> "" Then
        C = plage.Cells(plage.Cells.Count)
    Else
        Set C = plage.Find(what:="*", After:=plage.Cells(plage.Cells.Count - 1), SearchDirection:=xlPrevious)
    End If
    Debug.Print C.Address
End Sub
c'est garanti
 

Discussions similaires

Réponses
8
Affichages
274

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 977
dernier inscrit
Hermet