Bonjour,
Je suis face à un petit problème. J'ai une macro qui fonctionne très bien mais je me suis rendu compte que dépassé une certaine ligne la macro affiche un message d'erreur: "dépacement de capacité", cela se produit environ à partir de la 30000eme ligne.
Pouvez vous m'aider afin de pouvoir faire en sorte que la marcro continue de tourner même avec + de 50000 lignes, car j'ai un fichier qui va être utilisé durant une année complete et du coup il y a beaucoup de ligne. j'aurais tendance à dire que j'ai besoin d'environ 75000 lignes.
Voici la macro:
Sub Dispatch3()
Dim i As Integer, j As Integer, k As Integer, l As Integer, derligne As Range 'Déclaration des variables
Set derligne = Feuil1.Range("B" & Rows.Count).End(3).Rows
If MsgBox("Voulez vous lancer la macro ?", vbYesNo) = vbNo Then Exit Sub 'Si la réponse est non, on sort de la procédure
For i = 2 To Sheets.Count 'Pour i= 2 jusqu'au nombre de feuilles du classeur
Sheets(i).[A10].CurrentRegion.Clear 'Pour chaque feuille, on supprime tout ce qu'il y a autour de la cellule A9
For l = 2 To derligne.Row
If Cells(l, 2) Like Sheets(i).Name Then 'si la cellule (i,2), donc B2 est égale au nom de la feuille, alors
For j = l To Range("B" & Rows.Count).End(3).Row 'pour j=1 jusqu'à la dernière ligne vide en remontant du bas
If Cells(j, 2) Like Sheets(i).Name Then 'si la cellule (j,2), donc A2 est égale au nom de la feuille, alors
If Sheets(i).Range("A10") = "" Then 'si sur la feuille concernée la cellule A9 est vide alors
Sheets(i).Range("A10") = Cells(j, 1) 'on écrit les données de la 1ère feuille en A9
For k = 1 To 26 'pour k de 1 à 26
Sheets(i).Range("A" & Rows.Count).End(3).Rows(1).Offset(, k) = Cells(j, k + 1) 'on écrit la suite sur les 26 colonnes
Next
Else 'sinon
Sheets(i).Range("A" & Rows.Count).End(3).Rows(2) = Cells(j, 1) 'on écrit à partir de la dernière cellule vide trouvée
For k = 1 To 26
Sheets(i).Range("A" & Rows.Count).End(3).Rows(1).Offset(, k) = Cells(j, k + 1)
Next
End If
End If
Exit For
Next
End If
Next l
Next 'et on recommence pour la ligne suivante
MsgBox "Opération terminée"
End Sub
Merci par avance pour votre aide.
Cordialement.
T.
Je suis face à un petit problème. J'ai une macro qui fonctionne très bien mais je me suis rendu compte que dépassé une certaine ligne la macro affiche un message d'erreur: "dépacement de capacité", cela se produit environ à partir de la 30000eme ligne.
Pouvez vous m'aider afin de pouvoir faire en sorte que la marcro continue de tourner même avec + de 50000 lignes, car j'ai un fichier qui va être utilisé durant une année complete et du coup il y a beaucoup de ligne. j'aurais tendance à dire que j'ai besoin d'environ 75000 lignes.
Voici la macro:
Sub Dispatch3()
Dim i As Integer, j As Integer, k As Integer, l As Integer, derligne As Range 'Déclaration des variables
Set derligne = Feuil1.Range("B" & Rows.Count).End(3).Rows
If MsgBox("Voulez vous lancer la macro ?", vbYesNo) = vbNo Then Exit Sub 'Si la réponse est non, on sort de la procédure
For i = 2 To Sheets.Count 'Pour i= 2 jusqu'au nombre de feuilles du classeur
Sheets(i).[A10].CurrentRegion.Clear 'Pour chaque feuille, on supprime tout ce qu'il y a autour de la cellule A9
For l = 2 To derligne.Row
If Cells(l, 2) Like Sheets(i).Name Then 'si la cellule (i,2), donc B2 est égale au nom de la feuille, alors
For j = l To Range("B" & Rows.Count).End(3).Row 'pour j=1 jusqu'à la dernière ligne vide en remontant du bas
If Cells(j, 2) Like Sheets(i).Name Then 'si la cellule (j,2), donc A2 est égale au nom de la feuille, alors
If Sheets(i).Range("A10") = "" Then 'si sur la feuille concernée la cellule A9 est vide alors
Sheets(i).Range("A10") = Cells(j, 1) 'on écrit les données de la 1ère feuille en A9
For k = 1 To 26 'pour k de 1 à 26
Sheets(i).Range("A" & Rows.Count).End(3).Rows(1).Offset(, k) = Cells(j, k + 1) 'on écrit la suite sur les 26 colonnes
Next
Else 'sinon
Sheets(i).Range("A" & Rows.Count).End(3).Rows(2) = Cells(j, 1) 'on écrit à partir de la dernière cellule vide trouvée
For k = 1 To 26
Sheets(i).Range("A" & Rows.Count).End(3).Rows(1).Offset(, k) = Cells(j, k + 1)
Next
End If
End If
Exit For
Next
End If
Next l
Next 'et on recommence pour la ligne suivante
MsgBox "Opération terminée"
End Sub
Merci par avance pour votre aide.
Cordialement.
T.