Modifier une macro enregistrée

Bonsoir , je sollicite votre clairvoyance pour un petit soucis que je n'arrive pas à resoudre , j'ai crée la macro suivante à l'aide de l'enregisteur de macro

Sheets("mise en page").Select
    ActiveWindow.SmallScroll Down:=-108
    ActiveSheet.Unprotect

    ActiveSheet.Shapes("Picture 17").Select ---> ici 
    Selection.ShapeRange.IncrementLeft 56.25
    Selection.ShapeRange.IncrementLeft 62.25
    Selection.ShapeRange.IncrementTop 1.5
    Selection.ShapeRange.IncrementLeft -0.75
    Selection.ShapeRange.IncrementTop 2.25
    ActiveWindow.SmallScroll Down:=9
    Selection.ShapeRange.ScaleWidth 1.02, msoFalse, msoScaleFromTopLeft
    ActiveWindow.SmallScroll Down:=78
    Range("AN136").Select
    Selection.Cut Destination:=Range("AN135")
    Range("AN135").Select
    ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
    Set ActiveSheet.HPageBreaks(1).Location = Range("A130")
    ActiveWindow.SmallScroll Down:=36

    ActiveSheet.Shapes("Picture 18").Select     '--->et  ici 
    Selection.ShapeRange.ScaleWidth 1.29, msoFalse, msoScaleFromTopLeft
    ActiveWindow.SmallScroll Down:=-156 

les lignes :ActiveSheet.Shapes("Picture 17").Select et ActiveSheet.Shapes("Picture 18").Select sont amenés à changer

car les "shapes" sont par la suite effacées pour pouvoir en générer d'autres aux meme emplacements ( il y en a que deux sur cette feuille )comment faire pour pouvoir les manipuler sans avoir à les nommer comme c'est le cas avec la macro precedente ?

Merci pour toute réponse , Cordialement.

Bonsoir,

Je m'y colle ! Le code que tu cites ne contient rien qui vaille la peine d'être conservé, à l'exception de la ligne contenant Unprotect.

A supprimer donc, mais il ne constitue pas une procédure complète et l'on ne sait quel était l'objet de la procédure...

Il y a donc lieu d'écrire un code qui fasse ce qu'on lui demande, à condition de savoir de quoi il s'agit.

Ce qui ne répond certes pas à la question posée, mais laquelle est secondaire et aisément solutionnable de la façon qui conviendra selon le contexte.

Donner une quelconque solution pour l'insérer dans ce code serait rendre un mauvais service, et au surplus encourager l'utilisation de l'enregistreur sans chercher à comprendre ce qui en sort. Je m'abstiens donc tant que je ne peux donner un conseil rationnel dans le cadre de la réalisation d'un projet.

Cordialement

Bonjour MFerrand , ces lignes de codes contiennent uniquement des instructions de dimensionnement sur des formes "shapes" , j'en ai systematiquement 2 à traiter sur ma feuille de calcul , ces formes sont par la suites effacées pour en réintroduire de nouvelles , toujours

2 avec les memes instructions de dimensionnement , le soucis et comment faire pour ne pas en appeler une "

ActiveSheet.Shapes("Picture 17").Select" et l'autre ActiveSheet.Shapes("Picture 17").Select puis lorsqu'elle seront effacées pour en generer d'autre avoir à specifier ActiveSheet.Shapes("Picture 18").Select et ActiveSheet.Shapes("Picture 19").Select etc...

Merci

j'ai finalement trouvé j'ai remplacé ActiveSheet.Shapes("Picture 17").Select par ActiveSheet.Shapes(1).Select

et ActiveSheet.Shapes("Picture 18").Select par ActiveSheet.Shapes(2).Select comme ca vba comprend qu'il y a que 2 "shapes" sur cette feuille de calcul

Bravo ! Tu as appris que le numéro d'index d'un objet dans une collection peut s'utiliser concurremment à son nom pour y accéder.

Pour le reste, s'agissant de dimensionnement-positionnement d'un objet, 4 instructions sont toujours suffisantes : un mélange de valse-hésitations agrémenté de mouvements incontrôlés ne constitue pas un code que l'on peut qualifier d'optimisé.

Cordialement

Vous remerciant quand meme pour vos précieux renseignements . Cordialement. Rocket

Rechercher des sujets similaires à "modifier macro enregistree"