Comparaison de deux listes

  • Initiateur de la discussion Initiateur de la discussion Boumekhila
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

Boumekhila

Guest
Bonjours tout le monde

j'ai une macro qui me donne erreure d'execution 13, si quel qu'un peut m'aidez, merci par avance

Option Explicit

Dim ListHisto, ListModif

Sub EcritLigne(Feuille As String, NumLigne As Long, Statut As String)
Dim Lig As Long
Lig = Sheets("comparison").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets(Feuille).Range("A" & NumLigne & "E" & NumLigne).Copy Sheets("comparison").Range("A" & Lig)
Sheets("comparison").Range("E" & Lig).Value = Statut
End Sub

Sub ComparAlarm()
Dim CodesHisto(), CodesModif()
Dim i As Long, j As Long
Application.ScreenUpdating = False
'Lecture valeurs historique
ListHisto = Sheets("Ancien").Range("A1").CurrentRegion.Value And Sheets("Ancien").Range("D1").CurrentRegion.Value
'Lecture valeurs modifs
ListModif = Sheets("Nouveau").Range("A1").CurrentRegion.Value And Sheets("Nouveau").Range("D1").CurrentRegion.Value
'On efface les résultats
Sheets("comparison").Range("A2:E" & Rows.Count).ClearContents
ReDim CodesHisto(2 To UBound(ListHisto, 1))
ReDim CodesModif(2 To UBound(ListModif, 1))
'Code uniques colonnes A et b
For i = 2 To UBound(ListHisto, 1)
CodesHisto(i) = ListHisto(i, 1) & "$" & ListHisto(i, 2)
Next i
For i = 2 To UBound(ListModif, 1)
CodesModif(i) = ListModif(i, 1) & "$" & ListModif(i, 2)
Next i
'Parcours des historiques
For i = 2 To UBound(ListHisto, 1)
If IsError(Application.Match(CodesHisto(i), CodesModif, 0)) Then
Call EcritLigne("Nouveau", i, "Effacé")
Else
j = Application.Match(CodesHisto(i), CodesModif, 0) + 1
If ListHisto(i, 3) <> ListModif(j, 3) Or ListHisto(i, 4) <> ListModif(j, 4) Or ListHisto(i, 5) <> ListModif(j, 5) Then
Call EcritLigne("Nouveau", i, "Modifié")
End If
End If
Next i
'Parcours des modifs
For i = 2 To UBound(ListModif, 1)
If IsError(Application.Match(CodesModif(i), CodesHisto, 0)) Then
Call EcritLigne("Nouveau", i, "Nouveau")
End If
Next i
Application.ScreenUpdating = True
End Sub
 
Re : Comparaison de deux listes

Bonsoir à tous
en #3
ListHisto = Sheets("Ancien").Range("A1").CurrentRegion.Value And Sheets("Ancien").Range("D1").CurrentRegion.Value
a ma connaissance tu ne peux pas donner a une variable les valeurs d'une plage de cellules alors 2 !
en #4
ListHisto = Range(Sheets("Ancien").Range("A1").CurrentRegion.Address, Sheets("Ancien").Range("D1").CurrentRegion.Address).Address
c'est une manière de réunir les deux plages en une puis ensuite avec un for each travailler les cellules une par une

avec un classeur exemple je comprendrai peut être mieux et ainsi pouvoir t'aider peut être plus efficacement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
782
Réponses
5
Affichages
909
Réponses
8
Affichages
390
Réponses
10
Affichages
661
Retour