XL 2019 Développement d'un tableau en fonction d'un nombre dans une cellule

TLM_16

XLDnaute Nouveau
Bonjour à tous,

Etant novice sur le codage d'Excel, j'aimerai avoir votre aide car je n'arrive pas à trouver comment faire pour développer automatiquement les lignes de mon tableau en fonction d'un nombre dans une cellule.
Par exemple, si dans une cellule est affiché 4, j'aimerai que le tableau se développe automatiquement de 4 lignes tout en conservant les formules du tableau.
Je vous joint mon tableau Excel. C3 étant ma cellule qui indique le nombre de lignes à développer et E11:J12 étant les lignes à développer en fonction de C3.

Je ne sais pas si je suis assez clair, dites-moi si vous voulez plus de détails.

Merci

Théo
 

Pièces jointes

  • Emprunt annuités constantes.xlsm
    10.1 KB · Affichages: 5
Solution
Bonjour TLM_16, JM, sousou,

Voyez le fichier joint et cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n&
If FilterMode Then ShowAllData 'si la feuille est filtrée
Application.EnableEvents = False
n = Int(Abs(Val(CStr([C3]))))
[C3] = IIf(n, n, "")
With [E8:J8] 'à adapter
    If n Then
        .Cells(1).Resize(n) = "=MAX(R1C:R[-1]C)+1"
        .Cells(1, 2).Resize(n) = "=IF(RC[-1]=1," & [C2].Address(ReferenceStyle:=xlR1C1) & ",R[-1]C[4])"
        .Cells(1, 3).Resize(n) = "=RC[-1]*" & [C4].Address(ReferenceStyle:=xlR1C1)
        .Cells(1, 4).Resize(n) = "=RC[1]-RC[-1]"
        .Cells(1, 5).Resize(n) = "=" & [C6].Address(ReferenceStyle:=xlR1C1)...

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Une façon de faire
(pré-requis: transformer ton tableau en Tableau ;))
=>Sélectionne ton tableau puis =>Insertion/Tableau => [x] Mon tableau contient des entêtes
VB:
Sub InsérerLignesTABLEAU()
Dim I%
If IsNumeric([C3]) And [C3] <= 10 Then
For I = 1 To [C3]
ActiveSheet.ListObjects("Tableau1").ListRows.Add AlwaysInsert:=True
Next
End If
End Sub

EDITION: Bonjour sousou
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour TLM_16, JM, sousou,

Voyez le fichier joint et cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n&
If FilterMode Then ShowAllData 'si la feuille est filtrée
Application.EnableEvents = False
n = Int(Abs(Val(CStr([C3]))))
[C3] = IIf(n, n, "")
With [E8:J8] 'à adapter
    If n Then
        .Cells(1).Resize(n) = "=MAX(R1C:R[-1]C)+1"
        .Cells(1, 2).Resize(n) = "=IF(RC[-1]=1," & [C2].Address(ReferenceStyle:=xlR1C1) & ",R[-1]C[4])"
        .Cells(1, 3).Resize(n) = "=RC[-1]*" & [C4].Address(ReferenceStyle:=xlR1C1)
        .Cells(1, 4).Resize(n) = "=RC[1]-RC[-1]"
        .Cells(1, 5).Resize(n) = "=" & [C6].Address(ReferenceStyle:=xlR1C1)
        .Cells(1, 6).Resize(n) = "=RC[-4]-RC[-2]"
        .Resize(n).Borders.Weight = xlThin 'bordures
    End If
    .Offset(n).Resize(Rows.Count - n - .Row + 1).Delete xlUp 'RAZ en dessous
End With
Application.EnableEvents = True
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
A+
 

Pièces jointes

  • Emprunt annuités constantes(1).xlsm
    18.8 KB · Affichages: 2
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16