Rechercher : dans
Par :

VBA Excel supprimer des lignes grâce à un mot

Dernière réponse le 20 aoû 2009 à 20:13:31 Sabrina, le 27 avr 2007 à 15:26:19 
 Signaler ce message aux modérateurs

VBA EXCEL - Créer macro supprimer des lignes

Bonjour,

J'ai une liste de données dans excel et j'aimerais créer une macro qui a chaque fois qu'il voit apparaître un mot, il supprime la ligne qui le concerne. Je suis très débutante et je n'y arrive pas.

Merci de votre aide!

Configuration: Windows XP
Internet Explorer 6.0

1

lermite222, le 27 avr 2007 à 15:43:52

Bonjour,
le mot recherché est-il toujours dans la même colonne ?
Ta macro doit-elle faire toute les lignes ou c'est ligne par ligne ?
Au cas ou tu n'a pas besoins d'autre chose voila la commande pour supprimer une ligne

Worksheets("Sheet1").Rows(3).Delete
sheet1= le nom de la feuille
3 = le N° de la ligne
Attention, quand tu supprime une ligne, tout est mis a jour immédiatement, donc si, par exemple tu veux supprimé le mot TEST et dans la ligne 3 et 4 il y a TEST, la premiere commande va supprimé la ligne 3, mais la suivante va être de nouveau la ligne 3 donc tu doit retesté la même ligne.
J'espère avoir été assé clair.
A+
louis

Répondre à lermite222

2

sabryd, le 27 avr 2007 à 15:48:06

Bonjour Louis,

Merci pour ta réponse!

Le mot recherché change de ligne à chaque fois. C'est que je vais chercher des données grâce à SQL et les données change à chaque jour. Donc la ligne 3 un matin peut contenir le mot que je veux supprimer des fois non.

Le mot est toujours dans la même colonne, mais jamais sur la même ligne.

Aurais-tu une solution?
Sabrina

Répondre à sabryd

3

Kvo, le 27 avr 2007 à 17:25:26

Voilà le code!
Il faut juste que tu remplaces "tonmot" par le mot qui te sert de critère (n'oublie pas les guillemets).

Je suppose ici que ton mot est dans la première colonne. Si ce n'est pas le cas, là où il est écrit cells(b,1) change le 1 par le numéro de ta colonne (1 pour colonne A, 2 pour colonne B, 3 pour colonne C...)

Bonne chance :)


Sub Supprimerligne()

Dim a As Long
Dim b As Long

a = Range("A65536").End(xlUp).Row

For b = a To 1 Step -1

    If Cells(b, 1).Value = "tonmot" Then
    
        Rows(b).Delete
    
    End If

Next b

End Sub

Répondre à Kvo

4

lermite222, le 27 avr 2007 à 17:41:54

Le code de kvo me semble excellent.
A+
louis

Répondre à lermite222

5

knoizell, le 2 jui 2009 à 08:36:21

Bonjour,

Merci pour les Codes précédent.

J'ai a supprimer des lignes qui contienne un mot particuliers donc j'ai bien repris le code de kyo et il fonction pour une partie des lignes mais d'est que j'ai des céllule fusionné elle ne fonctionne plus esque vous auriez une solution ?

bonne journée et merci d'avance.

Répondre à knoizell

6

lermite222, le 2 jui 2009 à 14:31:19

Bonjour,
C'est un peu plus compliqué mais pas trop...

Sub SupprimerligneAvecMerge()
Dim Lig As Long
Dim Col As Integer
Dim Mg, TB
    'pour l'exemple, la colonne à tester =3
    Col = 3
    For Lig = Cells(65536, Col).End(xlUp).Row To 1 Step -1
        Set Mg = Cells(Lig, Col).MergeArea
        TB = Split(Mg.Address, ":")
        If Cells(Lig, TB(0)).Value = "tonmot" Then
            Rows(Lig).Delete
        End If
    Next Lig
End Sub

A+
L'expérience instruit plus sûrement que le conseil. (André Gide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

7

 Python, le 20 aoû 2009 à 20:13:31

C'est génial, ce truc !
Merci infiniment, ça simplifie la vie.

Répondre à Python
Collection CommentÇaMarche.net