Ajout de ligne(s) via commande en vba

SE44fr Messages postés 32 Statut Membre -  
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   -
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.



--
SE

2 réponses

  1. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
     
    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
    1. SE44fr Messages postés 32 Statut Membre 2
       
      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
    2. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
       
      OK, j'ai compris. Je me penche dessus.
      0
  2. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
     
    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