Bonsoir,
J'ai écrit ces 2 procédures (complété par une personne sympa du forum et je l'en remercie). Elle fonctionne sur un classeur et sur celui cela bogue et je ne comprends pas pourquoi. J'ai vérifié que le nom de ma feuille soit identique et rien n'y fait. Aussi j'envoie un message d'aide car quand on a le nez dans le guidon on ne voit plus rien.
Voici la procédure 1 qui ne fonctionne pas. J'ai un message d'erreur à la ligne for each :
Option Explicit
Sub comparaisonBalance()
Worksheets("comparaisonBalN").Activate
Dim cellule_2007 As Range
Dim y_comparaison As Integer
Dim range_2007, range_2008 As String
range_2007 = "A11:A" & calcMaxRow("balanceN-1")
range_2008 = "A11:A" & calcMaxRow("balanceN")
y_comparaison = 5
For Each cellule_2007 In Worksheets("balanceN-1").Range(range_2007)
If Worksheets("balanceN").Range(range_2008).Find(cellule_2007.Value, LookIn:=xlValues) Is Nothing Then
' copie les n° de cptes manquants
Sheets("comparaisonBalN").Cells(y_comparaison, 1).Value = cellule_2007.Value
'copie les intitulés de comptes manquants
Sheets("comparaisonBalN").Cells(y_comparaison, 2).Value = cellule_2007.Offset(, 1).Value
y_comparaison = y_comparaison + 1
End If
Next cellule_2007
End Sub
Function calcMaxRow(une_feuille As String)
Dim y As Integer
y = 11
Do While Sheets(une_feuille).Cells(y, 1) <> ""
y = y + 1
Loop
End Function
Voici la procédure 2 qui fonctionne :
Sub ComparaisonBalanceN_1()
Worksheets("comparaisonBalanceN-1").Activate
Dim cellule_2008 As Range
Dim y_comparaison As Integer
Dim range_2007, range_2008 As String
range_2008 = "A11:A" & calcMaxRow("BalanceN-1")
range_2007 = "A11:A" & calcMaxRow("BalanceN")
y_comparaison = 5
For Each cellule_2008 In Worksheets("BalanceN").Range(range_2008)
If Worksheets("balanceN-1").Range(range_2007).Find(cellule_2008.Value, LookIn:=xlValues) Is Nothing Then
Sheets("ComparaisonBalanceN-1").Cells(y_comparaison, 1).Value = cellule_2008.Value
Sheets("ComparaisonBalanceN-1").Cells(y_comparaison, 2).Value = cellule_2008.Offset(, 1).Value
y_comparaison = y_comparaison + 1
End If
Next cellule_2008
End Sub
Function calcMaxRow(une_feuille As String)
Dim y As Integer
y = 11
Do While Sheets(une_feuille).Cells(y, 1) <> ""
y = y + 1
Loop
calcMaxRow = y - 1
End Function
Je remercie vivement la personne qui pourra solutionner ce problème
Bonne soirée