Comment simplifier cette macro?

Je cherche à simplifier cette macro15 qui permet de saisir une ligne sur 5. Le but étant de l'appliquer à un tableau de plusieurs centaines de lignes.

Sub Macro15()

Range("F4,F9,F14,F19,F24,F29,F34").Select

Range("F34").Activate

Selection.Copy

ActiveWindow.SmallScroll Down:=16

Range("A41").Select

ActiveSheet.Paste

End Sub

Merci

Bonsoir,

Range("F4,F9,F14,F19,F24,F29,F34").Copy Destination:=Range("a41")
Range("A41").Activate

La 2ème ligne est facultative, suivant contexte

Amicalement

Claude

Encore plus court (mais moins lisible ?) :

[F4,F9,F14,F19,F24,F29,F34].Copy [A41]
[A41].Activate
capture d ecran 747

Merci pour vos réponses.

Mais pour l'appliquer à un tableau de 200 lignes, suis je obligé de taper le nom de toutes les cellules ou éxiste t il un moyen de prendre en compte une cellule sur 5 .

C'est à dire: je prend comme cellule de référence F4, et je saisi toute les 5 cellules dans la colonne F

F4, F4+5 soit F9, F9+5 soit F24, etc.. jusqu'à 200 ou plus si besoin.

Re,

Voici une macro qui pourrait répondre à tes besoins :

Sub UneLigneSurCinq()
Dim derlign As Integer
Dim plage As Range, cel As Range
    derlign = [f65000].End(xlUp).Row
    Set plage = [f4]
    For Each cel In Range("f4:f" & derlign)
        If (cel.Row - 4) Mod 5 = 0 Then Set plage = Union(plage, cel)
    Next cel
    plage.Copy [a41]
End Sub

Merci vba-new

J'essaie de développer un tableau et ton aide m'a été prècieuse.

A+

Encore merci

-- 18 Fév 2010, 14:36 --

Une petite question encore.

Je veux faire cette opération sur les 200 premières lignes de mon tableau uniquement, mais en faisant

derlign = [f200].End(xlUp).Row

cela ne fonctionne pas.

Bonsoir,

Peux-tu envoyer un bout de ta feuille avec les zones concernées ?

Claude

Bonjour à tous, bonjour claude,

Un peu embêtant tout ça ! Je n'avais pas vu que gérald avait répondu ! Il semblerait que le forum ne soit pas mis à jour lorsqu'un membre répond à son propre post. Heureusement que tu veilles claude

Essaie comme ça gérald :

Sub UneLigneSurCinq()
'Dim derlign As Integer
Dim plage As Range, cel As Range
    'derlign = [f65000].End(xlUp).Row
    Set plage = [f4]
    'For Each cel In Range("f4:f" & derlign)
    For Each cel In Range("f4:f200")
        If (cel.Row - 4) Mod 5 = 0 Then Set plage = Union(plage, cel)
    Next cel
    plage.Copy [a41]
End Sub

Bonsoir vba-new,

J'avais fait la même remarque à Sébastien, qui m'a répondu :

Pour que le sujet remonte, il faut un intervalle de 24h entre 2 messages du même auteur

pour éviter les abus de relance.

Claude

Ok merci pour l'info claude ! Bon maintenant je le sais mais la situation ne change pas beaucoup

Pas grave

Rechercher des sujets similaires à "comment simplifier cette macro"