Copier/coller des lignes même endroit

Bonjour à tous,

je débute dans le VBA et déjà je remercie nombre d'entre vous qui m'avez indirectement aidé en solutionnant les problématiques d'autres internautes en détresse.

J'ai une problématique que je n'arrive pas à solutionner et pour laquelle je n'ai pas encore trouvé de solution via les forums.

J'ai un tableau avec 2 feuilles. Sur la 1ere appelée "demande de travaux" je souhaite pouvoir faire apparaitre les engins ainsi que leurs descriptif si je clique sur le bouton "Oui". J'ai fait une macro toute simple (de mon niveau de débutant) pour copier/coller des lignes depuis la feuil1. Je n'ai pas mis cette formule simple pour ne pas surcharger le fichier.

Là ou ça se complique pour moi c'est que je souhaiterais pouvoir ajouter autant de zone de chantier que nécessaire en appuyant successivement sur le bouton "Ajout ZCh" et que celles-ci apparaissent les unes en dessous des autres. Je ne peux pas utiliser la méthode simple du copier/coller car si j'ajoute des engins sur le chantier je vais avoir un décalage problématique.

Comment puis-je copier/coller des lignes de la "zone de chantier" (lignes 2 à 9 de la feuil1) pour qu'elles apparaissent toujours sous le cadre "Zone de chantier n°1" de la feuille "demande de travaux" (que j'ajoute ou non des engin sur le chantier en cliquant sur "Oui" dans le cadre "desserte du chantier").

J'espère avoir été assez clair et je vous remercie d'avance pour l'aide que vous pourriez m'apporter.

18test.xlsm (123.22 Ko)

Bonjour,

Si j'ai bien compris la demande, il faut isoler la dernière ligne remplie, donc de la colonne B, auquel on ajoute 2 lignes pour ne pas écraser les données avant de coller les lignes de la feuille 1. Ce que le code ci-dessous fait. Ainsi peut importe le nombre de voies que vous aurez dans le chantier n°1, la zone de collage s'ajustera toujours en fonction de la ligne où se trouve la dernière voie :

Sub AJOUT()
Worksheets("Feuil1").Rows("2:9").EntireRow.Copy
With Worksheets("Demande travaux")
    .Rows(.Cells(.Rows.Count, 2).End(xlUp).Row + 2).EntireRow.PasteSpecial
End With
End Sub

Par contre je vous déconseille fortement de travailler avec des cellules fusionnées ...

Cdlt,

Bonjour Ergotamine,

Ca fonctionne parfaitement, merci beaucoup.

excellente journée à tous

En complément, car je pense que ça va m'être utile, si je voulais qu'en cliquant sur le bouton "Ajout ZCH" le cadre repris dans la feuil1 lignes 3 à 9, s'incère sous le cadre "desserte de chantier" (sous la ligne 6) sur la feuil "Demande travaux" et non pas complètement en bas du tableau. quelle formule vba dois-je utiliser?

Merci d'avance pour votre aide

Bonjour,

Dans ce cas :

Sub AJOUT()
Worksheets("Feuil1").Rows("2:9").EntireRow.Copy
Worksheets("Demande travaux").Rows("7:7").Insert (xlDown)
End Sub

Cdlt,

Bonjour Ergotamine,

merci pour ta solution qui fonctionne mais le tableau est toujours copié au niveau de la ligne 7. Si j'ajoute des lignes au dessus, le tableau ne s'incère plus au bon endroit. Le but serait de pouvoir intégrer le tableau toujours entre le cadre "desserte de chantier" et "zone de chantier" même si j'ai besoin d'ajouter des lignes avant le cadre "desserte de chantier".

Merci d'avance pour l'aide apporté et le temps passé à me faire avancer dans mes problématiques.

Bonjour,

Je ne fais que répondre aux problématiques postées, vous m'aviez parlé de la ligne 6 mais pas d'une éventuelle insertion entre la ligne 1 et 6.

Ci-joint le code corrigé :

Sub AJOUT()
Dim LIGNE As Variant
Worksheets("Feuil1").Rows("2:9").EntireRow.Copy
With Worksheets("Demande travaux")
    Set LIGNE = .UsedRange.Find("Zone de chantier n°1", , xlValues, xlPart)
    .Rows(LIGNE.Row).Insert (xlDown)
End With
End Sub

Cdlt,

Parfait, merci Ergotamine

Rechercher des sujets similaires à "copier coller lignes meme endroit"