Problème dans mon code

Résolu
Bonjour, j'ai fait une formule vba mais le problème c'est que ma formule ne m'affiche que "total" ou partiel " et non "accepté" ou "rejete"
voici mon code :
Public Sub TypeDeRemboursement3()
For ligne = 2 To 9
    If Cells(ligne, 6) = "Oui" Then
    'si c'est vrai
    Cells(ligne, 10).Value = "Accepté"

        If Cells(ligne, 5) >= Cells(ligne, 8) Then
            'si c'est vrai
            Cells(ligne, 10) = " Total"
        Else
            'si c'est faux
            Cells(ligne, 10).Value = " Partiel"
        End If
        
    Else 'si c'est faux
        Cells(ligne, 10).Value = " Rejeté"
    End If
Next ligne
End Sub


Merci de bien vouloir m'aider à identifier l'erreur que j'aurais pu commettre

6 réponses

  1. Modérateur
    Bonjour

    Qu'as tu comme valeurs dans tes colonnes E , F et H ?
    1. la colonne E se nomme "montant demandé" donc c'est un nombre comme 1500€ par exemple
      la colonne F c'est "Remboursement" il y a "oui" si le remboursement est accepté et si il est rejeté c'est "non"
      la colonne H c'est "Montant remboursé" donc si le montant demandé c'est 1500€ le montant remboursé est soit 1500€ ou moins comme 1200€
      1. Modérateur
        Oui ou oui ?
        Attention à la majuscule... Dans ton code tu as utilisé Oui avec un O majuscul ..

        dans l'idéal, il faudrait que tu nous montre un fichier d'exemple avec les données de façon à ce qu'on puisse vérifier le fonctionnement de ta macro.

        tu pourrais également exécuter cette macro en mode pas à pas et vérifier à chaque instruction la valeur des différentes variables en positionnant le pointeur de ta SOURIS dessus.
    2. Oui avec une majuscule oups, voici une image montrant ce que j'aimerais faire, donc en fait mon code normalement aurais du m'afficher "Accepté" si c'est "Oui" et "Rejeté" si c'est "Non" et rajouter après "Total" ou "Partiel" suivant si le montant demandé est le même ou inférieur au montant remboursé
      Merci de m'aider, vraiment c'est sympas ^^

      1. Modérateur
        J'ai l'impression que ce que tu veux faire c'est ça
        Sub TypeDeRemboursement()
        Dim l As Integer
        Dim valRemboursement As String ' colonne B
        Dim MontantR ' Montant remboursé colonne A
        Dim MontantD ' montant demandé colonne C
        Dim TypeR As String ' Type de remboursement colonne D
        
        
        For l = 1 To 10
            valRemboursement = Cells(l, 2).Value
            If UCase(valRemboursement) = "OUI" Then
                MontantD = Cells(l, 1).Value ' colonne A
                MontantR = Cells(l, 3).Value ' colonne C
                TypeR = "Accepté"
                If MontantD <= MontantR Then
                    TypeR = TypeR & " Total"
                Else
                    TypeR = TypeR & " Pariel"
                End If
            Else
              TypeR = " Rejeté"
            End If
            
            'On écrit dans la cellule
            Cells(l, 4).Value = TypeR
        Next
        
        

        1. j'ai essayé et ça fonctionne aussi comme ce que j'ai trouvé, mais le votre à l'air plus complexe et plus complet, merci beaucoup de votre en tout cas et je retiens pour la prochaine fois qu'il faut utiliser les balises de code.

          Bonne soirée
        2. Modérateur
          @theo1222Il n'est pas plus "complexe".
          Il est juste un peu plus découpé ... de façon à utiliser des variables (ayant des noms "parlants" ) de façon à rendre le code plus lisible que des simple cells(ligne,xxx ) dans tous les sens...
      2. J'ai tenté quelque chose d'autre mais c'est pas fini, c'est une test
        Public Sub TypeDeRemboursement3()
        For ligne = 2 To 9

        If Cells(ligne, 3) >= Cells(ligne, 1) Then
        Cells(ligne, 4).Value = "Accepté et Total"
        Else
        Cells(ligne, 4).Value = "Accepté et Partiel"

        End If

        Next ligne
        End Sub

        Mais malheureusement, je ne sais pas comment et ou ajouté un "esle" pour dire "Rejeté"
        ça donne ceci comme résultat