incrémentation de numérotation ligne

pierre4

XLDnaute Occasionnel
bonjour,
je souhaite incrémenter des lignes de mon devis à partir de la 1ere cellule en tirant vers le bas et en "incrémentant par exemple toutes les 4 cellules... :)

A
A1.1
A1.2
A1.3
A2.1
A2.2
A2.3....etc...
y a t il une solution en tirant vers le bas.
merci beaucoup
 

Pièces jointes

  • numérotation ligne.xlsm
    14.6 KB · Affichages: 451

job75

XLDnaute Barbatruc
Re : incrémentation de numérotation ligne

Re Pierre,

Etant sous Excel 2003, je n'avais pas ouvert votre fichier.

Je l'ai finalement ouvert sur mon portable avec Excel 2010.

Il faut apparemment un pas de 4 cellules en effet, donc :

Code:
="A"&2+ENT((LIGNES(A$1:A1)-5)/4)&"."&1+MOD(LIGNES(A$1:A1)-1;4)
Mais vous demandez bien plus, en particulier des mises en forme il me semble :eek:

Et alors là il faut une macro, je verrai ça quand j'aurai un peu de temps.

A+
 

pierre4

XLDnaute Occasionnel
Re : incrémentation de numérotation ligne

bonjour Job75,
merci pour ta proposition, cela marche bien tous les 4...
ce que je souhaite c'est ce qu'il y a en vert dans mon exemple...
soit: A ...puis B...si B (ou XXX) alors B1.1...B2.1...XXX1.1...XXX.2.1....
A
A1.1
A1.2
A1.3
A2.1
A2.2
A2.3....etc...
B
B1.1
B1.2
B1.3
B2.1
B2.2
B2.3....etc...
vous pouvez ne pas tenir compte de la couleur, par compte Plafond sera toujours Gras...
à bien regarder colonne E...
si je supprime une ligne, l'incrémentation tous les 4 n'est pas bonne, elle ne tiens pas compte de B...
merci, à+
bonne journée
Pierre
 

pierre4

XLDnaute Occasionnel
Re : incrémentation de numérotation ligne

bonsoir

voilà quelque chose qui me paraît bien sur le forum , j'ai trouvé cette formule...
:)
mais à adapter?
Pierre
 

Pièces jointes

  • essai pagination.xlsm
    10.3 KB · Affichages: 250

pierre4

XLDnaute Occasionnel
bonjour Job 75,
j'ai trouvé une formule,en E4 ... SI(H4="";"";MAX(E$1:E3)+0.1) :)
mais n'y arrivant pas parfaitement, j'ai fait une 1ere colonne D:D
mon incrémentation me plaît sauf la colonne D -- D3 D22etc... ou je n'arrive pas à incrémenter de 1 à suivre.(j'ai essayé en filtrant,mais ca ne marche pas)
peut être avez vous un tuyau?
une incrémentation en sautant des cellules vides est ce possible ..de titre en titre...plafond---murs...
:confused:
merci
Pierre
 

Pièces jointes

  • essai devis.xlsm
    253.3 KB · Affichages: 131
  • essai devis.xlsm
    253.3 KB · Affichages: 144
  • essai devis.xlsm
    253.3 KB · Affichages: 144

job75

XLDnaute Barbatruc
Re : incrémentation de numérotation ligne

Re,

Je me suis basé sur le 1er fichier (post #1), ça suffit bien il me semble.

La macro dan le code de la feuille (clc droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [F:F]) Is Nothing Then Exit Sub
Dim plage As Range, cel As Range, n1&, n2&, n3&
'---initialisations---
Set plage = Range("D1:D" & Application.Max([E65536].End(xlUp).Row, [F65536].End(xlUp).Row))
plage.Clear
[E:G].Borders.LineStyle = xlNone
plage.HorizontalAlignment = xlLeft
Application.ScreenUpdating = False
On Error Resume Next 'à cause de la 1ère ligne
'---construction de la colonne D---
For Each cel In plage
  With cel.Offset(, 2) 'colonne F
    If .Font.Underline = xlSingle And .Offset(-1).Font.Underline = xlNone Then
      cel = n1
      n1 = n1 + 1
      cel.Font.FontStyle = "Gras"
      cel.Font.ColorIndex = 3
      cel.Borders(xlEdgeTop).LineStyle = xlContinuous
    ElseIf .Font.Underline = xlSingle And .Offset(-1).Font.Underline = xlSingle Then
      If cel.Row > 1 Then
        n2 = 0
        cel = Chr(64 + n1)
        cel.Font.FontStyle = "Gras"
        cel.Borders(xlEdgeTop).LineStyle = xlContinuous
      End If
    ElseIf .Font.FontStyle = "Gras" And .Font.Underline = xlNone Then
      n2 = n2 + 1
      n3 = 1
      cel = Chr(64 + n1) & n2 & ".1"
      cel.Font.FontStyle = "Gras"
      cel.Font.ColorIndex = 3
      cel.Resize(, 4).Borders(xlEdgeTop).LineStyle = xlContinuous
    Else
      n3 = n3 + 1
      cel = Chr(64 + n1) & n2 & "." & n3
    End If
  End With
Next
End Sub
La macro se déclenche chaque fois qu'on modifie (valide) une cellule en colonne F.

Elle n'a rien de bien compliqué, mais il faut faire attention... C'est un peu casse-bonbons...

J'espère que ça vous suffira comme exemple de ce que l'on peut faire.

Nota : fichier en .xls pour que tout le monde en profite...

A+
 

Pièces jointes

  • numérotation ligne(1).xls
    54.5 KB · Affichages: 193

job75

XLDnaute Barbatruc
Re : incrémentation de numérotation ligne

Re,

Une précision importante.

Il n'y a pas d'évènement lié à une modification de format (police ou autre).

Donc avant de modifier le contenu d'une cellule en colonne F, appliquer la bonne police (Gras ou souligné) pour servir de référence à la macro.

A+
 

pierre4

XLDnaute Occasionnel
Re : incrémentation de numérotation ligne

bonjour JOB75,

pouvez vous "rectifier le tir" pour:
-à tx localisation ...je souhaite un chiffre
-à tx pièce...je souhaite une lettre

sinon c'est super:D, cela me convient bien, on peut supprimer copier une ligne,cela ce met à jour automatiquement.
un grand merci Job! et au forum
bonsoir
Pierre
 

pierre4

XLDnaute Occasionnel
Re : incrémentation de numérotation ligne

Job75,
ci joint mon fichier,
- pouvez vous supprimer la colonne jaune D:D,
-et faire la numérotation sur E:E

les cellules en vert se développent en double clic...

!!! il y a déjà du vba grace au forum, je n'arrive pas à insérer votre code vba...

merci beaucoup
 

Pièces jointes

  • devis.zip
    109.5 KB · Affichages: 70
  • devis.zip
    109.5 KB · Affichages: 73
  • devis.zip
    109.5 KB · Affichages: 74

job75

XLDnaute Barbatruc
Re : incrémentation de numérotation ligne

Re,

OK je n'avais pas compris...

Mais pas encore sûr d'avoir compris pour les chiffres (txLocalisation).

En fait la macro est un peu plus simple :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [F:F]) Is Nothing Then Exit Sub
Dim plage As Range, cel As Range, n1&, n2&, n3&
'---initialisations---
Application.ScreenUpdating = False
Set plage = Range("D1:D" & Application.Max([E65536].End(xlUp).Row, [F65536].End(xlUp).Row))
plage.Clear
[E:G].Borders.LineStyle = xlNone
plage.HorizontalAlignment = xlLeft
'---construction de la colonne D---
For Each cel In plage
  With cel.Offset(, 2) 'colonne F
    If .Font.Underline = xlSingle Then
      If LCase(.Offset(, -1)) = LCase("txLocalisation") Then
        cel = n1
        cel.Font.ColorIndex = 3
      Else
        cel = Chr(65 + n1)
        n1 = n1 + 1
      End If
      n2 = 0
      cel.Font.FontStyle = "Gras"
      cel.Borders(xlEdgeTop).LineStyle = xlContinuous
    ElseIf .Font.FontStyle = "Gras" And .Font.Underline = xlNone Then
      n2 = n2 + 1
      n3 = 1
      cel = Chr(64 + n1) & n2 & ".1"
      cel.Font.FontStyle = "Gras"
      cel.Font.ColorIndex = 3
      cel.Resize(, 4).Borders(xlEdgeTop).LineStyle = xlContinuous
    Else
      n3 = n3 + 1
      cel = Chr(64 + n1) & n2 & "." & n3
    End If
  End With
Next
End Sub

Réfractaire au .xls ???

Edit : j'avais mal placé Application.ScreenUpdating = False

A+
 

Pièces jointes

  • numérotation ligne(2).xls
    90 KB · Affichages: 112
Dernière édition:

pierre4

XLDnaute Occasionnel
modif numérotation ligne

bonjour Job75,
j'ai compris maintenant que tout est basé sur le texte "gras"
le problème est que dans ma colonne H j'ai une macro vba
basé aussi sur le "gras "(cellules vertes) double clic ouvrir/fermer
la base de mon incrémentation est la colonne G tenant compte du texte
"tx*"
j'aurai du tout dire avant!
pouvez vous regarder le fichier joint: supprimer colonne D:D et réincrémenter la E:E?
merci par avance
pas facile de s'exprimer et de me comprendre à distance...
bon dimanche
Pierre
 

Pièces jointes

  • devis2.xlsm
    168.9 KB · Affichages: 911

job75

XLDnaute Barbatruc
Re : incrémentation de numérotation ligne

Bonjour Pierre, le forum,

Désolé, je suis sur Excel 2003, j'y reste :cool:

Dites donc, ce n'est pas moi qui ai inventé les caractères "Gras" mais vous dans le 1er fichier...

Alors cette macro basée sur l'analyse des tx... en colonne E :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [E:E]) Is Nothing Then Exit Sub
Dim plage As Range, cel As Range, txt$, n1&, n2&, n3&
'---initialisations---
Application.ScreenUpdating = False
Set plage = Range("D1:D" & [E65536].End(xlUp).Row)
[D:D].Clear
[E:G].Borders.LineStyle = xlNone
[D:D].HorizontalAlignment = xlLeft
'---construction de la colonne D---
For Each cel In plage
  txt = LCase(cel.Offset(, 1)) 'colonne E
  If txt = "txlocalisation" Then
    cel = n1
    cel.Font.FontStyle = "Gras"
    cel.Font.ColorIndex = 3
    cel.Borders(xlEdgeTop).LineStyle = xlContinuous
  ElseIf txt = "txpiece" Then
    cel = Chr(65 + n1)
    n1 = n1 + 1
    n2 = 0
    cel.Font.FontStyle = "Gras"
    cel.Borders(xlEdgeTop).LineStyle = xlContinuous
  ElseIf txt = "txtravaux" Then
    n2 = n2 + 1
    n3 = 1
    cel = Chr(64 + n1) & n2 & ".1"
    cel.Font.FontStyle = "Gras"
    cel.Font.ColorIndex = 3
    cel.Resize(, 4).Borders(xlEdgeTop).LineStyle = xlContinuous
  Else
    n3 = n3 + 1
    cel = Chr(64 + n1) & n2 & "." & n3
  End If
Next
End Sub
Fichier (3) joint.

Edit : la macro se déclenche maintenant par validation en colonne E.

A+
 

Pièces jointes

  • numérotation ligne(3).xls
    99 KB · Affichages: 119
Dernière édition:

Discussions similaires

Réponses
7
Affichages
397
  • Question
Microsoft 365 Formule" si"
Réponses
4
Affichages
299