Optimiser des calculs nombreux

Bonjour,

je dois calculer et rentrer dans une cellule une certaine valeur en fonction d'une autre.

si A est compris entre 1 et 10, alors X = 5

si A est compris entre 11 et 20, alors X = 10

si A est compris entre 21 et 30, alors X = 15

si A est compris entre 31 et 40, alors X = 20

Ce qui donne :

If Not NP = "" Then

    If (10 > NP And NP > 1) Then
        .Range("A6").Value = 5

    ElseIf (20 > NP And NP > 11) Then
        .Range("A6").Value = 10

    ElseIf (30 > NP And NP > 21) Then
        .Range("A6").Value = 15

    ElseIf (40 > NP And NP > 31) Then
        .Range("A6").Value = 20
    End If

End If

le problème c'est que je dois faire ça 10 fois (donc dans 10 cases d'un tableau)

Je pourrais remettre ce bout de code 9 fois de plus pour les autres cellules, mais ça ferait très lourd...

Quelqu'un sait comment rendre ça plus propre et moins lourd SVP ?

Merci !

Bonjour,

Elles s'appellent comment tes 10 cases ?

Un exemple de A6 à A15

If Not NP = "" Then
for i=6 to 15
    If (10 > NP And NP > 1) Then
        .Range("A" & i).Value = 5

    ElseIf (20 > NP And NP > 11) Then
        .Range("A" & i).Value = 10

    ElseIf (30 > NP And NP > 21) Then
        .Range("A" & i).Value = 15

    ElseIf (40 > NP And NP > 31) Then
        .Range("A" & i).Value = 20
    End If
next
End If

Bonjour,

merci pour la réponse.

Les cellules ne se suivent pas :

A36, A77, A118, A159, A200, A241, A282, A323, A364, A405 respectivement pour :

G36, G77, G118, G159, G200, G241, G282, G323, G364, G405

Merci

avec un incrément fixe de 41, c'est comme si elles se suivaient

Bonjour

cela veut dire que dans ton code NP est la cellule en colonne G (donc G6 pour le premier cas) et que tu met en A6 la valeur en fonction de... ???

c'est le problème de fournir un code partiel.... on ne sais pas a quoi correspond NP

Fred

Donc si j'ai bien compris, un essai pour A36, A77, A118, A159, A200, A241, A282, A323, A364, A405

With ActiveSheet
    For i = 0 To 9
        lg = 36 + 41 * i
        NP = .Cells(lg, "G")
        If Not NP = "" Then
            If (10 > NP And NP > 1) Then
                .Range("A" & lg).Value = 5

            ElseIf (20 > NP And NP > 11) Then
                .Range("A" & lg).Value = 10

            ElseIf (30 > NP And NP > 21) Then
                .Range("A" & lg).Value = 15

            ElseIf (40 > NP And NP > 31) Then
                .Range("A" & lg).Value = 20
            End If
        End If
    Next
End With

Fred

bonsoir,

ça parait bien scabreux TOUSSA !

Ça veut dire qu'on exclue toutes les valeurs bornes ? (NP = 1, 10, 11, 20, 21, 31 ,40 )

Un Select Case ferait sans doute mieux l'affaire...

Mais avec une peau de saucisson difficile de dire si le produit est bon !

A+

@TRNX

Bonsoir à tous,

déjà merci pour votre aide.

Ensuite voici un fichier qui expliquera bien la chose je pense :

9calculsopti.xlsx (10.58 Ko)

Pourquoi en VBA ?

=RECHERCHEV(E2;Feuil2!$A$1:$B$4;2;1)

avec une table de données comme ceci :

15
1110
2115
3120
5calculsopti.xlsx (12.51 Ko)

Bonjour Steelson,

j'ai déjà fait avec la formule =SI.CONDITIONS(...), mais c'est pas vraiment ce que je veux.

J'ai repris ton code et du coup j'ai trouvé ce que je voulais, je le partage :

For i = 36 To 405

    Dim NPB
    NPB = .Range("A" & i).Value

    If (10 > NPB And NPB > 1) Then
        .Range("G" & i).Value = 5

    ElseIf (20 > NPB And NPB > 11) Then
        .Range("G" & i).Value = 10

    ElseIf (30 > NPB And NPB > 21) Then
        .Range("G" & i).Value = 15

    ElseIf (40 > NPB And NPB > 31) Then
        .Range("G" & i).Value = 20
    End If

Next

En tout cas merci à tous pour votre aide, ça m'a vraiment bien aidé.

Problème résolu!

Bonjour,

Pour ma gouverne et voir si j'ai bien compris, est-on d'accord qu'il aurait été mieux de mettre

For i = 36 To 405 Step 41

au lieu de

For i = 36 To 405

?

Bonjour JoyeuxNoel,

Oui merci pour cette astuce, j'allais poser la question justement.

Il y a toujours un petit freeze quand la macro se lance du coup mais c'est pas très grave (à part si quelqu'un une solution).

Rechercher des sujets similaires à "optimiser calculs nombreux"