Ajout de ligne(s) via commande en vba
SE44fr
Messages postés
32
Date d'inscription
Statut
Membre
Dernière intervention
-
Kuartz Messages postés 852 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- Ajout de ligne(s) via commande en vba
- Invite de commande - Guide
- Partage de photos en ligne - Guide
- Mètre en ligne - Guide
- Commande terminal mac - Guide
- Formulaire en ligne de meta - Guide
2 réponses
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 :
Sinon je n'ai pas compris ce que vous vouliez.
Cordialement.
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.
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.
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.