VBA - Itérer les surs valeurs de l'objet "Range" ?

Bonjour,

Je souhaite automatiser un procédé assez long (et ennuyeux) consistant à :

  • Sélectionner 5 valeurs d'une ligne (A3:E3)
  • Copier ces valeurs
  • Coller ces valeurs sur 24 lignes (H3:H27)
  • Recommencer jusqu'à la fin de la base initiale

J'ai donc commencé par indiquer le nombre d'observations de ma base pour itérer correctement via une fonction "NBVAL - A" placé en F3.

Puis j'ai tenté une itération via la macro suivante :

Sub Test()

nbval = Range("F3").Value

Dim i As Integer
Dim j As Integer
Dim k As Integer

i = 3
k = 3
j = 27
For i = 3 To nbval
    Range("A" & i).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy
    Range ("H"&k : "H"&j).Select
    ActiveSheet.Past
    i = i + 1
    k = k + 24
    j = j + 24
Next

End Sub

Ici les soucis débutent : j'ai tenté d'effectuer un collage en utilisant l'objet "Range" sur mes itérations (itération 1 : 3 à 27 | itération 2 : 28 à 52 ...etc). Je reçois directement un message d'erreur m'indiquant que l'objet Range attends une sémantique différentes.

Je vous joins mon objectif de base avec la macro actuelle, quelqu'un aurait-il une solution ? (je suis très curieux d'avoir le détail afin de mieux comprendre les objets permettant une itération dans VBA).

Merci d'avance

7test-macro.xlsm (17.92 Ko)

Bonjour,

Une proposition Récupérer et transformer (Power Query) sans VBA.

A te relire.

Cdlt.

11test-macro.xlsm (30.70 Ko)

Bonjour,

bonjour Jean-Eric,

proposition de correction du code.

Sub Test()
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim nbval As Integer
    nbval = Range("F3").Value
    k = 3
    j = 27
    For i = 3 To nbval + 2
        Range("A" & i, Range("A" & i).End(xlToRight)).Copy Range("H" & k & ":H" & j)
        k = k + 25
        j = j + 25
    Next
End Sub

Bonjour Jean-Eric & h2so4,

Merci pour vos réponses qui fonctionnent toutes les deux.

Je ne connaissait pas la fonction "{1..n}" sur Power Query qui est super pratique pour dupliquer des lignes !

Pour la macro l'utilisation des " et & avec l'objet range est beaucoup plus clair lui aussi.

Merci encore à vous deux

Rechercher des sujets similaires à "vba iterer surs valeurs objet range"