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
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