Soyez le premier à donner votre avis sur cette source.
Snippet vu 14 339 fois - Téléchargée 19 fois
' Recherche du numéro de la dernière ligne (vide) du tableau en partant de la ligne en dessous du titre s'il y a ' Feuille: nom de la feuille. Attention pas celui de l'onglet!!! ' Cellules: mettre entre guillemets Ex:"A2" ou "A2:D2" si A1 et le titre du tableau ' Ex: Feuil2.Range("F2").Offset(Derniere_Ligne(Feuil2, "F2")).Value ("F1" est le titre du tableau) Public Function Derniere_Ligne(Feuille As Worksheet, Cellules As String) ' Déclaration d'une variable contenant le numéro de la ligne de départ Dim Ligne_Depart As Long ' Variable d'itération Dim a As Integer ' Variable contenant le numéro de la dernière ligne de la feuille de calcul ' en fonction de la version de excel (2007 dernière cellule=1048576 alors que 2003=65536) Dim Fin As Long ' Variable contenant la lettre de la première colonne Dim PremCol As String ' Variable contenant la lettre de la dernière colonne Dim DernCol As String ' variable contenant la lettre de la celllule temporaire Dim TempCol As String ' variable utilisé si cellules contient plusieurs cellules Dim Premiere As Boolean 'initialisation Premiere = True ' Test pour rechercher "Fin" On Error Resume Next Fin = Feuille.Range("a1048576").Row If Err <> 0 Then Fin = Feuille.Range("a65536").Row Err = 0 End If On Error GoTo 0 ' Découpage du contenu de Ligne_Titre pour ne retenir que le nombre de la première cellule (si A1:C1 retient 1) For a = 1 To Len(Cellules) Select Case Mid(Cellules, a, 1) Case Is = ":" ' Si c'est le premier caractère: mauvaise saisie dans le programme If a = 1 Then MsgBox "Fonction Derniere_Ligne: Cellules erronées...", vbCritical End End If ' sinon la dernière cellule va être donné Premiere = False Case Is = IsNumeric(Mid(Cellules, a, 1)) ' Si c'est un chiffre enregistre dans Ligne_Tire If Premiere Then Ligne_Depart = Ligne_Depart & Mid(Cellules, a, 1) Case Is <> IsNumeric(Mid(Cellules, a, 1)) If Premiere Then PremCol = PremCol & Mid(Cellules, a, 1) Else DernCol = DernCol & Mid(Cellules, a, 1) End If End Select Next a TempCol = PremCol ' si cellules contient plusieurs cellules, cherche le numéro de la ligne la + ' éloignée en cas de cellule vide If Premiere = False Then For a = Asc(PremCol) To Asc(DernCol) If Feuille.Range(TempCol & Fin).End(xlUp).Row < Feuille.Range(Chr(a) & Fin).End(xlUp).Row _ Then TempCol = Chr(a) Next a End If ' Affecte le numéro de la dernière ligne à Derniere_Linge If Feuille.Range(TempCol & Fin).End(xlUp).Row - Ligne_Depart < 0 Then Derniere_Ligne = 0 Else Derniere_Ligne = Feuille.Range(TempCol & Fin).End(xlUp).Row - Ligne_Depart End If End Function
5 janv. 2009 à 22:28
tu devrais regarder un peu comment fonctionne ce site car il existe une partie appelé Codyx et qui sert a publier des codes simples qui sont comme tu le dis toi meme souvent utilisés et reutilisés. Honnetement je ne vois pas l'interet de ce code dans les sources.
A+
5 janv. 2009 à 20:04
Il y a toujours plusieurs façons d'écrire un programme et de méthodes pour exécuter une tache.
Après cela dépend où l'on veut en arriver...
5 janv. 2009 à 19:48
Une autre solution :
Sub Macro1()
Dim Ligne As Long
Dim Colonne As String
Ligne = ActiveCell.SpecialCells(xlCellTypeLastCell).Row
Colonne = ActiveCell.SpecialCells(xlCellTypeLastCell).Column 'colonne en nombre
Colonne = Chr(ActiveCell.SpecialCells(xlCellTypeLastCell).Column + 64) 'colonne en lettre
End Sub
A+
Eric
5 janv. 2009 à 18:28
Il y a peut-être plus simple :
Sub Macro1()
Dim Ligne As Long
Dim Colonne As String
Selection.SpecialCells(xlCellTypeLastCell).Activate
Ligne = ActiveCell.Row
Colonne = Left$(ActiveCell.Address(0, 0), (ActiveCell.Column < 27) + 2)
End Sub
Non ?
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.