Supprimer des cellules à l’aide d’une boucle « For Each…Suivant » en boucle dans Excel

  • 9/28/2020
  • 3 minutes à lire
    • s
    • C
    • A
  • S’applique à : Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Office Excel 2002, Excel 97

Note

Office 365 ProPlus est renommé Microsoft 365 Apps for enterprise. Pour plus d’informations sur ce changement, lisez cet article de blog.

Summary

Microsoft Excel 2002 et les versions ultérieures d’Excel suppriment les cellules dans une boucle « For Each…Next » d’une manière différente de celle de Microsoft Excel 97 et des versions antérieures d’Excel.

Cet article décrit les différences, et il fournit un exemple de macro Visual Basic for Applications qui illustre comment supprimer des cellules dans une boucle.

Plus d’informations

Microsoft fournit des exemples de programmation à titre d’illustration uniquement, sans garantie explicite ou implicite. Cela inclut, sans s’y limiter, les garanties implicites de qualité marchande ou d’adéquation à un usage particulier. Cet article suppose que vous êtes familiarisé avec le langage de programmation présenté et avec les outils utilisés pour créer et déboguer les procédures. Les ingénieurs du support Microsoft peuvent vous aider à expliquer la fonctionnalité d’une procédure particulière. Cependant, ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou construire des procédures répondant à vos besoins spécifiques.

Données d’exemple

Pour utiliser la macro de cet article, tapez les données d’exemple suivantes dans une feuille de calcul :

A1: a B1: 1A2: b B2: 2A3: x B3: 3A4: x B4: 4A5: c B5: 5A6: x B6: 6A7: d B7: 7A8: x B8: 8A9: x B9: 9A10: e B10: 10

Macro d’exemple

Dans un nouveau module macro, tapez la macro suivante .

Comportement de la macro exemple dans Excel 2002 et dans les versions ultérieures d’Excel

Lorsque vous exécutez la macro DeleteCells dans Excel 2002 et dans les versions ultérieures d’Excel, seules les lignes 3, 6 et 8 sont supprimées. Bien que les lignes 4 et 9 contiennent un « x » dans la colonne A, la macro ne supprime pas les lignes. Les résultats de la macro sont les suivants :

A1: a B1: 1A2: b B2: 2A3: x B3: 4A4: c B4: 5A5: d B5: 7A6: x B6: 9A7: e B7: 10

Lorsque Microsoft Excel supprime la ligne 3, toutes les cellules remontent d’une ligne. Par exemple, la cellule A3 reprend le contenu de la cellule A4, la cellule A4 reprend le contenu de la cellule A5, et ainsi de suite. Après que la boucle For Each…Next a évalué une cellule, elle évalue la cellule suivante ; par conséquent, lorsque les cellules sont décalées, elles peuvent être sautées par la boucle.

Comportement de la macro exemple dans Microsoft Excel 5.0 et Microsoft Excel 7.0

Lorsque vous exécutez la macro DeleteCells dans Excel 5.0 et dans Excel 7.0, la macro supprime toutes les lignes qui contiennent un « x ». Les résultats de la macro sont les suivants :

A1: a B1: 1A2: b B2: 2A3: c B3: 5A4: d B4: 7A5: e B5: 10

Lorsque la ligne 3 est supprimée, toutes les cellules remontent d’une ligne. Ensuite, la cellule A3 prend le contenu de la cellule A4, la cellule A4 prend le contenu de la cellule A5, et ainsi de suite.

Toutefois, contrairement au comportement de la boucle dans Excel 2002 et dans les versions ultérieures d’Excel, lorsque la boucle « For Each…Next » évalue une cellule dans Excel 5.0 et dans Excel 7.0, la boucle réévalue la cellule si elle est supprimée dans la boucle. Par conséquent, les cellules ne sont pas sautées.

Méthode recommandée pour l’utilisation d’une boucle pour supprimer des cellules

Utilisez la macro suivante lorsque vous voulez utiliser une boucle pour supprimer des cellules :

Les résultats de cette macro dans toutes les versions d’Excel sont les suivants :

A1: a B1: 1A2: b B2: 2A3: c B3: 5A4: d B4: 7A5: e B5: 10

Méthode supplémentaire pour l’utilisation d’une boucle pour supprimer des cellules

C’est une méthode alternative à la méthode qui est montrée ci-dessus. Cette méthode produit les mêmes résultats.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.