michele_ | Bonjour,
J'ai créé une macro qui plante quand je la lance au bout d'un certain nombre de lignes.
En effet, ma boucle plante au bout d'environ 250 lignes Voici mon code :
Code :
- Public MyArray
- Sub CalculControleCode()
-
- MyArray = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" )
- ' Copie des EGP
- Sheets("TCD retravaillé" ).Select
- Range("A5:A" & Cells(Rows.Count, 1).End(xlUp).Row).Copy _
- destination:=Sheets("Contrôle" ).Range("A3" )
-
- Sheets("Contrôle" ).Select
-
- '
- Call Boucle(MyArray(1), 2)
- Call Boucle(MyArray(4), 8)
- Call Boucle(MyArray(7), 14)
- Call Boucle(MyArray(10), 20)
- '
- End Sub
- Sub Boucle(ByVal MaColonne As String, ByVal MonIndex As Integer)
- '
- Dim Maligne As Integer
- Dim MaValeur As String
- Dim Resultat As String
-
- Maligne = 3
- Do
- '
- MaValeur = Sheets("Contrôle" ).Range("A" & Maligne).Value
- '
- For i = MonIndex To (MonIndex + 5)
- '
- If Maligne = 257 Then
- Debug.Print "Ligne 257"
- End If
-
- Resultat = Recherche1(MaValeur, MyArray(i))
- '
- If Resultat <> "-" Then
- '
- Sheets("Contrôle" ).Range(MaColonne & Maligne).Value = Resultat
- Exit For
- '
- End If
- '
- Next
-
- Maligne = Maligne + 1
- '
- Loop Until Sheets("Contrôle" ).Range("A" & Maligne).Value = ""
- '
- End Sub
- Function Recherche1(ByVal MaValeur As Variant, ByVal MaColonne As String)
- '
- '
- ligne = 0
- '
- Do
- ligne = ligne + 1
- Cible = Sheets("PB" ).Range("B" & ligne).Value
- Loop Until Cible = MaValeur
- '
- Recherche1 = Sheets("PB" ).Range(MaColonne & ligne).Value
- '
- End Function
|
Si vous avez une idée de comment je peux vider la mémoire au fur et à mesure que ma boucle passe ... ce serait génial
D'ailleurs, le code fonctionne parfaitement quand je suis sur peu de lignes ....
Merci |