Rechercher et remplacer une macro de valeur de cellule
Rechercher et remplacer une macro de valeur de cellule
Problème
J'ai dans mon tableur ces 20 formules (1 par code de stock) qui proviennent d'etrade
= PROStaticData (2, "mqg.ASX", "2010/08/10; 2010/08/19; 3; Vrai; Faux", "10")
Je veux pouvoir changer les dates en une fois, j'ai les 2 cellules configurées. Les valeurs que je veux rechercher sont dans M8 et M9 et je veux les remplacer par les valeurs dans L8 et L9 respectivement et cela fonctionne très bien n'importe où. Dans la feuille de calcul, à l'exception de la formule ci-dessus, pour une raison quelconque, il n'examinera pas la formule. Le code que j'utilise est le suivant.
Sub theone () 'Selection.Replace What: = "ValueToFind", Remplacement: = Range ("A1"). Valeur, LookAt: = xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, ReplaceFormat: = False 'Range ("B1: B2"). Sélectionnez Selection.Copy Range ("L8: L9"). Sélectionnez Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transpose: = False Range ( "M8"). Sélectionnez Application.CutCopyMode = False Selection.Copy Range ("L8"). Sélectionnez Application.CutCopyMode = False Selection.Copy Cells.Replace Quoi: = Range ("M8"). Valeur, Remplacement: = Range ( "L8"). Valeur, LookAt: = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace Quoi: = Range ("M9"). Valeur, Remplacement: = Plage ("L9"). Valeur, LookAt: = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False Plage ("L8: L9"). Sélectionnez Application.CutCopyMode =. False Selection.Copy Range ("M8: M9"). Sélectionnez ActiveSheet.Paste End Sub.
Solution
Voici quelques doutes dans votre macro
Exemple
Plage ("M8"). Sélectionnez Application.CutCopyMode = False Selection.Copy
Vous copiez cette valeur, mais ne la collez jamais et de même avec le bloc suivant avec L8. Peut-être que le code n'est pas nécessaire ou peut-être que vous avez oublié de coller. La raison pour laquelle vous ne pouvez pas le remplacer car la date qui se trouve dans la formule est au format AAAA / MM / JJ. La date que vous recherchez n'est pas dans ce format. Donc, vous devez ajouter une recherche supplémentaire et remplacer où vous recherchez la date au format AAAA / MM / JJ et remplacer dans même
Cells.Replace What: = FORMAT (Plage ("M8"). Valeur, "AAAA / MM / JJ"), Remplacement: = FORMAT (Plage ("L8"). Valeur, "AAAA / MM / JJ"), LookAt : = _ xlPart, SearchOrder: = xlByRows, MatchCase: = False, SearchFormat: = False, _ ReplaceFormat: = False
Voici votre truc re-travaillé.
Sub theone () Dim sDateFind As String Dim sDateRep As String Range ("B1: B2"). Sélectionnez Selection.Copy Range ("L8: L9"). Sélectionnez Selection.PasteSpecial Paste: = xlPasteValues, _ Opération: = xlNone, _ SkipBlanks: = False, _ Transpose: = False Range ("M8"). Sélectionnez Application.CutCopyMode = False Selection.Copy Range ("L8"). Sélectionnez Application.CutCopyMode = False Selection.Copy sDateFind = Range ("M8") .Value sDateRep = Range ("L8"). Valeur Cells.Replace What: = Range ("M8"). Valeur, _ Remplacement: = Range ("L8"). Valeur, _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace Quoi: = Format (sDateFind, "aaaa / mm / jj"), _ Remplacement: = Format (sDateRep, "yyyy / mm) / dd "), _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False sDateFind = Plage (" M9 "). Valeur sDateRep = Plage (" L9 ") .Value Cells.Replace What: = Range (" M9 "). Valeur, _Remplacement: = Range (" L9 "). Value, _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Cells.Replace What: = Format (sDateFind, "aaaa / mm / jj"), _ Remplacement: = format (sDateRep, "aaaa / mm / jj"), _ LookAt : = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ ReplaceFormat: = False Range ("L8: L9"). Sélectionnez Application.CutCopyMode = False Selection.Copy Range ("M8: M9 "). Sélectionnez ActiveSheet.Paste End Sub
Remarque
Résolu par rizvisa1