Conditions identiques avec résultats différents Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
E
Eléonore72
Nouveau venu
Nouveau venu
Messages : 2
Inscrit le : 15 août 2019
Version d'Excel : 2007

Message par Eléonore72 » 15 août 2019, 19:51

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
Tableau FD.docx
(39.94 Kio) Téléchargé 4 fois
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.
Avatar du membre
ric
Membre impliqué
Membre impliqué
Messages : 2'429
Appréciations reçues : 205
Inscrit le : 29 mai 2018
Version d'Excel : 365 fr 32 bits

Message par ric » 15 août 2019, 20:15

Bonjour,

Il aurait été plus gentil de fournir un bout de fichier Excel. :bof:
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
Un bon dépanneur : la touche F8 pour faire un Pas-à-Pas sur le code. :mrgreen:
Avatar du membre
Valky68
Membre habitué
Membre habitué
Messages : 61
Appréciations reçues : 7
Inscrit le : 23 avril 2017
Version d'Excel : 2016 FR

Message par Valky68 » 15 août 2019, 20:16

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).
Conditions identiques.xlsx
(52.93 Kio) Téléchargé 3 fois
E
Eléonore72
Nouveau venu
Nouveau venu
Messages : 2
Inscrit le : 15 août 2019
Version d'Excel : 2007

Message par Eléonore72 » 17 août 2019, 19:17

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 :)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message