Modification macro Excel

Bonjour,

J'essai d'adapter cette macro qui permet actuellement de sélectionner des lignes dans un tableau de données en fonction d'une valeur de départ et d'un pas pour les coller dans une nouvelle feuille.

Actuellement cette macro ne traite que la feuille 1 et j'aimerais qu'elle traite la feuille active.

Dans un second temps elle colle les valeurs dans une nouvelle feuille, j'aimerais modifier la macro pour qu'elle colle les valeurs sur la même feuille dans une zone précédemment vide juste à droite du tableau initial.

Voilà la macro à modifier :

Sub copypaste()

Dim i As Integer, j As Integer

Dim pas As Byte

Dim dl As Long, dc As Long

i = InputBox("ligne de démarrage")

pas = InputBox("pas")

Worksheets.Add after:=Worksheets(Worksheets.Count)

Sheets(Sheets.Count).Name = InputBox("nom de la feuille")

Sheets(1).Activate

j = 4

dl = Sheets(1).Range("a" & Rows.Count).End(xlUp).Row

For i = i To dl Step pas

dc = Sheets(1).Cells(i, Columns.Count).End(xlToLeft).Column

Sheets(1).Range(Cells(i, 1), Cells(i, dc)).Copy Sheets(Sheets.Count).Range("a" & j)

j = j + 1

Next

End Sub

Pourriez vous m'apporter votre aide afin de résoudre mon problème.

N'hésitez à me demander un complément d'information si nécessaire.

Par avance merci.

Cordialement

Bonjour. Bienvenue sur le Forum

Comme l'écriture du code nécessite de connaître les adresses des plages, peux-tu envoyer le fichier avec un exemple du résultat espéré.

Cordialement

12test-macro.xlsm (20.83 Ko)

Merci pour votre réponse.

Idéalement j'aimerais que la macro fonctionne avec n'importe quelle feuille quel que soit le nombre de colonnes contenant des valeurs dans la tableau d'origine.

Je pense qu'il est possible de programmer le collage des valeurs dans la seconde colonne vide en utilisant une fonction de recherche de colonne vide non ? Par exemple si la première colonne vide est J, j'aimerais coller les valeurs à partir de la colonne L.

Le problème étant que je ne sais absolument pas coder tout ca...

Cordialement.

Sub copypasteettout()

    Dim mafeuille As Worksheet
    Set mafeuille = ThisWorkbook.ActiveSheet

    Dim i As Integer, j As Integer
    Dim pas As Byte
    Dim dl As Long, dc As Long
    i = InputBox("ligne de démarrage")
    pas = InputBox("pas")
    Worksheets.Add after:=Worksheets(Worksheets.Count)
    Sheets(Sheets.Count).Name = InputBox("nom de la feuille")

    mafeuille.Activate
    j = 4
    dl = Sheets(1).Range("a" & Rows.Count).End(xlUp).Row
    For i = i To dl Step pas
        dc = Sheets(1).Cells(i, Columns.Count).End(xlToLeft).Column
        Sheets(1).Range(Cells(i, 1), Cells(i, dc)).Copy Sheets(Sheets.Count).Range("a" & j)
        j = j + 1
    Next

End Sub
5test-macro.xlsm (25.38 Ko)
Rechercher des sujets similaires à "modification macro"