Accueil > Forum > > > > [VBA]Suppression de lignes en fonction de la valeur d'une cellule pour différente colonne
[VBA]Suppression de lignes en fonction de la valeur d'une cellule pour différente colonne
jeudi 15 mai 2008 à 14:36:35 |
[VBA]Suppression de lignes en fonction de la valeur d'une cellule pour différente colonne

Tokh
|
Bonjour à tous,
Déjà désolé si la question 'est pas au bon endroit, j'ai choisi de la mettre dans la section débutante vb.net et VB 2005 plutôt que dans la partie Visual Basic 6 / Langages dérivés / VBA étant donné que je débute totalement en VBA.
Je vous expose mon problème. J'aimerais, dans une feuille excel, parcourir toutes les cellules de certaines colonnes et pour chaque cellule, si celle-ci n'est pas vide, qu'il me supprime la ligne correspondante.
Voici l'extrait du code correspondant : Dim i, j As Integer
Sheets("DROITS N0 N1 N2").Activate For i = 4 To nbColonnes For j = 2 To nbLignes If Not Cells(j, i).Value = Empty Then Rows(j).Delete Shift:=xlUp End If Next Next
Commme vous pouvez le voir j'ai décidé de commencer à la ligne 2 et la colonne 4. Autrement dit, je souhaite que cette boucle parcourt chaque cellule de la feuille à partir de la ligne 2 et la colonne 4 jusqu'à la dernière cellule de la colonne et de la ligne de la feuille.
nbColonnes et nbLignes correspondant à la dernière colonne et dernière ligne de ma feuille. nbColonnes = Cells.Find("*", Range("A1"), , , xlByColumns, xlPrevious).Column nbLignes = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
Cette petite boucle semble marcher. Cependant certaines lignes ne sont pas supprimées alors qu'elles devraient l'être puisque il y a une valeur dans une cellule de la colonne 4.
Pourriez vous m'aider à résoudre mon pb en m'indiquant mes erreurs svp?
Merci d'avance
|
|
jeudi 15 mai 2008 à 14:58:36 |
Re : [VBA]Suppression de lignes en fonction de la valeur d'une cellule pour différente colonne

lillith212
|
Bonjour,
Petite question, as tu fais un pas à pas en mettant des espions en essayant de voir pourquoi ces cellules ne sont pas effacées?
Remarque : '-- C'est un mieux pour ta déclaration de variable Dim i as integer Dim j As Integer
SLB
--------------------------------------------------------------- Il faut beaucoup donner pour recevoir un tout petit peu... ---------------------------------------------------------------
|
|
jeudi 15 mai 2008 à 15:36:52 |
Re : [VBA]Suppression de lignes en fonction de la valeur d'une cellule pour différente colonne
|
jeudi 15 mai 2008 à 15:38:10 |
Re : [VBA]Suppression de lignes en fonction de la valeur d'une cellule pour différente colonne

Tokh
|
Bonjour Lillith,
Merci pour ta réponse. En cherchant, j'ai remplacé la ligne Rows(j).Delete Shift:=xlUp par Rows(j).ClearContents
Il semblerait qu'avec cette ligne de code, toutes mes lignes ayant une valeur après la colonne 4 jusqu'à la colonne désirée soient effacées. Il y a un donc un pb avec la ligne de code qui supprime la ligne plutôt que l'effacer.
Peut être une piste à travailler.
|
|
jeudi 15 mai 2008 à 20:50:35 |
Re : [VBA]Suppression de lignes en fonction de la valeur d'une cellule pour différente colonne

mortalino
|
Réponse acceptée !
salut, lol f0xi  Pour ton souci, c'est simple. Pourquoi certaines lignes n'étaient pas supprimées ? Tout simplement car il faut partir de la dernière ligne vers la première (il faut donc inverser ta boucle). Exemple : Ta boucle s'effectue, et PAF, ligne 4, elle n'est pas vide (donc là, j vaut 4). Ton instruction delete supprime la ligne donc, jusque là logique. Mais que se passe-t-il à ce moment, la ligne qui était placé en 5eme position remonte d'une place, donc devient la 4eme. Mais ta boucle, elle, continue. Donc j passe à 5, mais si la ligne de tout à l'heure faisait partie de la conition pour être effacée, elle passe à l'as. Conclusion : Sheets("DROITS N0 N1 N2").Activate For i = 4 To nbColonnes For j = 2 To nbLignes For j = nbLignes To 2 Step -1 If Not Cells(j, i).Value = Empty Then Rows(j).Delete Shift:=xlUp End If Next Next @++ le mystérieux chevalier,"Provençal, le gaulois" Forum Office & VBA
|
|
jeudi 15 mai 2008 à 23:48:39 |
Re : [VBA]Suppression de lignes en fonction de la valeur d'une cellule pour différente colonne

MPi
|
Il faudrait aussi savoir si tu effaces la ligne si une seule cellule de la ligne est vide ou si toutes les cellules doivent être vides... De la façon dont la boucle est faite, tu commences par te placer en colonne 4 et tu vérifies toutes les lignes de cette colonne en effaçant au fur et à mesure. Ensuite, tu passes à la colonne 5 et tu refais toutes les lignes. Puis la colonne 6... Essaie comme ceci si une seule cellule vide suffit pour effacer la ligne Dim I As Long, nbLignes As Long, nbColonnes As Long nbLignes = Cells(Rows.Count, ("A")).End(xlUp).Row nbColonnes = Cells(1, Columns.Count).End(xlToLeft).Column For I = nbLignes To 2 Step -1 If WorksheetFunction.Count(Range(Cells(I, 4), Cells(I, nbColonnes))) < nbColonnes - 3 Then Rows(I).Delete End If Next MPi² Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
|
|
jeudi 15 mai 2008 à 23:51:28 |
Re : [VBA]Suppression de lignes en fonction de la valeur d'une cellule pour différente colonne

MPi
|
J'oubliais d'ajouter que si toutes les cellules à partir de D doivent être vides, il faut changer la condition pour celle-ci If WorksheetFunction.Count(Range(Cells(I, 4), Cells(I, nbColonnes))) = 0 Then ... MPi² Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
|
|
vendredi 16 mai 2008 à 15:17:46 |
Re : [VBA]Suppression de lignes en fonction de la valeur d'une cellule pour différente colonne

Tokh
|
Bonjour à tous, Alors déjà merci à Mortalino pour son aide. Effectivement cela fonctionne correctement. J'ai même eu droit aux explication en prime, c'est parfait. Merci aussi aux autres intervenants. Enfin pour MPi. Effectivement je parcours chaque cellule de chaque colonne à partir de la quatrième et si une cellule de n'importe quelle colonne n'est pas vide alors la ligne est supprimée.
|
|
vendredi 16 mai 2008 à 23:20:09 |
Re : [VBA]Suppression de lignes en fonction de la valeur d'une cellule pour différente colonne

MPi
|
Alors, je pense que mon premier code sera plus rapide puisqu'il ne contient qu'une seule boucle, mais je n'ai pas testé la vitesse... MPi² Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
|
|
Cette discussion est classée dans : vba, ligne, feuille, colonne, cellule
Répondre à ce message
Sujets en rapport avec ce message
vba recherche de numero de colonne/ ligne sur une feuille excel [ par legot1 ]
bonjour voila sur une feuille exels j ai un tableau dont le titre est "table color" et j aimerais qu automatiquement une formule VBA me retourne le nu
parcours ligne colonne recuperer donner avec liste deroulante d autre feuille [ par kromei ]
bonjour j ai une question excel voila le probleme j'ai deux feuil sur une ,j ai l'application principale , sur l autre des données j'ai dans la feui
Désignation ligne [ par jacky1002 ]
bonjour je cherche à selectionner la dernière ligne remplie d'une colonne le problème cest que dans cette colonne les cellule contienne une formule
Concaténation de colonnes excel (VBA) [ par Narcisse69 ]
Bonjour, je suis débutant et j'ai grand besoin de vos lumières. Mon classeur comprend trois feuilles: - FEUILLE 1: Une colonne A qui peut contenir u
CODE VBA POUR CHANGER LA COULEUR D UNE LIGNE EN FONCTION DE LA VALEUR DE LA 1ERE COLONNE [ par marie5858 ]
Bonjour à tous, Je suis novice dans la programmation de VBA pour excel. Toutefois, j'ai besoin d'un code pour mettre en forme des données en fonction
Besoin aide pour code vba [ par titeframboise62 ]
bonjour, j'aurais besoin d'une aide! Actuellement je conçois mes plannings prévisionnels/réels à la main et j'aimerais que ma méthode soit informatisé
VBA : Lecture d'une feuille ligne par ligne ? [ par NoirCafe ]
Bonjour le forum Je viens de me lancer sur le VBA ( débutant donc ) et je peine sur mon programme . Mon objectif est de reussir à "copier" les mots
Contenu d'une cellule de msflexgrid1 à mettre dans une cellule de msflexgrid2 [ par onix64 ]
Bonjour à tous! J'ai un tableau msflexgrid (nommé mfgcalendrier) dans lequel j'ai un calendrier d'une compétition sportive de foot avec le récapitula
VBA tester valeur de deux colonnes pour en copier une troisième [ par margol ]
Bonjour, J'ai un fichier excel composé de deux feuilles. Je souhaite tester la colonne B de la feuille 2 par rapport à la colonne B de la feuille 1,
VBA_Collage spécial d'une colonne "sous condition" sur une autre feuille excel [ par mouncefdi ]
salut le forum,Je suis un débutant en VBA, mais connaissances sont très limitées, ci-dessous je vous explique ce que je souhaite faire en espérant que
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|