Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème sur centrage de Shapes

2 réponses
Avatar
Alex
Bonjour =E0 tous,

Je rencontre un probl=E8me sur le centrage d'e shapes dans une cellule,
et m'en explique. Dans une boucle, en fonction du r=E9sultat obtenu dans
ma 122=E8me colonne de mon onglet Base, je copie le shapes de l'onglet
"Smileys" correspondant =E0 la note, et reviens sur l'onglet Base pour
coller le shapes correspondant dans la cellule de la colonne 117,
jusque l=E0 aucun souci. Mais je n'arrive pas =E0 centrer le shapes dans
la cellule ou j'ai coller l'image copier, voici ce que j'ai =E9crit :

nbligne =3D Range("C2").CurrentRegion.Rows.Count
For i =3D nbligne To 2 Step -1
If Cells(i, 122).Value < 0 Then

Sheets("Smileys").Select
Sheets("Smileys").Shapes("Image 1").Copy
Sheets("BASE").Select
'ActiveSheet.Unprotect
Sheets("BASE").Cells(i, 117).PasteSpecial

With ActiveSheet.Shapes("Image 1")
.Left =3D Selection.Left + (Selection.Width - .Width) / 2
.Top =3D Selection.Top + (Selection.Height - .Height) / 2
.Placement =3D xlMoveAndSize
End With
End If
Next i

Quelqu'un aurait-il solution pour r=E9soudre ce probl=E8me.
Merci par avance de votre aide.
Cordialement.
Alex

2 réponses

Avatar
Jex
On 21 juin, 11:26, Alex wrote:
Bonjour à tous,

Je rencontre un problème sur le centrage d'e shapes dans une cellule,
et m'en explique. Dans une boucle, en fonction du résultat obtenu dans
ma 122ème colonne de mon onglet Base, je copie le shapes de l'onglet
"Smileys" correspondant à la note, et reviens sur l'onglet Base pour
coller le shapes correspondant dans la cellule de la colonne 117,
jusque là aucun souci. Mais je n'arrive pas à centrer le shapes dans
la cellule ou j'ai coller l'image copier, voici ce que j'ai écrit :

nbligne = Range("C2").CurrentRegion.Rows.Count
For i = nbligne To 2 Step -1
If Cells(i, 122).Value < 0 Then

Sheets("Smileys").Select
Sheets("Smileys").Shapes("Image 1").Copy
Sheets("BASE").Select
'ActiveSheet.Unprotect
Sheets("BASE").Cells(i, 117).PasteSpecial

With ActiveSheet.Shapes("Image 1")
     .Left = Selection.Left + (Selection.Width - .Width) / 2
     .Top = Selection.Top + (Selection.Height - .Height) / 2
     .Placement = xlMoveAndSize
    End With
 End If
 Next i

Quelqu'un aurait-il solution pour résoudre ce problème.
Merci par avance de votre aide.
Cordialement.
Alex



Bonjour Alex,

ton code fonctionne très bien à condition que ta cellule où tu copies
le shape soit sélectionnée. Ce qui n'est pas le cas ici. A la place de
selection, mets Sheets("BASE").Cells(i, 117).
Pour alléger le code tu peux mettre cette cellule dans une variable
avec la définition en début de procédure :
dim rngDest as range
et son affectation avant de PasteSpecial :
set rngDest = Sheets("BASE").Cells(i, 117)
puis son utilisation :
With ActiveSheet.Shapes("Image 1")
.Left = rngDest .Left + (rngDest .Width - .Width) / 2
.Top = rngDest .Top + (rngDest .Height - .Height) / 2
.Placement = xlMoveAndSize
End With

D'une manière générales, il faut éviter d'utiliser l'objet selectio n
et lui préférer une variable ou un nommage direct de cellule.

J'espère que ça marche.
J
Avatar
Alex
Bonjour Jex,

Merci pour ta réponse, je vais tester cela.
Cordialement.
Alex