Excel - Numérotation sur plusieurs niveaux

Bonjour,

Je souhaiterais, à l'aide d'une Macro, automatiser la numérotation de mes lignes, dans la colonne B, sur 3 niveaux (1, 1.1 et 1.1.1) selon un repère (1, 2 et 3) que j'indiquerais dans la colonne A

Exemple :

colonne A .......... colonne B
repère .............. numérotation

1 ................... 1
2 ................... 1.1
2 ................... 1.2
2 ................... 1.3
3 ................... 1.3.1
3 ................... 1.3.2
2 ................... 1.4

1 ................... 2
2 ................... 2.1
2 ................... 2.2

1 ................... 3
2 ................... 3.1
3 ................... 3.1.1
3 ................... 3.1.2
2 ................... 3.2

Merci d'avance pour votre aide
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. Bonjour Vaucluse,

    Je suis désolé de pas avoir répondu plus tôt, j'ai été fort absent ces derniers temps.

    Tout d'abord merci pour ta proposition mais elle ne me semble pas pratique à l'utilisation vu qu'il faut introduire des chiffres dans les 3 premières colonnes et qu'il faut également penser à dupliquer la formule de la colonne 4.
    Finalement j'ai eu une réponse sur un autre forum qui me convient mieux et me donne vraiment le résultat souhaité.

    Pour ceux que ça intéresseraient je met une copie de la macro ci-dessous

    Sub NOMMACRO()
    Dim i%, j%, k%, Arr%(1 To 99)
    With Worksheets("Métré")
    j = .Range("A65536").End(xlUp).Row
    .Range(.Cells(2, 2), .Cells(j, 3)).Font.Bold = False
    .Range(.Cells(2, 3), .Cells(j, 3)).Font.Underline = xlUnderlineStyleNone
    For i = 2 To j
    k = .Cells(i, 1)
    If k > 0 Then
    .Cells(i, 3) = IIf(k = 1, UCase(.Cells(i, 3)), LCase(.Cells(i, 3)))
    Arr(k) = Arr(k) + 1
    If k < 2 Then Arr(2) = 0
    If k < 3 Then Arr(3) = 0
    If k = 1 Then
    .Cells(i, 2) = Chr(160) & Arr(1)
    .Range(.Cells(i, 2), .Cells(i, 3)).Font.Bold = True
    .Cells(i, 3).Font.Underline = xlUnderlineStyleSingle
    End If
    If k = 2 Then .Cells(i, 2) = Chr(160) & Chr(160) & Arr(1) & "." & Arr(2)
    If k = 3 Then .Cells(i, 2) = Chr(160) & Chr(160) & Chr(160) & Arr(1) & "." & Arr(2) & "." & Arr(3)
    If k > 3 Then .Range(.Cells(i, 1), .Cells(i, 2)).ClearContents
    Else
    .Cells(i, 2).ClearContents
    End If
    Next
    .Cells(i, 1).Activate
    End With
    End Sub

    Encore merci pour ton aide, toutes les suggestions sont toujours les bienvenues
    A bientôt
    Fred
    0
    1. Contributeur
      Bonjour fring
      Disparu?
      ...on aurait pourtant aimé savoir ce que devenait votre problème!
      BCRDLMNT
      0
      1. Contributeur
        Bonjour Fring
        Et pourquoi avec une macro.
        Essayez ci joint , sachant que la présentation peut s'arranger.
        http://www.cijoint.fr/cij75522428732252.xls
        BCRDLMNT
        PS: après vèrif du fichier, ne faits pas attention à l'incréme,ntation de la colonne A au dessous de ligne 25, c'est une erreur. En fait, cela fonctionne comme vous le souhaitez avec 1,2 ou 3, en supposant que, logiquement, il n'y a pas de 3 entre un 1 et un 2.
        0