Boucle sur plusieurs colonnes

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
a
agria
Nouveau venu
Nouveau venu
Messages : 1
Inscrit le : 15 janvier 2015
Version d'Excel : 2007 FR

Message par agria » 16 janvier 2015, 00:10

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 :
Test macro.xlsx
(11.71 Kio) Téléchargé 32 fois
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.
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'019
Appréciations reçues : 306
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 16 janvier 2015, 07:23

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é.
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message