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

Article Précédent Article Suivant

Les Meilleurs Conseils