Comment mettre en forme la numérotation automatique jusqu'à la derniére cellule.

nicolasvb

XLDnaute Nouveau
J'ai un tableau de données et je voudrais permettre à l'utilisateur de sélectionner la cellule où commencer la numérotation et la colonne à prendre en compte.
J'utilise la methode inputbox pour obtenir les deux range choisis par l'utilisateur.

C'est pour avoir la numérotation automatique jusqu'à la dernière cellule non vide de la colonne à prendre en compte que je bloque.
Voici le code que j'ai essayé sans succès jusqu'à maintenant:
Code:
Private Sub Numauto()
Dim CelSel As Variant
Dim Colréf As Variant
Set CelSel = Application.InputBox("Veuillez sélectionner la cellule où commencer la numérotation", Type:=8) ' obtention du range de la cellule de départ de la numérotation
Set Colréf = Application.InputBox("Veuillez Sélectionner une cellule de la colonne de référence", Type:=8) ' la colonne de référence est la colonne qui déterminera la fin de la numérotation
i = CelSel.Row
j = CelSel.Column
k = Colréf.Column
Cells(i, j).Value = 1
'Range(Cells(i,j),Cells(Cells(Rows.Count, k).End(xlUp).row,k).Formulalocal = "=CelSel+1"  ' c'est là que je m'embrouille complétement!
End Sub

En vous remerciant par avance de vos suggestions.
Nicolasvb
 

Pièces jointes

  • numauto.xls
    33.5 KB · Affichages: 125
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Comment mettre en forme la numérotation automatique jusqu'à la derniére cellule.

Bonjour.
Comme ça, me parait rendre le résultat souhaité :
VB:
Sub Numauto()
Dim CelSel As Range
Dim ColRéf As Range
Set CelSel = Application.InputBox("Veuillez sélectionner la cellule où commencer la numérotation", Type:=8) ' obtention du range de la cellule de départ de la numérotation
Set ColRéf = Application.InputBox("Veuillez Sélectionner une cellule de la colonne de référence", Type:=8) ' la colonne de référence est la colonne qui déterminera la fin de la numérotation
Set ColRéf = ColRéf.End(xlDown)
CelSel.Resize(ColRéf.Row - CelSel.Row + 1).FormulaLocal = "=LIGNE()-" & CelSel.Row - 1
End Sub
À +
 

Philippe68

XLDnaute Occasionnel
Re : Comment mettre en forme la numérotation automatique jusqu'à la derniére cellule.

Bonjour à tous,

Afin de comprendre ton code Dranreb, à quel moment peux-t'on l'utiliser et qu'entend-t'on par "colonne de réfèrence" ?

Peux-t'on avoir la colonne de numérotation et de référence dans la même colonne ? (selectionner la même cellule quoi)
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Comment mettre en forme la numérotation automatique jusqu'à la derniére cellule.

Bonjour.
et qu'entend-t'on par "colonne de réfèrence" ?
J'ai considéré que le demandeur entendait par colonne de référence celle dans laquelle on cherche une dernière cellule renseignée à partir de celle indiquée, à la même ligne que laquelle la numérotation doit se terminer.
Peux-t'on avoir la colonne de numérotation et de référence dans la même colonne ? (selectionner la même cellule quoi)
Uniquement pour refaire une numérotation existante devenue fausse je suppose: Sur une colonne contenant d'autres données ça les écraserait par la numérotation, et sur une vide ça ne marcherait pas.
Cordialement
 

ROGER2327

XLDnaute Barbatruc
Re : Comment mettre en forme la numérotation automatique jusqu'à la derniére cellule.

Bonsoir à tous


Une proposition :
VB:
Sub Numauto1()
Dim CelSel As Variant
Dim Colréf As Variant
Dim i&, j&, k&
    Set CelSel = Application.InputBox("Veuillez sélectionner la cellule où commencer la numérotation", Type:=8) ' cellule de départ de la numérotation
    Set Colréf = Application.InputBox("Veuillez Sélectionner une cellule de la colonne de référence", Type:=8)  ' la colonne de référence est la colonne dont la ligne de la dernière cellule non vide déterminera la fin de la numérotation
    i = CelSel.Row
    j = CelSel.Column
    k = Cells(Rows.Count, Colréf.Column).End(xlUp).Row
    If k >= i Then Cells(i, j).Value = 1
    If k > i Then Range(Cells(i + 1, j), Cells(k, j)).FormulaLocal = "=" & CelSel.Address(0, 0) & "+1"
End Sub


ROGER2327
#5400


Mercredi 25 Décervelage 139 (Saint Petiot, expert - fête Suprême Quarte)
2 Pluviôse An CCXX, 7,3071h - mousse
2012-W03-7T17:32:13Z
 

ROGER2327

XLDnaute Barbatruc
Re : Comment mettre en forme la numérotation automatique jusqu'à la derniére cellule.

...


Et une autre évitant de surcharger la feuille de formules :
VB:
Sub Numauto2()
Dim CelSel As Variant
Dim Colréf As Variant
Dim i&, j&, k&, l&, a&()
    Set CelSel = Application.InputBox("Veuillez sélectionner la cellule où commencer la numérotation", Type:=8) ' cellule de départ de la numérotation.
    Set Colréf = Application.InputBox("Veuillez Sélectionner une cellule de la colonne de référence", Type:=8)  ' la colonne de référence est la colonne dont la ligne de la dernière cellule non vide déterminera la fin de la numérotation.
    i = CelSel.Row
    j = CelSel.Column
    k = Cells(Rows.Count, Colréf.Column).End(xlUp).Row
    If k >= i Then
        ReDim a&(1 To 1 + k - i, 0)
        For l = 1 To 1 + k - i: a(l, 0) = l: Next
        Range(Cells(i, j), Cells(k, j)).Value = a
    End If
End Sub


ROGER2327
#5401


Mercredi 25 Décervelage 139 (Saint Petiot, expert - fête Suprême Quarte)
2 Pluviôse An CCXX, 7,3288h - mousse
2012-W03-7T17:35:21Z
 

Discussions similaires

Statistiques des forums

Discussions
312 223
Messages
2 086 397
Membres
103 200
dernier inscrit
pascalgip