Rechercher : dans
Par :

VBA : supprimer une ligne contenant un mot

Dernière réponse le 12 nov 2007 à 14:22:57 Ju, le 12 nov 2007 à 11:29:04 
 Signaler ce message aux modérateurs

Bonjour,

Je suis "contraint" de me mettre sur VBA aujourd'hui . En attendant de m'y mettre serieusement (je passe a la fnac ce soir ;) ) j'aurais besoin d'une aide qui je pense va vous sembler évidente.

Je souhaite supprimer une ligne qui contient un mot (en loccurence "affecté"). Ce mot se situe toujours dans la meme colonne (A) mais selon les fichiers, pas sur la meme ligne.

J'ai trouvé plusieurs codes sur internet, mais aucun n'a repondu a ce besoin si simple
Merci

Configuration: Windows XP
Internet Explorer 6.0
Excel 2003

Meilleures réponses pour « VBA : supprimer une ligne contenant un mot » dans :
[VBA] Supprimer un mot dans une plage de cellule Voir Si 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...
Sed - Supprimer une ou plusieurs lignes d'un fichier VoirSupprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la...
Sed - Trucs et astuces VoirSubstitution Affichage Suppression Espace et tabulation Ligne vide Intervalle régulier Divers Joindre des lignes Affichage insensible à la casse Substitution Substituer "foo" par "bar" à chaque ligne Seulement la 1ère...

1

ShaBoo, le 12 nov 2007 à 11:46:30

Bonjour,

un code comme celui ci peut-il repondre à ta demande ?

With Worksheets(1).Range("A1:A500" )
      Set c = .Find("affecté", LookIn:=xlValues)
      If Not c Is Nothing Then
          Do
              Debug.Print c.Address
              Set c = .FindNext()
          Loop While Not c Is Nothing
      End If
End With

Répondre à ShaBoo

2

Ju, le 12 nov 2007 à 11:55:33

Bonjour,

Merci de ta réactivité.

J'ai testé ton code mais rien ne se passe.
Au passage, mon fichier peut contenir plus de 500 lignes (ce n'est pas le cas aujourd'hui)

Est-ce que c'est pas le nom de la feuille que je dois changer ? (oui, je n'y connais vriament rien !)

Répondre à Ju

3

ShaBoo, le 12 nov 2007 à 12:04:33

Met ton code ici, stp

Répondre à ShaBoo

4

Ju, le 12 nov 2007 à 12:09:18

Bonjour,

Rien de plus que ce que tu as suggéré. J'ai mis 600 car j'ai 510 lignes..

Sub deleteligneaffecte()
'

With Worksheets(1).Range("A1:A600")
Set c = .Find("affecté", LookIn:=xlValues)
If Not c Is Nothing Then
Do
Debug.Print c.Address
Set c = .FindNext()
Loop While Not c Is Nothing
End If
End With


End Sub

Répondre à Ju

5

ShaBoo, le 12 nov 2007 à 13:00:25

Et qu'est ce qui ne fonctionne pas ???

Répondre à ShaBoo

7

ShaBoo, le 12 nov 2007 à 13:24:05

Oupssss ...

Autant pour moi. Comme quoi de la necessité de tester ;p

Ceci fonctionne mieux comme cela :

Sub deleteligneaffecte()
'
With Worksheets(1).Range("A1:A600")
    Set c = .Find("affecté", LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            'Debug.Print c.Address
            Debug.Print c.Row 'affiche le numero de ligne
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With

End Sub

Répondre à ShaBoo

6

Ju, le 12 nov 2007 à 13:21:54

Bonjour,

j'ai l'impression que rien ne se passe lorsque j'execute la macro. (et la ligne en question n'est pas supprimée)

Répondre à Ju

8

ShaBoo, le 12 nov 2007 à 14:05:09

Tu as raison. La méthode avec .FindNext ne fonctionnera pas.

Je te renvoie sur ici :
Excel - VBA Problème de suppression de lignes...

et ici :
VBA Excel et suppression de lignes

ou plusieurs méthodes sont utilisés.

N'hésites pas en cas de problème ...

Répondre à ShaBoo

9

 Ju, le 12 nov 2007 à 14:22:57

Bonjour,

Je regarde ca de plus pres des que possible
Dans tous les cas, merci de ton aide

Répondre à Ju