Ajout de ligne(s) via commande en vba

Fermé
SE44fr Messages postés 29 Date d'inscription mercredi 5 août 2015 Statut Membre Dernière intervention 29 novembre 2015 - 15 sept. 2015 à 22:46
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 - 16 sept. 2015 à 15:10
Bonjour au forum,

J'ai créé un fichier (tableau) permettant de faire des bilans économiques, jusque là tout va bien.
Mais il me faut rajouter une ou plusieurs lignes à certains postes en fonction du nombre de fourniture.
Le tableau allant des colonnes A à N et sachant qu'en rajoutant une ligne à un poste, je dois ensuite fusionner certaines cellules de ma ligne qui se retrouvent sur 2 lignes et qui devraient n'en faire qu'une (ex: total des matériaux).

J'ai réussi a écrire une macro pour ajouter des lignes mais elle ne fait pas le travail jusqu'au bout, voyez par vous même si vous le souhaiter, je joint le fichier via le lien cjoint si vous voulez jeter un oeil, il suffit de cliquer sur le premier bouton bleu "Ajouter une ligne"

http://www.cjoint.com/c/EIpuzG5aIy7

Sinon voici le code :

Sub Macro_nouvelle_ligne()

If MsgBox("Vous allez créer une nouvelle ligne, continuer ?", vbYesNo, "ATTENTION") = vbYes Then

Range("A8").Select
Selection.EntireRow.Insert
Range("A7:N7").Select
Selection.Copy
Range("A8:N8").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Range("E8").Select
MsgBox "Nouvelle ligne ajouté avec succès !"

Else
Exit Sub

End If
End Sub

Je précise tous de même que se sont les cellules E7 et F7 auxquelles je voudrais ajouter des lignes les autres cellules je désirerais les garder fusionnés.

Merci d'avance à vous.

Cordialement,
SE.


A voir également:

2 réponses

Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
Modifié par Kuartz le 16/09/2015 à 09:49
Bonjour,

Déjà, la ligne que tu sélectionne à copier est vide. En effet, il s'agit en fait de la ligne (A6:N6)

Soit le code :

Sub Macro_nouvelle_ligne() 

If MsgBox("Vous allez créer une nouvelle ligne, continuer ?", vbYesNo, "ATTENTION") = vbYes Then 

Range("A8").EntireRow.Insert
Range("A8").EntireRow.Insert
Range("A6:N7").Select
Application.CutCopyMode = False
Selection.Copy
Range("A8:N9").Select
ActiveSheet.Paste

MsgBox "Nouvelle ligne ajoutée avec succès !" 

Else 
Exit Sub 

End If 
End Sub 


Sinon je n'ai pas compris ce que vous vouliez.

Cordialement.
0
SE44fr Messages postés 29 Date d'inscription mercredi 5 août 2015 Statut Membre Dernière intervention 29 novembre 2015 2
16 sept. 2015 à 14:57
Bonjour Kuartz,

Merci pour ton aide, ma formule a progressé grâce à toi, mais ce n'est pas encore tout à fait ce que je voudrai.

En effet la formule ajoute bien 2 ligne en 8 et 9, mais je souhaite garder ces 2 lignes seulement pour les colonnes E et F, pour les autres colonnes des lignes 8 et 9, je souhaite fusionner les 2 nouvelles cellules crées avec les 2 cellules du dessus, par exemple fusionner A8 et A9 avec A7:A8 pour former la cellule A7:A9, et donc en conservant et appliquant les formules présentes dans les cellules "model" A6:A7.

J'espers ne pas avoir été trop brouillon, si mon affaire n'est pas très compréhensible n'hésitez pas a me redemander des précisions.

Cordialement.
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
16 sept. 2015 à 15:00
OK, j'ai compris. Je me penche dessus.
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
16 sept. 2015 à 15:10
Sub Macro_nouvelle_ligne()

If MsgBox("Vous allez créer une nouvelle ligne, continuer ?", vbYesNo, "ATTENTION") = vbYes Then

Range("A8").EntireRow.Insert
Range("A8").EntireRow.Insert
Range(Cells(6, 1), Cells(9, 1)).Merge
Range(Cells(6, 2), Cells(9, 2)).Merge
Range(Cells(6, 3), Cells(9, 3)).Merge
Range(Cells(6, 4), Cells(9, 4)).Merge
Range(Cells(6, 7), Cells(9, 7)).Merge
Range(Cells(6, 8), Cells(9, 8)).Merge
Range(Cells(6, 9), Cells(9, 9)).Merge
Range(Cells(6, 10), Cells(9, 10)).Merge
Range(Cells(6, 11), Cells(9, 11)).Merge
Range(Cells(6, 12), Cells(9, 12)).Merge
Range(Cells(6, 13), Cells(9, 13)).Merge
Range(Cells(6, 14), Cells(9, 14)).Merge
Range("E6:F7").Select
Application.CutCopyMode = False
Selection.Copy
Range("E8:F9").Select
ActiveSheet.Paste
Range("A6:N9").VerticalAlignment = xlCenter

Range("A6").Select

MsgBox "Nouvelle ligne ajoutée avec succès !"

Else
Exit Sub

End If
End Sub


Ceci te conviendrait-il?

Cordialement.
0