Message d'erreur lors de la suppression de nombreuses lignes
Akon93
-
Akon93 -
Akon93 -
Bonjour,
Je travaille sur un gros tableau d'environ 30 000 lignes et qui prend 10Mo environ.
Il y a de très nombreuses lignes seulement partiellement complètes dans le sens ou certaines colonnes sont important mais dans au moins 2 cas sur 3 elles sont vides. Du coup j'ai besoin de supprimer ces lignes car elles sont pour moi inutiles.
Pour cela j'ai fait une boucle ou je vérifie si ces colonnes sont vides ou non, et si tel est le cas je supprime la ligne entière.
Malheureusement je reçois le message d'erreur suivant :
"Excel ne peut pas terminer cette tâche avec les ressources disponibles.
Sélectionnez moins de données ou fermez des applications"
Quand j'essaie la boucle seulement sur les 200 premières lignes par exemple alors cela marche très bien.
J'ai vérifié ma corbeille peut contenir dans les 100Mo donc je ne m'explique pas le problème. Pouvez-vous m'aider ?
je vous transmet le code :
' taille est le nombre de ligne de mon tableau
s=taille
' mois un entier entre 1 et 12
While s > 3
b = False
for h = mois To 12 'il y a plusieurs controles à faire selon la valeur de h c'est pk j'ia fait cette boucle
If Cells(s, 8 + mois + (h - mois) * 4) <> "" Then
b = True
Exit For
End If
Next
If b = False Then
Sheets("Data").Rows(s).EntireRow.Delete Shift:=xlUp
End If
s = s - 1
Wend
peut-être que ma méthode n'est pas la plus simple, si vous avez mieux et que ça marche je suis rpenneur.
merci beaucoup pour votre aide!
Je travaille sur un gros tableau d'environ 30 000 lignes et qui prend 10Mo environ.
Il y a de très nombreuses lignes seulement partiellement complètes dans le sens ou certaines colonnes sont important mais dans au moins 2 cas sur 3 elles sont vides. Du coup j'ai besoin de supprimer ces lignes car elles sont pour moi inutiles.
Pour cela j'ai fait une boucle ou je vérifie si ces colonnes sont vides ou non, et si tel est le cas je supprime la ligne entière.
Malheureusement je reçois le message d'erreur suivant :
"Excel ne peut pas terminer cette tâche avec les ressources disponibles.
Sélectionnez moins de données ou fermez des applications"
Quand j'essaie la boucle seulement sur les 200 premières lignes par exemple alors cela marche très bien.
J'ai vérifié ma corbeille peut contenir dans les 100Mo donc je ne m'explique pas le problème. Pouvez-vous m'aider ?
je vous transmet le code :
' taille est le nombre de ligne de mon tableau
s=taille
' mois un entier entre 1 et 12
While s > 3
b = False
for h = mois To 12 'il y a plusieurs controles à faire selon la valeur de h c'est pk j'ia fait cette boucle
If Cells(s, 8 + mois + (h - mois) * 4) <> "" Then
b = True
Exit For
End If
Next
If b = False Then
Sheets("Data").Rows(s).EntireRow.Delete Shift:=xlUp
End If
s = s - 1
Wend
peut-être que ma méthode n'est pas la plus simple, si vous avez mieux et que ça marche je suis rpenneur.
merci beaucoup pour votre aide!
A voir également:
- Message d'erreur lors de la suppression de nombreuses lignes
- Forcer la suppression d'un fichier - Guide
- Recuperer message whatsapp supprimé - Guide
- Partage de photos en ligne - Guide
- Message supprimé whatsapp - Guide
- Message absence thunderbird - Guide
3 réponses
Bonjour,
Quand tu entre dans la procédure mois vaux combien ?
Quel sont les colonnes à tester ?
Comment tu déclare ta variable "s" ?
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
Quand tu entre dans la procédure mois vaux combien ?
If Cells(s, 8 + mois + (h - mois) * 4) <> "" Then
Quel sont les colonnes à tester ?
Comment tu déclare ta variable "s" ?
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
Bonjour,
certaines colonnes sont important mais dans au moins 2 cas sur 3 elles sont vides. Du coup j'ai besoin de supprimer ces lignes car elles sont pour moi inutiles. Vous melangez lignes et colonnes, votre programme supprime une ligne des qu'il trouve une cellule vide dans la plage mois choisi a 12 et cela meme si les cellules pour les autres mois sont non vides. A ce detail près, J'ai fait un test en supprimant 30000 lignes, ca passe sans probleme si vous avez un PC un peu costaud, autrement ca force un peu.
J'ai vérifié ma corbeille peut contenir dans les 100Mo donc je ne m'explique pas le problème. Rien a voir avec votre probleme.
A+
certaines colonnes sont important mais dans au moins 2 cas sur 3 elles sont vides. Du coup j'ai besoin de supprimer ces lignes car elles sont pour moi inutiles. Vous melangez lignes et colonnes, votre programme supprime une ligne des qu'il trouve une cellule vide dans la plage mois choisi a 12 et cela meme si les cellules pour les autres mois sont non vides. A ce detail près, J'ai fait un test en supprimant 30000 lignes, ca passe sans probleme si vous avez un PC un peu costaud, autrement ca force un peu.
J'ai vérifié ma corbeille peut contenir dans les 100Mo donc je ne m'explique pas le problème. Rien a voir avec votre probleme.
A+
Bon je reexplique car je n'ai pas été clair visiblement.
J'ai un fichier de 40.000 lignes environ.
Les colonnes sont de ce type
C1-C2-C3-C4-C5-C6-C7-C8-Janvier-C10-C11-C12-Févr-C14-C15-C16-Mars-C18-C19-C20-Avr-C22-C23-C24-Mai-C26-C27-C28-Juin.....
Je choisis un mois, par ex 4 qui correspond à Avril.
Je veux supprimer toutes les lignes dont les cellules à toutes les colonnes des mois Avril à décembre sont vides.
Par ex si j'ai (ligne 25 ; colones Mai) = 154871 alors je garde la ligne 25
Si j'ai (ligne 26 ; colones avril) et (ligne 26 ; colones mai) et (ligne 26; colones juin) ...(jusqu'à décembre) vide alors je supprime la ligne 26.
J'ai vérifié la formule me parait bonne. Par contre j'ai revérifier et il est vrai qu'il y a environ 30.000 lignes à supprimer et seulement 1000 à garder donc peut-être qu'il y na un meilleur moyen de faire ce que je veux (par exemple en copiant les lignes que je veux garder ?)
J'ai un fichier de 40.000 lignes environ.
Les colonnes sont de ce type
C1-C2-C3-C4-C5-C6-C7-C8-Janvier-C10-C11-C12-Févr-C14-C15-C16-Mars-C18-C19-C20-Avr-C22-C23-C24-Mai-C26-C27-C28-Juin.....
Je choisis un mois, par ex 4 qui correspond à Avril.
Je veux supprimer toutes les lignes dont les cellules à toutes les colonnes des mois Avril à décembre sont vides.
Par ex si j'ai (ligne 25 ; colones Mai) = 154871 alors je garde la ligne 25
Si j'ai (ligne 26 ; colones avril) et (ligne 26 ; colones mai) et (ligne 26; colones juin) ...(jusqu'à décembre) vide alors je supprime la ligne 26.
J'ai vérifié la formule me parait bonne. Par contre j'ai revérifier et il est vrai qu'il y a environ 30.000 lignes à supprimer et seulement 1000 à garder donc peut-être qu'il y na un meilleur moyen de faire ce que je veux (par exemple en copiant les lignes que je veux garder ?)
bon j'ai reessayé l'opération de manière manuelle sur excel en utilisant les filtres (en affichant juste les trucs vide) et quand je supprime toutes les lignes (env 30.000) ça me met le meme message d'erreur donc effectivement le probleme semble etre qu'il y a trop de données à effacer d'un coût.
Du cup, à moins que quelqu'un me propose mieux, je vais simplement copier sur une autre feuille les données que je veux garder et ensuite supprimer la feuille.
Du cup, à moins que quelqu'un me propose mieux, je vais simplement copier sur une autre feuille les données que je veux garder et ensuite supprimer la feuille.
Les colonnes à tester sont les 8 + mois + (h-mois)*4. Pour être plus clair j'ai une colonne "total" pour chaque mois (de 1 à 12), et selon la valeur du mois je veux vérifier si toutes les colonnes du mois souhaité jusqu'à 12 sont vides ou non. Si oui je les supprimes
de mémoire (je n'ai pas accès au fichier avant lundi matin) s est déclarée ainsi : Range("A1048576").End(xlUp).Row (je ne suis plus 100% sûr de ça mais n tout cas j'avais vérifié la valeur de s et elle est bonne).