suppression de lignes en fonction d'un mot

F

fabrice

Guest
C'est toujours moi avec mes problèmes ;=)

Maintenant je cherche à repérer toutes les lignes ayant par exemple le mot "Juilliet" (meme s'il n'est pas complet) et les suprrimer automatiquement.

Mercie de votre réponse
FAb
 
@

@+Thierry

Guest
Bonsoir Fabrice,


Pas complet ? combien de lettres ? si il n'y a que le "J" de juillet, la macro détruira toutes les lignes contenant "Juliette", "Janvier", "Jean" enfin tous les mots qui contienne un "J" majuscule ou minuscule.....

De plus si l'on dit à VBA de chercher des valeurs de mois en lui disant de chercher le 7em mois de l'année...... Il ne supprimera pas "Juilliet" ou alors il faut faire une function qui détruise les lignes......... contenant.... des........ Fot_d_Or_to_ graph ! (lol)

Alors j'ai écrit un code en deux étapes..... 1) il "grise" les cellule contenant la "string" tapée en "InputBox"....Il te demande si OK puis il vire les lignes...

Bon c'est pas trop testé car à chaque fois on a un problème avec "EntireRow.Delete" .... (il reste des valeurs non suppriémées en cas de redondance sur lignes adjacentes)

Mais bon dans un premier temps ce code devrait déjà faire une partie du boulot... (100% tiré de l'aide)

Sub ChercherEtDetruire()
Dim RECHERCHE As String
Dim c As Range

RECHERCHE = InputBox("Votre recherche ? (attention aux Majuscules/Minuscules) ")

Set Maplage = Worksheets(1).Range("A1:E50")

With Maplage
Set c = .Find(RECHERCHE, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Interior.Pattern = xlPatternGray50
'c.EntireRow.Delete (et non çà marche pas ici !!!, çà plante le "FindNext" puisque la ligne a été virée

Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With

Alerte = MsgBox("Toutes les cellules grisées vont être supprimmées", vbYesNo, "Warning")
If Alerte = vbYes Then
For Each Cell In Maplage
If Cell.Interior.Pattern = xlPatternGray50 Then
Cell.EntireRow.Delete
End If
Next
Else: Alerte = vbNo
Maplage.Select
Selection.Interior.ColorIndex = xlNone
End If
Range("a1").Select
Set Maplage = Nothing
End Sub


Si tu as encore des valeurs non supprimées faut refaire un boucle sur le "If qui cherche des valeurs grisées.... OU alors faut améliorer ce code.....

Bonne nuit
@+Thierry
 
@

@+Thierry

Guest
Bonjour,

Je post une question sur ce fil (pour comprendre)
--------------------------------------------------------------------------------------------------------
Auteur: fabrice
Date: 01-12-02 14:07
Bonjour,
Vous m'aviez fais passer une macro mais il semble qu'il y ai un peit probleme.
Les cellules me se grise pas et ne sont pas supprimées par la suite.
Des fois elles sagrise et se supprime mais uniquement pour le mois de janvier. Si je mets un autre mois, ca ne marche pas.
Pourriez vous m'aider à résoudre le problème.
Merci de votre réponses.
FAb
--------------------------------------------------------------------------------------------------------

REPONSE du service après-vente !!! (Robert as-tu un SAV au fait !!!) (lol)
========
Dans ce code je précisais la plage à analyser à dimension fixe :
Set Maplage = Worksheets(1).Range("A1:E50") ne connaissant pas ton tableau....

Là je procède autrement car je demande à VBA de chercher la dernière cellule pleine au bas de la colonne "H"........
Set Maplage = Worksheets("Feuil1").Range("A2", [H65536].End(xlUp))
NB à changer si la dernière colonne n'est pas H.... Exemple ton tableau va de la colonne A à la Colonne X, le code sera :
Set Maplage = Worksheets("Feuil1").Range("A2", [Z65536].End(xlUp))
(PS je pars de "A2" pour ne pas toucher aux "headings" de tes colonnes, mais on peut partir d'ailleurs)...

VOICI LE CODE (Avec les variables déclarées en prime !
Option Explicit

Sub ChercherEtDetruire()
Dim RECHERCHE As String
Dim c As Range
Dim Maplage As Range
Dim FirstAddress As String
Dim Alerte As String
Dim Cell As Range

RECHERCHE = InputBox("Votre recherche ? (attention aux Majuscules/Minuscules) ")
If RECHERCHE = "" Then Exit Sub

Set Maplage = Worksheets("Feuil1").Range("A2", [H65536].End(xlUp))

With Maplage
Set c = .Find(RECHERCHE, LookIn:=xlValues)
If Not c Is Nothing Then
FirstAddress = c.Address
Do
c.Interior.Pattern = xlPatternGray50

Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> FirstAddress
End If
End With

Alerte = MsgBox("Toutes les cellules grisées vont être supprimmées", vbYesNo, "Warning")
If Alerte = vbYes Then
For Each Cell In Maplage
If Cell.Interior.Pattern = xlPatternGray50 Then
Cell.EntireRow.Delete
End If
Next
Else
Maplage.Select
Selection.Interior.ColorIndex = xlNone
End If
Range("a1").Select
Set Maplage = Nothing
End Sub

NB :
===
Il y a toujours le "EntireRow.Delete" qui pose un problème en cas de cellules contenant la valeur recherchée sur des lignes adjacentes...En fait il vaudrait mieux utiliser : EntireRow.ClearContents mais celà implique un "Sort" (tri) à la fin de l'instruction... Si çà peut te convenir ? Attention Fabrice tu perdras l'ordre dans lequel les données ont été saisies...

AUTRE METHODE :
Option Explicit

Sub ChercherEtEffacer()
Dim RECHERCHE As String
Dim c As Range
Dim Maplage As Range
Dim FirstAddress As String
Dim Alerte As String
Dim Cell As Range

RECHERCHE = InputBox("Votre recherche ? (attention aux Majuscules/Minuscules) ")
If RECHERCHE = "" Then Exit Sub

Set Maplage = Worksheets("Feuil1").Range("A2", [H65536].End(xlUp))

With Maplage
Set c = .Find(RECHERCHE, LookIn:=xlValues)
If Not c Is Nothing Then
FirstAddress = c.Address
Do
c.Interior.Pattern = xlPatternGray50

Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> FirstAddress
End If
End With

Alerte = MsgBox("Toutes les cellules grisées vont être supprimmées", vbYesNo, "Warning")
If Alerte = vbYes Then
For Each Cell In Maplage
If Cell.Interior.Pattern = xlPatternGray50 Then
With Cell
.EntireRow.ClearContents
.Interior.ColorIndex = xlNone
End With
End If
Next
Else
Maplage.Select
Selection.Interior.ColorIndex = xlNone
End If
Maplage.Select
Selection.Sort Key1:=Range("A2"), Header:=xlGuess
Range("a1").Select

Set Maplage = Nothing
End Sub

ATTENTION : Cette seconde Méthode utilise un "Sort" (tri) sur la colonne A (à changer si tu dois avoir un tri ailleurs....)

Voilà cette fois ci tu devrais ne plus avoir de problème de couverture de ta zone Fabrice...

Bon travail & Bon Dimanche
@+Thierry
 
@

@+Thierry

Guest
Bon j'ai regardé...

Tu aurais d^expliquer depuis le début que tu travaillais sur des plages de Dates..... çà n'a rien à voir avec ce que je t'ai préparé... Il faut tout reprendre...

Je verrais çà demain car là je matte la Télé...

BOnne NUit
@+Thierry
 
@

@+Thierry

Guest
Bonjour Fabrice,

Avant d'aller plus loin et de passer du temps pour rien... Fabrice pourrais-tu confirmer les points suivants, car le tableau que tu as fournis ici ne correspond pas du tout avec ce que j'avais compris de tes explications... Et ce que j'ai préparé pour toi est complètement à coté de la plaque... (çà pourra servir à quelqu'un d'autre)

1) Ta zone de recherche ne concerne que la colonne A ?
2) AAA- Tu cherches à supprimer les lignes contenant une Date Précise ?
2) BBB- Tu cherches à supprimer les lignes contenant une période entre Deux Dates Précises ?
2) CCC- Tu cherches à supprimer toutes les lignes concernant un mois ?

Cette ficelle représente exactement le perpétuel problème entre les Users et les Développeurs... Cette espèce "d'incommunication" que les gens qui sont loin l'informatique ont pour expliquer clairement leur demande... Ne t'en fais pas Fabrice tu fais partie de la moyenne... Très peu de gens sont capable d'expliquer ce qu'ils veulent d'une manière claire et précise...

Bon, donc... Fabrice tu me réponds à ces questions et je verrai ce que je peux faire (ptet que ce week end car demain et après demain, je suis en remplacement sur un autre taff en plus du mien et je n'aurais pas de temps)
Bon Après midi

@+Thierry
 
F

fabrice

Guest
salut

Merci de te repencher sur mon probleme.
En fait ce que je désir c'est repérer les cellules contenat par expemple le mois de février (erit févr) et supprimer supprimer les lignes correspondantes, sans toucher aux autres mois.

Il semblerai donc que ca corresponde à la proposition CCC

Je ne sais pas si ca te suffit.

Merci et bonne soirée.
FAb
 
@

@+Thierry

Guest
Hello Fabrice...

OK pour 2) CCC..... (mois entier)


Mais pour 1) ??????? on cherche partout ? ou que sur la colonne "A"?
Ton tableau montre des Dates QU'EN PREMIERE COLONNE..... donc "A"... et de plus ton tableau ne montre que des dates dans cette colonne... Donc j'en conclus qu'on va chercher que des valeurs DATES dans cette colonne...

Pour moi c'est important.... et pour VBA encore Plus !!!

Bonne nuit
@+Thierry
 
F

fabrice

Guest
Salut

oui la recherche va se baser sur la première colonne uniquement car apres il y a que des chiffres. En fait, on cherche sur la première colonne et on supprime les lignes qui rentrent dans la selection.

Merci encore
FAb
 
@

@+Thierry

Guest
Moi non plus je ne l'ai pas oubliée...

Mais ce week end j'ai été OQP à répondre à un certain Fabrice qui avait bcp de mal à s'expliquer...

Tu sais qu'avec le temps que j'ai passé sur ces deux fils j'aurai pu faire un programme entier !

Bon j'essayerai de voir si j'ai du temps à perdre.... c'est pas gagné !

Bonne semaine
@+Thierry
 
@

@+Thierry

Guest
=> DEMO suppression de lignes en fonction d'un Calendrier

Bon, Re Bonjour Fabrice,

Vu que je me suis dit.... Une fois que je lui aurait un truc qui supprime un mois entier... Il va me dire :

"oui c'est bien, merci bcp, mais y a un truc qui marche pas parceque je voudrais que la macro supprime le mois de Juillet, sauf le 1er et le 30 et je comprends pas la macro le fait pas..."

Donc non non non et non... Tu ne m'auras pas... J'ai préparé un truc béton... Tu as carrément des calendriers... TU CHOISIS LA PLAGE DE DATE Si tu veux supprimer 10 ans du peux... Un mois, une semaine ou un jour tu peux aussi !! comme çà c'est clair...

Surtout ne revient pas en me disant que c'est plus dans la colonne "A" ou que c'est plus des dates qu'il faut chercher....

Bon regarde ce que je t'ai préparé... C'est basé sur le control activeX "Calendar Control 9.0" (MSCAL.ocx) en standard avec Office 2000.


Bon aller je vais manger... Car j'ai fait çà pendant ma pose déjeuner...

@+Thierry
 

Pièces jointes

  • DateDeleteCal.zip
    27.1 KB · Affichages: 67
F

fabrice

Guest
Re: => DEMO suppression de lignes en fonction d'un Calendrier

salut

J'ai une mauvaise nouvelle. La macro plante.
Pour les saisies des dates ca va plus que bien, mais lorsque j'appuis sur supprimer, le message suivant s'affiche dans visual
"Erreur de cmpilation
Projet ou bibliotheque introuvable", et dans:
Set Maplage = Worksheets(1).Range("A11", [A65536].End(xlUp)),
[A65536] est surligné.

Quand je ferme le message d'erreur, la ligne suivante est surlignée:
Private Sub CommandButton1_Click()

Est ce que ca faisait ca chez toi???
Est ce que ca viens de ma config???

Je suis vraiment désolé de t'embeter encore
FAb :=(
 
@

@+Thierry

Guest
Re: => DEMO suppression de lignes en fonction d'un Calendrier

Salut Fab

Oui bien sûr çà a fait çà chez moi et sur toutes les stations où je l'ai essayé, çà bug tout le temps c'est pour çà que je te l'ai envoyé !!

Arffffff c'est testé !! et même re-testé maintenant d'ici sur mon home PC

PREAMBULE = Tu parles de mon fichier ? ou de ce que tu aurais déjà essayé de trafiquer ?

1) qu'as tu comme config ? XP ? (çà c'est possible que çà foute encore la M...) Donc dis moi exactement : Version d'Office et Version de Windows STP...

2) Tu n'as pas fait un test style ...
Date Départ Janvier 2002 25
Date Arrivée Janvier 2002 01
Là en fait j'ai oublié à qui j'avais à faire !! j'aurai dû aussi prévoir un test sur çà !!! (rectification le prog fonctionne quand même si tu fais çà !!)

Bon je vais chercher du renfort et je reviens !!!

à tout à l'heure....
Entre temps cherche sur ton Disque dûr si tu as : "MSCAL.ocx"...

@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 221
Messages
2 086 388
Membres
103 199
dernier inscrit
ATS1