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

  • Initiateur de la discussion Initiateur de la discussion TLM_16
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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)...
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:
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

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour