Recherche factures dans liste
Bonjour tout le monde
J'ai deux listes de 2 colonnes adjacentes chacune, chaque liste dans une feuille ,colonne A et B ;depuis les cellules A2 et B2
La colonne A contient les numéros de factures la colonne B contient leurs dates.
La macro recherche :
Si une Facture ou plus avec sa/leurs date/s , de la feuille :"Recherche" sont présentes dans la feuille "Base" alors la ligne en question sera supprimée seulement de la feuille :"Recherche", sinon elle reste avec sa date dans la feuille "Recherche" avec la mention "Facture a payer" dans la cellule adjacente de de la colonne "C".
Cette macro fait ce travail mais elle est lente !!
Un grand Merci a vous si vous pouvez modifier le code pour augmenter la vitesse d’exécution .
Bonjour,
Je ne sais pas si j'ai compris ... teste le code suivant:
Sub Comparer()
Application.ScreenUpdating = False
Dim Lig2 As Long, Derlig2 As Long
Dim tablo2()
tablo = Sheets("Base").Range("A2:B" & Sheets("Base").Cells(Rows.Count, 1).End(xlUp).Row)
ReDim tablo2(UBound(tablo) - 1)
For i = 0 To UBound(tablo) - 1
tablo2(i) = tablo(i + 1, 1) & "#" & tablo(i + 1, 2)
Next i
With Sheets("Recherche")
Derlig2 = .Cells(Rows.Count, 1).End(xlUp).Row
For Lig2 = Derlig2 To 2 Step -1
If IsNumeric(Application.Match(.Cells(Lig2, 1) & "#" & .Cells(Lig2, 2), tablo2, 0)) Then .Cells(Lig2, 1).Interior.ColorIndex = 3
'If IsNumeric(Application.Match(.Cells(Lig2, 1) & "#" & .Cells(Lig2, 2), tablo2, 0)) Then .Cells(Lig2, 1).EntireRow.Delete
Next Lig2
End With
Application.ScreenUpdating = True
End SubDans un premier temps, le n° de facture existant est coloré en rouge (pour vérifier, avant de supprimer). Si les résultats sont corrects, mets en commentaire la ligne qui teste l'existence de la facture et la colore et supprime l'apostrophe à la ligne suivante
Un grand Merci a U. Milité
ta macro fonctionne parfaitement
Ci joint le fichier en question ,il contient la nouvelle macro en module 1
et l'ancienne en module 2.
Bonjour
Si après le lancement de la recherche par la macro au module 1 il ya des Factures a payer dans la feuille "Recherche"
et que l'utilisateur veut voir une remarque dans la colonne "C" devant chaque facture non payée il faut mettre dans le code
(la macro) ces 2 lignes dans l'ordre suivant :
If Not IsNumeric(Application.Match(.Cells(Lig2, 1) & "#" & .Cells(Lig2, 2), tablo2, 0)) Then .Cells(Lig2, 3) = "Facture a payer"
If IsNumeric(Application.Match(.Cells(Lig2, 1) & "#" & .Cells(Lig2, 2), tablo2, 0)) Then .Cells(Lig2, 1).EntireRow.Deleteet non dans cet ordre (par ce que j'ai fait le test):
If IsNumeric(Application.Match(.Cells(Lig2, 1) & "#" & .Cells(Lig2, 2), tablo2, 0)) Then .Cells(Lig2, 1).EntireRow.Delete
If Not IsNumeric(Application.Match(.Cells(Lig2, 1) & "#" & .Cells(Lig2, 2), tablo2, 0)) Then .Cells(Lig2, 3) = "Facture a payer"on aura dans la ligne 2 colonne "C" :"Facture a payer" même s'il n’y a rien!
Ci joint le fichier Excel ,la macro est dans le module 1, le bouton d’exécution est sur la feuille "Recherche"
Au revoir
Bonjour abdu,
Je ne comprends pas bien: il y a une question ?
Ceci étant, puisqu'on a supprimé les lignes des factures existantes, ... il ne reste donc plus que des "factures à payer", non ? Quel est dès lors l'intérêt d'ajouter cette mention pour chaque facture subsistant en feuille "Recherche" ?
Bonsoir U. Milité
Je ’écris ces lignes juste pour donner mon opinion.
Les factures que soumet l’utilisateur au test peuvent être ,soit payées ,impayées ou mélangées.
Si elles sont toutes payées , pas de problème l'utilisateur perçoit la liste vide; la macro a fait le boulot.
Si elles sont mélangées, les payées seront supprimées et si la liste est grande l’utilisateur peut soupçonner la macro
Si elles sont toutes non payées l’utilisateur peut soupçonné beaucoup la macro
Quelque fois en lançant des macros elles ne s’exécutent pas et VBA ne donne pas d'erreurs.
L'utilisateur aime toujours le visuel qui l'aide et le rassure.
C'est pourquoi j'ai ajouté dans le code une ligne qui écrit en rouge dans la colonne "C" : "Facture a payer"
Merci pour l'aide et l’intérêt que tu as donné au sujet.
A bientôt