![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
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 |
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#6 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#7 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#8 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#9 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#10 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#12 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#13 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#14 (permalink) |
|
Guest
Messages: n/a
|
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 :=( |
|
|
#15 (permalink) |
|
Guest
Messages: n/a
|
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 |
| ANNONCES | |
| Liens sociaux |
| Outils de la discussion | |
|
|