Macro pour insérer des lignes dans un tableau

Bonjour à tous,

J'aimerais créer des lignes de code VBA afin de copier une ligne, par exemple la ligne 3 indiqué "2", puis la réinsérer juste en dessous. On aurait alors 14 lignes au lieu de 13. Je veux donc copier et non insérer car je veux une ligne qui contiennt les mêmes formules que celles qui l'entourent.

Pour cela j'ai mis ce code:

Sub AjouterNouvelleLigne()
' Spécifiez le numéro de la ligne à ajouter
Dim ligneAInserer As Integer
ligneAInserer = 3

Rows(ligneAInserer & ":" & ligneAInserer).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

Rows(ligneAInserer - 1).Copy Destination:=Rows(ligneAInserer)

AjusterFormules ligneAInserer

End Sub

Sub AjusterFormules(ligne As Integer)
Dim ws As Worksheet
Set ws = ThisWorkbook.ActiveSheet

' Boucle à travers chaque cellule dans la ligne spécifiée
Dim cell As Range
For Each cell In ws.Rows(ligne).Cells
' Vérifie si la cellule contient une formule
If cell.HasFormula Then
' Ajuste la formule en remplaçant le numéro de ligne dans les références de cellules
cell.Formula = Replace(cell.Formula, ligne - 1, ligne)
End If
Next cell
End Sub

Mais le soucis c'est que je veux aussi lorsque j'insère une ligne dans le tableau du dessus, insérer une ligne dans le tableau du dessous, au même endroit, c'est a dire au niveau de la ligne indiqué "2", mon soucis c'est que je ne sais pas comment indiqué que je veux copier cette ligne puisque si j'insére plusieurs ligne au dessus on ne sera plus à la ligne 23 mais peut être à 26...

Pour le code du dessus, j'indique la ligne 6 mais pour le 2ème tableau je ne peux donc pas indiquer une ligne qui risque de changer à chaque fois que j'ajoute une ligne dans le 1er tableau.

Donc comment faire ?

Merci à vous,

Mswin

26test1.xlsx (13.33 Ko)

EDIT modo : merci d'utiliser les balises de code disponibles dans le menu en cliquant sur l'icone </> . Faites attention la prochaine fois

Bonjour

Ton problème serait facilement réglé en utilisant les tableaux structurés (avantage les formules sont copié automatiquement)

Mais comme je ne comprend pas ce que tu veux exactement.... et que ton fichier nous aide en rien...

ci joint ma solution pour le 1er tableau

74test1.xlsm (26.89 Ko)

A+ François

Bonjour,

Merci d'ajouter votre version excel (2016, 2019, MAC2011, MAC2016...) dans la profil de votre compte. C'est plus facile pour celui qui vous répond.


Pour votre fichier, j'aurais plutôt placer le tableau du dessous à droite en colonne S
Après colonne A, vous mettez cette formule en A --> = ligne()
Formule à recopier vers le bas
En colonne S, vous mettez -->[s=co-1f497d][/s]= A2
Puis recopie vers le bas.

Après si ok le code devient plus simple à réaliser.
L'avantage est que vous suivez les deux tableaux sur chaque ligne

Sinon solution telle que proposée par Fanfan38

Cordialement

Au temps pour moi !

La version d'excel utilisé est la dernière version Microsoft 365 Apps sur pc.

Merci pour vos réponses, je ne peux malheureusement pas placer le tableau B à droite du A...

Sinon fanfan, ce que je voulais c'est de cliquer sur un bouton et que ça ajoute une ligne sur le tableau A (exactement ce que vous avez fait) mais qu'en même temps la même ligne sur le tableau B se copie. (Exemple: dans le fichier que vous m'avez transmis il y a la ligne 5 de copier dans le tableau A je voudrais que la ligne 5 du tableau B se copie en même temps).

Mon gros soucis et que je ne peux pas indiquer quelle ligne copier pour le tableau B car, comme il est en dessous du A ou l'on rajoute des lignes, la ligne à copier change constamment...

J'espère que c'est plus clair

Encore merci

Donc ci joint ma solution

91test1.xlsm (26.78 Ko)

A+ François

Re

La version d'excel utilisé est la dernière version Microsoft 365 Apps sur pc.

Ok mais ce n'est pas sur un fil de discussion qu'il faut le renseigner mais, comme écrit, dans le profil de votre compte
Sans quoi on va vous reposer la même question une autre fois.

Merci pour vos réponses, je ne peux malheureusement pas placer le tableau B à droite du A...

OK. C'est Fanfan qui vous suit, donc je lui laisse le soin de finaliser. Sinon dans ce qu'il vous a proposé et la Sub AjouterNouvelleLigne(), remplacez ligneAInserer = 3 par ligneAInserer = =Activecell.row

Pensez à cloturer vos fil une fois terminés

Crdlt

Salut Dan

Ma macro c'est copie, l'autre c'était sa macro...

A+ François et merci

Super merci fanfan !

Bonne journée

Rechercher des sujets similaires à "macro inserer lignes tableau"