Macro pour éviter les if avec 3 critères

Bonjour,

J'aimerais faire une macro permettant de trier les recettes et les dépenses selon 3 critères. Seulement, je ne vois pas comment faire à part multiplier les IF en vba.

Les 3 critères sont les suivants :

1° l'équipe

2° le type de recette/dépense

3° le montant (si positif = à imputer dans tableau recette ; si négatif = à imputer dans tableau dépense)

Pourriez-vous m'expliquer ou me donner des pistes ?

Je vous en remercie d'avance

Salut Finplein et le forum

J'aimerais faire une macro permettant de trier les recettes et les dépenses selon 3 critères. Seulement, je ne vois pas comment faire à part multiplier les IF en vba.

Pas sûr de comprendre ce que tu attends. le If (ou le Si) demande une réponse vrai ou Faux => il faut donc que ta condition réunisse les 3 critères pour remplir la condition

1° l'équipe

2° le type de recette/dépense

3° le montant (si positif = à imputer dans tableau recette ; si négatif = à imputer dans tableau dépense)

Là, je ne si pas sûr de comprendre la différenciation des critères 2 et 3 : à priori, c'est le même, donc je vais rester sur le principe :

avec X, Y et Z comme données et A l'équipe :

(A=X)*("Recette"=Y)*(Z>0) : cette condition n'est vrai que dans le cas d'égalité de tous ses termes. Si au moins un des termes ne correspond pas (A<>X ou Y différent de "Recette" ou Z négatif ou égal à 0). Avec un, cent ou mille termes, le résultat vrai n'existe qu'une seule fois, tous les autres donnant un résultat faux.

Dans le cas qui nous intéresse, par formule, il en faut une seule, mais le résultat apparaitra à chaque fois avec un résultat Vrai ou un résultat faux, ce qui le rend illisible.

Donc, on passe par une macro, mais au lieu d'une condition unique, chaque terme va orienter l'endroit où inscrire le résultat => dans ce cas, il faut "hiérarchiser" les tests :

En admettant qu'on veuille renvoyer les dépenses sur une feuille et les recettes sur une autre, on va d'abord commencer par tester ce critère.

Si c'est une feuille par équipe, on teste d'abord l'équipe.

Puis on passe au suivant.

Pour les multiples tests de même niveau, plutôt qu'une succession de If, il est préférable d'utiliser Select Case :

Select Case X

case A

aller feuille A

case B

aller feuille B

case C

aller feuille C

case else

MsgBox "ce n'est pas une équipe"

end Select

N'ayant pas suffisamment d'infos, il est dur d'aider plus.

A+

J'avais mis le fichier et j'ai finalement réussi avec ceci (mais je me doute qu'il y a certainement moyen de simplifier l'histoire...) :

For x = 4 To 12
    For Z = 12 To 16
        Cells(x, Z).Value = ""
    Next
Next

For m = 18 To 26
    For n = 12 To 17
        Cells(m, n).Value = ""
    Next
Next

i = 4
While Cells(i, 3).Value <> ""

    For j = 4 To 12
        If Cells(j, 11).Value = Cells(i, 5).Value Then
                For k = 12 To 16
                    If Cells(3, k).Value = Cells(i, 6).Value Then
                        If Cells(i, 7).Value > 0 Then
                            Cells(j, k).Value = Cells(j, k).Value + Cells(i, 7).Value
                        End If
                    End If
                Next
        End If
    Next

    For p = 18 To 26
        If Cells(p, 11).Value = Cells(i, 5).Value Then
            For t = 12 To 17
                If Cells(17, t).Value = Cells(i, 6).Value Then
                    If Cells(i, 7).Value < 0 Then
                        Cells(p, t).Value = Cells(p, t).Value + Cells(i, 7).Value
                    End If
                End If
            Next
        End If
    Next

i = i + 1
Wend

End sub
Rechercher des sujets similaires à "macro eviter criteres"