Bonjour,
J’insère sans problème l’image dont le chemin est dans la variable Txt dans la cellule B2 par laFeuille.Pictures.Insert(Txt).Range['B2'];
Mais comment ensuite centrer cette image dans la cellule ?
Merci pour votre aide.
Version imprimable
Bonjour,
J’insère sans problème l’image dont le chemin est dans la variable Txt dans la cellule B2 par laFeuille.Pictures.Insert(Txt).Range['B2'];
Mais comment ensuite centrer cette image dans la cellule ?
Merci pour votre aide.
Pourquoi ne pas calculer toi même
Tente un truc genre
ouCode:
1
2 Picture := LaFeuille.Pictures.Insert(Txt); // supposition Picture.Range['B2']; // pareil supposition
puisCode:
1
2 LaFeuille.Pictures.Insert(Txt).Range['B2']; Picture := LaFeuille.Shapes('Nom de l''image'); // Comment retrouvé l'image ?
Code:
1
2
3 Picture.Left := Range['B2'].Left + (Range['B2'].Width div 2) - (Picture.Width div 2); Picture.Top := Range['B2'].Top + (Range['B2'].Height div 2) - (Picture.Height div 2);
Et sans savoir si cela impacte que le texte mais aussi l'image
Code:Range['B2'].HorizontalAlignment := xlCenter;
A certains endroits Range['B2'] c'est en réalité LaFeuille.Range['B2'] ...
essais ça
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 procedure InsertAndCenterImageInExcel(const AFileName: string; const ACell: string); var ExcelApp, Workbook, Worksheet, Picture, CellRange: OLEVariant; CellLeft, CellTop, CellWidth, CellHeight: Double; AspectRatio: Double; begin // Créer une instance d'Excel ExcelApp := CreateOleObject('Excel.Application'); ExcelApp.Visible := True; // Ajouter un nouveau classeur Workbook := ExcelApp.Workbooks.Add; Worksheet := Workbook.Worksheets[1]; // Sélectionner la cellule CellRange := Worksheet.Range[ACell, ACell]; // Obtenir les coordonnées et les dimensions de la cellule CellLeft := CellRange.Left; CellTop := CellRange.Top; CellWidth := CellRange.Width; CellHeight := CellRange.Height; // Insérer l'image Picture := Worksheet.Pictures.Insert(AFileName); // Calculer le ratio d'aspect original de l'image AspectRatio := Picture.Width / Picture.Height; // Ajuster les dimensions de l'image pour correspondre à la cellule tout en gardant le ratio if (CellWidth / CellHeight) > AspectRatio then begin // Ajuster la largeur en fonction de la hauteur Picture.Height := CellHeight; Picture.Width := CellHeight * AspectRatio; end else begin // Ajuster la hauteur en fonction de la largeur Picture.Width := CellWidth; Picture.Height := CellWidth / AspectRatio; end; // Centrer l'image dans la cellule Picture.Left := CellLeft + (CellWidth - Picture.Width) / 2; Picture.Top := CellTop + (CellHeight - Picture.Height) / 2; end;
Merci pour vos réponses rapides et performantes.
La procédure de centrage de l'image fonctionne parfaitement.