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 SubBonjour,
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_rangeBonjour 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