Conditions identiques avec résultats différents

Bonjour,

Je débute dans VBA et malgré de nombreuses recherches et multiples essais, je ne trouve pas la solution à mon problème ...

Au départ j'ai la base de données ci-jointe sans les colonnes L et M

11tableau-fd.docx (39.94 Ko)

Je souhaite que les colonnes L et M se complètent automatiquement d'après les informations contenues dans les colonnes H et J.

J'ai donc fait la macro suivante :

Range("H2").Select

Do While ActiveCell.Value <> ""

CODE_A = ActiveCell.Value

TYPE_F = ActiveCell(0, 3).Value

If CODE_A = "9110" And TYPE_F = "Repas" Then

ActiveCell(0, 5) = "6256"

ActiveCell(0, 6) = "Déplacement"

ElseIf CODE_A = "9110" And TYPE_F = "Indemnité kilométrique" Then

ActiveCell(0, 5) = "6251"

ActiveCell(0, 6) = "Déplacement"

ElseIf CODE_A = "9110" And TYPE_F = "Autre frais" Then

ActiveCell(0, 5) = "6251"

ActiveCell(0, 6) = "Déplacement"

Etc... avec toutes les conditions différentes

Else

ActiveCell(0, 5) = "?"

ActiveCell(0, 6) = "?"

End If

ActiveCell.Offset(1, 0).Select

Loop

Je pensais qu'elle fonctionnait mais comme on peut le constater dans le tableau joint ci dessus, des conditions identiques donnent un résultat différent...

Ex : 9110 (col H) + repas (col J) donnent 6256 (col L) + déplacement (col M) ce qui est le résultat attendu

Mais sur une autre ligne : 9110 + repas donnent 6256 + formation (résultat erroné)

Je pense en outre qu'il existe certainement une macro plus simple...

Vous remerciant d'avance pour votre aide.

Bonjour,

Il aurait été plus gentil de fournir un bout de fichier Excel.

Un essai ...

Sub test()

    Range("H2").Select

    Do While ActiveCell.Value <> ""

        CODE_A = ActiveCell.Value
        TYPE_F = ActiveCell.Offset(0, 2).Value

        If CODE_A = "9110" And TYPE_F = "Repas" Then
            ActiveCell.Offset(0, 4) = "6256"
            ActiveCell.Offset(0, 5) = "Déplacement"

        ElseIf CODE_A = "9110" And TYPE_F = "Indemnité kilométrique" Then
            ActiveCell.Offset(0, 4) = "6251"
            ActiveCell.Offset(0, 5) = "Déplacement"

        ElseIf CODE_A = "9110" And TYPE_F = "Autre frais" Then
            ActiveCell.Offset(0, 4) = "6251"
            ActiveCell.Offset(0, 5) = "Déplacement"

            '''Etc... avec toutes les conditions différentes

        Else
            ActiveCell.Offset(0, 4) = "?"
            ActiveCell.Offset(0, 5) = "?"

        End If

        ActiveCell.Offset(1, 0).Select
    Loop
End Sub

ric

Bonsoir @Eléonore72,

Essaye en remplaçant :

TYPE_F = ActiveCell(0, 3).Value

par

TYPE_F = ActiveCell(0, 2).Value

Cette méthode ne me paraît pas très souple à utiliser, je te propose de mettre tes conditions et les valeurs que tu souhaites dans un même tableau et de récupérer ces valeurs par des formules (voir fichier joint).

Merci beaucoup à tous les deux pour vos réponses rapides.

Ric => J'ai testé les modifications, cela fonctionne parfaitement, je penserai la prochaine fois à joindre le fichier.

Valky68 => Je n'ai pas encore utilisé ton tableau mais je compte me l'approprier prochainement car cette solution me semble intéressante.

Merci encore à tous les deux, je vais pouvoir avancer

Rechercher des sujets similaires à "conditions identiques resultats differents"