|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : [VBA]Suppression de lignes en fonction de la valeur d'une cellule pour différente colonne [ Langages dérivés / VBA ] (Tokh)
Informations & options pour cette discussion
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é dans : vba, ligne, feuille, colonne, cellule
Répondre à ce message
Sujets en rapport avec ce message
vba -> excel [ par jraynald ]
depuis vba je réussi à accéder à une feuille excel, mais après je bloque.Je voudrai à partir de vba recherché sur une feuille excel une cellulecontena
Effacer une feuille, une ligne, une colonne (...) excel ? [ par Jin ]
Comment effacer une feuille excel, une ligne ou une colonne ou un groupe de cases ?[feuille utilisé].ActiveWindow.SelectedSheets.clear ne marche pas..
transposer une ligne en colonne en vba [ par MrPom ]
Bonjour,J'aimerai transposer mes données constituées en lignes dans la colonne A. J'aimerai réaliser la transposer uniquement de la ligne sélectionnée
urgent svp [ par baumont ]
salut a tous j'ai 2 petites fonctions à boucler dans moins d'un heure et j'y arrive pas1. j' ai créé un bouton et je voudrai qu'en cliquant dessus les
Gros problème de tri de feuille Excel sous VBA [ par julien_cbg ]
Bonjour,Je suis en train d'achever un programme en VBA et je suis coincé sur les procédures de tri de feuilleJ'ai donc réalisé la procédure suivante q
compte nombre ligne dans colonne en excel [ par SigurRos ]
Bonjour,on m a demandé aujourd hui de faire une manipulation de feuille excel en utilisant le VB mais je ne connais pas du tout le VB sous excel et je
Aide debutant VBA: reuperer valeur d'une cellule appartenant a une colonne fixe [ par king_kunu ]
Bonjourj'ai besoin dans le cadre d'un retraitement de fichier excel d'ecrire une macro me permettant de tester la valeur d'une cellule et de la suppri
Problème avec VBA :ajouter une ligne, calculer une date...(urgent) [ par pepette54 ]
Bonjour TLM.Je viens d'aller sur vbFrance pour chercher des informations pour faire mon td d'informatique (programmation sous VBA). J'y ai trouvé plei
copier cellule dans autre feuille (vba) [ par gnosis35 ]
alors voilà le pb :j'aimerai que :feuille 3 cellule X = feuille 2 cellules Ygenre sheets(3).cells(x,y))=sheets(2).cells(z,t):(en fait la macro ce trou
cellule et ligne excelle VBA [ par heki ]
bonjour,j'ai un petit problème d'adressage.dans mon code de recherche de cellule dans un feuille fonctionne nickel mais, mas question est:si la cell e
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|