Liste de factures

Bonsoir à tous,

Je viens d'écrire une macro qui me permet de "lister" les différentes factures payées par des clients à une entreprise, à partir d'imports Excel mensuels.

Plus particulièrement, j'ai un onglet "Profit and Loss" qui correspond au compte de résultat de mon entreprise, et un onglet "Invoices - All History" qui contient donc cette liste des factures à actualiser au mois le mois.

Dans mon onglet "Profit and Loss" j'ai également toute une série de dépenses, c'est pourquoi j'ai isolé, dans la première partie de mon code, la partie "Revenus", qui contient les factures à lister. Les variables beg_range et end_range renvoient respectivement les valeurs 8 et 13.

Dans la seconde partie de mon code, je souhaite tester si le contenu de la colonne C de cette partie "Revenus" contient les mots "Invoice" ou "Journal Entry". Si c'est bien le cas, alors je stocke dans différentes variables des informations concernant la facture en question, à savoir la date, le numero de facture, le client et le montant.

Ces différentes variables viennent nourrir mon deuxième onglet "Invoices - All History", ce qui permet donc de réaliser un historique de l'ensemble des factures payées au mois le mois.

Dans le cas du mois de février 2019, le test "If" devrait en principe être positif pour les lignes 10 et 11 (sur l'ensemble des lignes 8 à 13). Cependant, et c'est là mon problème, seule la facture en ligne 10 vient alimenter mon onglet d'historique.

J'ai bien vérifié, et l n'y a pas de faute de frappe dans mon onglet source de "Profit and Loss", et la ligne 11 contient bien le mot "Invoice".

Auriez-vous une idée d'où l'erreur pourrait provenir ?

Un très grand merci par avance à celui ou celle qui pourra m'aider !!

J'espère vraiment avoir été claire, mais ce n'est pas évident à expliquer donc n'hésitez pas si vous voulez davantage de précisions.

Sub All_Invoices()

Dim WS1 As Worksheet, WS2 As Worksheet
Dim i As Integer
Dim beg_range As Integer, end_range As Integer

    Set WS1 = Worksheets("Profit and Loss")
    Set WS2 = Worksheets("Invoices - All History")

    WS1.Activate

    For Each cell In WS1.Range("A1:A1000").Cells
        If cell.Cells.Value = "      Revenue" Then
        beg_range = cell.Row
        MsgBox (beg_range)
        End If
        If InStr(1, cell.Cells.Value, "Total for Revenue") Then
        end_range = cell.Row
        MsgBox (end_range)
        End If
    Next cell

  For i = beg_range To end_range

        If InStr(1, Range("C" & i).Value, "Invoice") Or InStr(1, Range("C" & i).Value, "Journal Entry") Then
        dte = Range("C" & i).Offset(0, -1).Value
        num = Range("C" & i).Offset(0, 1).Value
        customer = Range("C" & i).Offset(0, 2).Value
        amount = Range("C" & i).Offset(0, 5).Value

        WS2.Activate
        lastlign = WS2.Cells.Find("*", , , , xlByRows, xlPrevious).Row
        firstlign = lastlign + 1
        WS2.Range("A" & firstlign).Value = dte
        WS2.Range("B" & firstlign).Value = num
        WS2.Range("C" & firstlign).Value = customer
        WS2.Range("D" & firstlign).Value = amount
        End If

  Next i

End Sub

Bonjour,

Sans fichier cela va être difficile de répondre.

Remplace Instr par like avec un astérisque avant et après le terme

If Range("C" & i).Value like "*Invoice*"

Vérifie aussi ta valeur end_range

msgbox end_range
For i = beg_range To end_range

Bonjour Steelson,

Merci pour ta réponse !

J'ai testé avec un msgbox et end_range renvoie bien 13. J'ai également testé Like au lieu de Instr, sans succès.

Encore un grand merci !

Bonne journée,

Clémence

Rechercher des sujets similaires à "liste factures"