Rechercher : dans
Par :

Macro excel et suppression de ligne

Dernière réponse le 20 mar 2008 à 11:30:39 mimi, le 6 nov 2005 à 18:52:44 
 Signaler ce message aux modérateurs

Bonjour à tous

Je souhaite supprimer par macro toutes les lignes dont la valeur est différente de 800 dans la colonne E (de E2 à la fin du champ)
Mais ma macro me laisse des lignes qu'elle aurait due supprimer.
Ou est donc l'erreur ?
Merci pour votre aide
Mimi

Range("E2").Select
Range(Selection, Selection.End(xlDown)).Select
Dim vCellule As Object
For Each vCellule In Selection
If vCellule.Value <> 800 Then
vCellule.EntireRow.Delete
End If
Next

Meilleures réponses pour « macro excel et suppression de ligne » dans :
Supprimer les doublons dans une colonne Excel VoirPour extraire les doublons dans une colonne Excel : Cliquer sur le menu "Données" "Filtrer" "Filtre élaboré" Dans ce menu, sélectionner la colonne où se trouvent les doublons Cocher la case "Extraire sans doublon" La seule chose est que...
[VBA] Supprimer un mot dans une plage de cellule VoirSi on veut supprimer un mot dans une phrase il suffit de faire une petite macro qui supprime le mot recherché. Là où ça se corse c'est que le mot recherché pourrait être, par exemple "LEMOT" ou "LeMot" ou "lemot" ou encore "LeMot" etc.. Cette...
Télécharger MOREFUNC (Macro complémentaire EXCEL) VoirMorefunc est une macro complémentaire proposant 67 nouvelles fonctions de feuille de calcul pour Excel. Ces fonctions sont compatibles avec Excel 95 à 2007. Elles ne sont pas portables sur d'autres plate-formes que Windows, ni sur d'autres...
Exécuter une macro VoirExécuter une macro Excel et Calc proposent plusieurs façons d’exécuter une macro : en la sélectionnant dans une liste, dans la boîte de dialogue Macro ; par un raccourci clavier ; en l’attachant à un bouton de la barre d’outils ; ...

1

Armojax, le 6 nov 2005 à 21:49:29

Bonsoir mimi,

Le problème est que, quand tu supprimes une ligne, celle d'en dessous remonte à l'adresse de celle que tu viens de supprimer. A la boucle suivante, on passe à la ligne suivante, et donc on ne traite pas celle qui vient de remonter.

Prends le problème à rebrousse poil :

Dim I     As Long
Dim Plage As Range
Set Plage = Range("E2:E" & Range("E2").End(xlDown).Row)
For I = Plage.Cells.Count To 1 Step -1
  If Plage.Cells(I).Value <> 800 Then
    Plage.Cells(I).EntireRow.Delete
  End If
Next

Répondre à Armojax

2

mimi, le 6 nov 2005 à 23:08:34

Merci infiniment Armojax !!
Je débute en macro et je ne comprends pas encore tout !
J'ai utilisé ta macro qui marche à merveille !
Mimi

Répondre à mimi

3

Aliocha Bada, le 28 jui 2006 à 01:25:46

Super ces lignes de codes, merci.

Est ce que quelqu'un pourrait m'aider à corriger le code pour changer la condition de suppresion.

J'aimerais supprimer les lignes dont la somme de la colonne C + D = 0.

Je suis trèsnovice en VBA, et j'aimerais arriver à automatiser un travail récurrent d'importation et de mise en forme des données.

Merci tout plein à qui veut bien m'aider ;)

Répondre à Aliocha Bada

4

luy, le 24 nov 2006 à 16:44:40

Je m'excuse de vous demander cela mais j'ai la meme chose a faire que mimi la seul difference c que moi je dois comparer la cellule avec celle d'en dessous et ce sont des caractères dedans (des mots).

j'ai esssayer d'appliquer la même formule mais cela ne marche pas??

Merci

Luy

Répondre à luy

5

jenny, le 24 nov 2006 à 17:02:10

Change le cells(ligne,colonne).value par un .text

Répondre à jenny

7

lulu, le 13 avr 2007 à 21:34:27

Bonjour vu tes connaissances les miennes étant proches du néant en macro voilà le souci que je cherche à régler via une macro:
j'ai créé un graphique qui permet de visualiser des dépenses mensuelles cumulées tout au long de l'année
les dépenses sont récupérées via une liaison dans un autre fichier à l'aide d'une fonction = cellule
mon problème est que le montant cumulé évolue bien sûr mais étant donné que le résultat est lié à une cellule soit toujours la même quelque soit le mois considéré je ne visualise pas une courbe qui progresse tous les mois mais donc une droite
il faudrait que je crée une macro lié au graphique qui précise de ne plus toucher à un total dès le mois fini par exemple
merci pour tes précieux conseils

Répondre à lulu

6

Kalderon, le 6 avr 2007 à 10:38:30

Bonjour,

Je souhaiterais avoir la syntaxe macro pour l'algorithme suivant:

SI chaque cellule de la colonne "C" vaut "toto" ALORS
de la première ligne à la dernière ligne:
supprimer une ligne entière sur deux

Et une fois la macro faite, comment l'insérer dans un bouton Excel?

Merci infiniment, c'est très important!

Répondre à Kalderon

8

supersarah, le 10 oct 2007 à 16:22:33

Bonjour,
Très interessante votre discussion et c'est vrai j'arrive en retard. Bien contente de trouver ce code pour mon compte et me suis empressée de le recopier or les lignes peuvent être supprimer par un choix de conditions. Ex : si la condition 1 n'est pas remplie, la condition 2 s'applique t'elle? ou peut être la 3 sinon ben la ligne n'est pas supprimée. J'ai bien tenté de rajouté, après avoir tranformé l'opérateur en = par ma propre condition suivi d'un ; suivi de la seconde condition (rien) - Deuxième tentative : rajouter une ligne If : rien non + . Un coup de main s'il vous plaît?
Enfin si quelqu'un passe encore par là

Répondre à supersarah

9

jenny, le 14 oct 2007 à 10:30:18
  • +2

Bonjour,

Si ta première condition est fausse ta boucle s'arrête! 2 solutions possible soit tu veux que toutes des condition soit vrai dans ce cas
(principe du AND)
if cells(ligne, colonne).text(ou value) = XX then
if cells(ligne, colonne).text(ou value) = XX then
if cells(ligne, colonne).text(ou value) = XX then
rows(ligne).delete
ligne = ligne -1
end if
end if
end if

plus simplement

if cells(ligne, colonne).text(ou value) = XX then AND cells(ligne, colonne).text(ou value) AND cells(ligne, colonne).text(ou value)
rows(ligne).delete
ligne = ligne -1
end if


si tu veu que dès qu'une de tes condition soit vrai la ligne est supprimée (principe du OR)

if cells(ligne, colonne).text(ou value) = XX then
rows(ligne).delete
ligne = ligne -1
end if
if cells(ligne, colonne).text(ou value) = XX then
rows(ligne).delete
ligne = ligne -1
end if
if cells(ligne, colonne).text(ou value) = XX then
rows(ligne).delete
ligne = ligne -1
end if

ou plus simplement

if cells(ligne, colonne).text(ou value) = XX then or cells(ligne, colonne).text(ou value) or cells(ligne, colonne).text(ou value)
rows(ligne).delete
ligne = ligne -1
end if

Répondre à jenny

10

zebrac, le 10 fév 2008 à 17:25:05

Bonjrs tt le monde
je voudrai savoir est ke il a ya une possiblité de faire une alerte par mail lié a un dépassement de seuil dans une cellule excel
merci par avance

Répondre à zebrac

11

Luna, le 21 fév 2008 à 15:22:49

Bonjour à tous,

Je suis complètement novice dans l'utilisation des macro excel, et je voudrais faire un programme qui me permette de supprimer automatiquement des colonnes. Je vois comment faire pour simplement éliminer une colonne mais je voudrais que cette suppression se fasse suite à une comparaison entre cellules.

Je vous donne un exemple.


A C D E G H I J
A B C D E F G H I J
1 8 7 1 1 3 7 5 1 7
0 5 2 1 4 2 3 5 8 7
3 6 3 0 1 5 4 8 9 4
4 4 1 9 2 4 7 2 6 0

Voilà mon tableau de valeurs.
La première ligne est ma référence fixe.
Je voudrais comparer la 2ème ligne à la 1ère et éliminer la colonne quand le texte de la cellule de la ligne 2 ne correspond pas à la cellule du dessus.

Dans mon exemple, dans la première ligne, j'ai pas de B, ni de F. Je voudrais donc éliminer la colonne correspondant à B, décaler de façon à ce que la colonne C soit sous le C de la première ligne et faire pareil pour F.
Je ne sais pas si c'est très clair !

Qui peut m'aider ????

Répondre à Luna

13

 Kona52, le 20 mar 2008 à 11:30:39

Salut Luna.

J'espere qu'il n'est pas trop tard pour repondre a ton probleme, mais j'ai comme l'impression qu'il y a plus de questions que de réponses sur ce topic... alors je poste quand meme ma reponse.

En fait, je suis aussi debutant en programmation, mais on apprend pas mal de choses en se baladant sur les forums, et avec un peu de logique, on arrive a ca :

'i est la colonne sur laquelle on effectue la comparaison. On part a priori de la colonne 1 jusqu'a ce qu'il n'y ai plus rien dans la ligne A
For i = 1 To Range("A1").End(xlToRight).Column
'Tant que les cellules des ligne 1 et 2 (A et B) de la colonne i sont differentes...
While Cells(2, i) <> Cells(1, i)
'... on selection les cellules à supprimer (ici de la ligne 2 à 6 (soit B à F) de la i eme colonne)
Range(Cells(2, i), Cells(6, i)).Select
' et on les supprime
Selection.Delete Shift:=xlToLeft
Wend
Next

En supprimant mes commentaires, ca donne quelque chose d'assez simple...

En esperant avoir repondu a ton probleme.

Répondre à Kona52

12

lucho33, le 27 fév 2008 à 17:09:03
  • +1

Bonjour à tous,

je suis plus que débutant en prog mais bon!!

j'importe des données en continue sur un fichier Excel. le tableau se présente sous forme de 2 colonnes et une multitude de lignes puisque la saisie est en continue!!!
j'aimerai savoir comment je peux faire pour supprimer les cellules A1 et B1 quand les cellules A10 et B10 se remplissent.
en fait je veux faire glisser les cellules, d'une cellule vers le haut dès que la lignes 10(par exemple) se remplis..

Merci d'avance pour votre aide!!!!

Répondre à lucho33