Boucle for/if pour appliquer un calcul dans une matrice

Hello hello

Déjà je ne sais pas si mon titre est parleur et expose vraiment bien mon problème

Alors, j'ai un problème technique que je n'arrive pas résoudre, et qui m'empêcher d'avancer dans mon projet.

Donc me voila, sur ce forum, vous demandant gentiment votre précieuse aide.

Je suis novice, soyez indulgent svp

J'ai joint le fichier pour que vous puissiez visualiser mon problème.

Mon problème est le suivant:

je voudrais appliquer le calcul suivant :

=ARRONDI(SI(transition2!B2<2;0;0,5804*transition2!B2*transition2!B2-0,3587*transition2!B2+29,29);0)

à toutes les cellules de ma matrice de ma feuille recap (comme je l'ai montré dans mon fichier)

Je peux résoudre mon problème avec cette fameuse commande:

.Range("B21").AutoFill Destination:=.Range("B21:Y21"), Type:=xlFillDefault

Mais c'est un peu, voir bcp répétitif et surtout manque de "polyvalence".

J'ai essayé de trouver une boucle qui puisse faciliter ce travail, mais en vain, la seule idée que j'ai trouvé et qui ne marche pas évidemment est la suivante (de plus je n'arrive pas à trouver un moyen d'arrondir):

Sub uno()

'boucle for
Dim i, j, k, l As Integer 'correspondant au position des cellules

'fonction if

'la formule de l'équation
'Q=0.5804h^2 - 0.3587h + 29.29
'cette equation est variable donc je déclare les 3 variables
Dim variable1, variable2, variable3 As Single
variable1 = 0.5804 
variable2 = 0.3587
variable3 = 29.29

'boucle

'i et j correspondant aux cellules/valeurs de la matrice feuille transition2 qui vont être utilisé pour le calcul: cellule(i,j)
For i = 2 To Sheets("transition2").Range("B" & Rows.Count).End(xlUp).Row 'pour les lignes 2 à dernière ligne de colonne B (exemple fichier: B2:B32)
For j = 2 To 25 'pour les colonnes 2 à 25 (B:Y)

'k et l correspondant aux cellules de la matrice feuille recap qui vont correspondre à l'emplacement des résultats du calcul 
    For k = 21 To Worksheets("recap").Range("A" & Rows.Count).End(xlUp).Row 'nombre de ligne aussi variable
    For l = 2 To 25 'colonnes

        If Cells(i, j) < 2 Then 'si la valeur de la cellule de la matrice de la feuille transition2 est inférieur à 2

            Worksheets("recap").Cells(k, l) = 0 'alors indiquer/appliquer 0 dans la cellule de la matrice de la feuille recap

         ' sinon appliquer la formule de l'équation (avec h = la valeur de la cellule feuille transition2), dans la cellule de la matrice de la feuille recap
        'tel que :
        Else: Num = (variable1 * Cells(i, j) * Cells(i, j)) - (variable2 * Cells(i, j)) + variable3

            Worksheets("recap").Cells(k, l) = Num
                   End If

        'et donc répéter ces étapes à toutes les cellules de la matrice de la feuille recap
        'en utilisant les valeurs de celle de la feuille transition
    Next
    Next

Next
Next

End Sub

Voila, j'espère avoir bien exposé mon problème.

En espérant avoir une réponse positive de votre part

Bonne journée/soirée !!!!!!

13classeur2.xlsx (24.15 Ko)

Bonjour,

à tester:

Sub uno()
Dim i As Long, j As Integer 'correspondant au position des cellules
Dim LigR As Long, X As Single
Dim V1 As Single, V2 As Single, V3 As Single
Dim WT As Worksheet, WR As Worksheet

'la formule de l'équation
'Q=0.5804h^2 - 0.3587h + 29.29
'cette equation est variable donc je déclare les 3 variables
V1 = 0.5804
V2 = 0.3587
V3 = 29.29

LigR = 21 ' première ligne feuille Recap
Set WR = Worksheets("Recap")
Set WT = Worksheets("transition2")
'boucle

'i et j correspondant aux cellules/valeurs de la matrice feuille transition2 qui vont être utilisé pour le calcul: cellule(i,j)
For i = 2 To WT.Range("B" & Rows.Count).End(xlUp).Row 'pour les lignes 2 à dernière ligne de colonne B (exemple fichier: B2:B32)
    For j = 2 To 25 'pour les colonnes 2 à 25 (B:Y)
        If WT.Cells(i, j) < 2 Then 'si la valeur de la cellule de la matrice de la feuille transition2 est inférieur à 2
            WR.Cells(LigR, j) = 0 'alors indiquer/appliquer 0 dans la cellule de la matrice de la feuille recap
         ' sinon appliquer la formule de l'équation (avec h = la valeur de la cellule feuille transition2), dans la cellule de la matrice de la feuille recap
        'tel que :
        Else
            X = WT.Cells(i, j)
            WR.Cells(LigR, j) = Round((V1 * X * X) - (V2 * X) + V3, 0)
        End If
    Next
    LigR = LigR + 1
Next
End Sub

A+

Bonjour

Pourquoi voulez vous faire cela par code VBA ??

Cordialement

Bonjour,

à tester:

Sub uno()
Dim i As Long, j As Integer 'correspondant au position des cellules
Dim LigR As Long, X As Single
Dim V1 As Single, V2 As Single, V3 As Single
Dim WT As Worksheet, WR As Worksheet

'la formule de l'équation
'Q=0.5804h^2 - 0.3587h + 29.29
'cette equation est variable donc je déclare les 3 variables
V1 = 0.5804
V2 = 0.3587
V3 = 29.29

LigR = 21 ' première ligne feuille Recap
Set WR = Worksheets("Recap")
Set WT = Worksheets("transition2")
'boucle

'i et j correspondant aux cellules/valeurs de la matrice feuille transition2 qui vont être utilisé pour le calcul: cellule(i,j)
For i = 2 To WT.Range("B" & Rows.Count).End(xlUp).Row 'pour les lignes 2 à dernière ligne de colonne B (exemple fichier: B2:B32)
    For j = 2 To 25 'pour les colonnes 2 à 25 (B:Y)
        If WT.Cells(i, j) < 2 Then 'si la valeur de la cellule de la matrice de la feuille transition2 est inférieur à 2
            WR.Cells(LigR, j) = 0 'alors indiquer/appliquer 0 dans la cellule de la matrice de la feuille recap
         ' sinon appliquer la formule de l'équation (avec h = la valeur de la cellule feuille transition2), dans la cellule de la matrice de la feuille recap
        'tel que :
        Else
            X = WT.Cells(i, j)
            WR.Cells(LigR, j) = Round((V1 * X * X) - (V2 * X) + V3, 0)
        End If
    Next
    LigR = LigR + 1
Next
End Sub

A+

GENIAL, ca marche super bien et j'ai tout compris !

Merciiiiii énormément, tu me facilites bcp l'avancement de mon projet

Bonjour

Pourquoi voulez vous faire cela par code VBA ??

Cordialement

Salut

Je le fais par code Vba car je dois faire ce traitement de plusieurs fichiers

Rechercher des sujets similaires à "boucle appliquer calcul matrice"