Boucle sur plusieurs colonnes

Bonjour,

Je démarre en autodidacte sur VBA, notamment grâce aux cours que ce site propose

Malgré des recherches et notamment sur ce forum, je bloque sur mon problème :

Je dispose de 3 tableaux dans Excel : le tableau 1, avec mes données de base, le tableau 2 que je veux remplir et le tableau 3 (sur une autre feuille) qui contient des pourcentages. Je n'arrive pas à remplir le tableau 2 avec le tableau 1 + le pourcentage du tableau 3.

En PJ j'ai reconstitué le document sur lequel je travaille :

45test-macro.xlsx (11.71 Ko)

La solution que j'envisage est :

Sub Macro1()

For i = 3 To 6
Range("F" & i) = Range("A" & i) * (1 + Sheets("Feuil2").Range("C" & i + 7))

End Sub

Càd faire une boucle sur les lignes de la 1ère colonne, que je répèterais sur chaque colonne. Ou bien une fois les calculs faits sur la 1ère colonne, je copie-colle pour avoir les formules dans les colonnes suivantes.

Mon problème est : je ne parviens pas à faire une boucle pour répéter une action sur les mêmes lignes dans plusieurs colonnes.

Mais je me doute qu'il existe une solution plus simple.

Merci beaucoup pour votre aide.

Bonjour,

Essai ceci. Attention, si tu déplace les tableaux, il te faudra ajuster. Pour définir la plage sur le tableau 1, les colonnes sont fixes mais le nombre de lignes peut varier sans problème. Les valeurs du tableaux 2 sont entrées manuellement avant le lancement de la proc. :

Sub Macro1()

    Dim PlgTab_1 As Range
    Dim Cel As Range

    'défini la plage sur le tableau 1 de A3 à D?
    With Worksheets("Feuil1")

        Set PlgTab_1 = .Range(.Cells(3, 1), .Cells(.Rows.Count, 4).End(xlUp))

    End With

    'Les valeurs du tableau 2 sont sensées être entrées manuellement avant le lancement de la proc.

    'boucle pour le calcul. Si les autres tableaux sont déplacés, il faut modifier
    'les Offsets et l'ajout de lignes à "Row" et l'ajout de colonnes à "Column"
    For Each Cel In PlgTab_1

        Cel.Offset(, 5).Value = (Cel.Value + Cel.Offset(, 5).Value) _
                                * Worksheets("Feuil2").Cells(Cel.Row + 7, Cel.Column + 2).Value

    Next Cel

End Sub

Hervé.

Rechercher des sujets similaires à "boucle colonnes"