Rogner une image en fonction d'un rectangle excel, sous VBA

Bonjour à toutes et à tous.

Voici mon sujet : j'ai une image et un, deux, trois, quatre...ou dix rectangles que je dessine sur elle pour entourer des morceaux de textes. J'aimerais obtenir par VBA le résultat suivant :

Un onglet qui contient un morceau de texte de l'image qui était préalablement entouré par un rectangle.

En gros : trois endroits entourés par un rectangle = 3 onglets créés qui contiennent la portion d'image (de texte) qui était entourée par chaque rectangle respectivement.

J'ai commencer à faire mes devoirs avant de venir vous voir :

Une macro : pour compter les rectangles et discriminer l'image parmi les shapes. Les copiés-collés du bon nombre d'onglet qui va bien. Et enfin un tableau qui regroupe les "Left", "Top", "Width" et "Height" de chacun des rectangles.

Une autre macro pour obtenir les "Left", "Top", "Width" et "Height" d'un rectangle désigné. Afin de faire une collecte manuelle de données d'entrées. Pas sûr qu'elle vous serve mais elle est là.

Une macro tirée d'un enregistrement. Mais elle me dépasse totalement : comment faire des calculs d'apothicaires déjà compliqués à la base si en plus tout est implicitement truffé de twips, de division par 72 ou non, de pouces et autres.

Je cale. Je vous ai mis un exemple dans le fichier en PJ, pouvez-vous m'aidez svp ?

Important : j'ai placé exprès l'image hors de la case A1. Lorsque ce sujet sera résolu et la ou les macros fonctionnelles il ne faudrait pas que tout coince car l'image à découper est décalée de 0,1 pixel sur la droite ou vers le bas.

J'ai également mis deux rectangles de tailles différentes. Dans la vie réelle, il est quasi sûr que je n'entourerai pas des textes de police et de longueur similaires.

N'hésitez pas à me dire s'il vous faut des éclaircissements.

25forum-1.xlsm (43.76 Ko)

Re tout le monde,

Y a t'il des premiers avis ou des premiers retours ?

Salut Willi,

A ma connaissance, ta demande est impossible.

Tu as une image de base qui comporte des ''images'' de textes, mais non pas des textes, tels que tu pourrais en placer dans tes rectangles. Ces ''images'' de textes sont simplement marqués par des rectangles mais ils restent sur ton image.

Ou alors ton modèle ne correspond pas exactement à la réalité et il y aurait d'autres solutions ???

Amicalement.

bonjour Willi_47, Salut Yvouille, tout est possible ..., mais la question n'est pas bien expliquée

16forum-1.xlsm (40.85 Ko)

Bonsoir,
BsAlv bonsoir,

Vous avez aiguisez ma curiosité, mais il me semble qu'il y a méprise sur la demande. Ou bien je n'ai pas compris le fichier fourni...

En effet vous avez remplis des cadres avec du texte, mais la demande est :
"j'ai une image sur laquelle il y a du texte, j'entoure ce texte avec une forme "cadre", et j'aimerais avec du VBA boucler sur tous les cadres ainsi créés et les copier/coller chacun sur une feuille, mais cette copie de cadre doit "imprimer" le texte de l'image qu'ils entourent"

A part jouer avec le GDI qui permet de copier une partie de l'écran et coller cette partie dans une image qui elle-même sera insérée sur une feuille Excel, je ne vois pas comment "découper" une partie de l'image se trouvant sous une forme... J'ai essayé avec l'appareil photo mais il faut alors connaitre la plage de cellule correspondant au "survol" du cadre. Ceci est faisable mais alors il y aura "du rab" autour du shape.

A voir...

@ bientôt

LouReeD

Voici mon idée, mais sur certain cadre il y a un peu de "rab", il faudrait pour plus de précision réduire la taille des cellules...
Pour commencer le code :

Sub LouReeD()
    For Each sh In ActiveSheet.Shapes
        If Left(sh.Name, 1) = "_" Then
            Set plage = Sheets("Feuil1").Range(sh.TopLeftCell.Address, sh.BottomRightCell.Address)
            Sheets.Add After:=ActiveSheet
            plage.Copy
            ActiveSheet.Pictures.Paste.Name = sh.Name
            Application.CutCopyMode = False
            Sheets("Feuil1").Select
        End If
    Next
    Sheets("Feuil1").Select
End Sub

Le fichier :

13copie-collage.xlsm (88.77 Ko)

Pour le fonctionnement les cadres ont un nom qui commence par "_".

@ bientôt

LouReeD

re, salut LouReeD,

apparament il y avait de la confusion de ma côté.

Une nouvelle version

12copie-collage.zip (487.07 Ko)

Bonjour,

en lançant votre code j'obtiens une copie complète de l'image d'origine avec les cadres dessus :

image

@ bientôt

LouReeD

bizarre, moi, je n'ai que ceci

image

Ok.

C'est ma version peut-être

Bonne fin de journée.

@ bientôt

LouReeD

re,

que ce passe-t-il avecun msgbox pour chaque shape ?

14copie-collage-1.zip (490.78 Ko)

Bonjour,

Merci pour vos retours. Je vais les regarder.

Et si je n'ai pas été clair je reformulerais différemment.

Vraiment, encore merci pour votre aide.

Bonsoir,
BsAlv, j'ai bien eu les MsgBox mais dès le premier message j'ai l'image entière avec les cadre qui se copie colle, puis après tout une série de MsgBox mais qui ne changent rien :

image

Je vais essayé de me replonger dans votre code et les Crop (dont j'utilise les caractéristiques dans AkaLouReeD pour les animations du jeu) pour essayer de l'adapter à mon code. En effet vous n'avez pas fait la demande entière : chaque cadre sur une nouvelle feuille

@ bientôt

LouReeD

quand je fais un clicque dans la cellule A1, il y a une forme sélectionnée qui s'appèle "Image 2", je suppose que chez vous, son nom est différent ????

Bonsoir,

pas grave j'ai bien compris l'idée il faut que je m'en imprègne. par contre je prend votre fichier, donc normalement pas de soucis de nom me semble-t-il.

@ bientôt

LouReeD

Bonjour tout le monde,

Je n'ai pas encore regardé mais je poursuis le sujet.

Je vous tiens au jus.

Bonjour,

mon fichier avec la réduction de taille des colonnes et des lignes :

11copie-collage.xlsm (91.55 Ko)

@ bientôt

LouReeD

Rechercher des sujets similaires à "rogner image fonction rectangle vba"