Couper / Coller des photos avec une macro
Salut à tous, je cherche à échanger deux lignes dans une feuille excel qui contiennent toutes les deux une photo sur la même colonne. Cependant les lignes ne sont pqs de même épaisseur. Le problème avec ma macro c'est que les photos s'échangent et les lignes aussi, mais pas le format de celles-ci.
Imaginons que ma ligne du haut soit grande avec une grande photo et celle du bas petite avec une petite photo. Au final la ligne en haut est grande avec une petite photo et celle du bas petite avec une grande photo.
Si mes explications ne sont pas claires, je peux mettre une photo.
Je vous joins aussi mon code et merci d'avance à ceux qui essaieront de comprendre
Sub echanger_etape()
Dim lignetest As Integer
Dim PlageBas As String
Dim PlageHaut As String
lignetest = ActiveCell.Row
PlageHaut = "A" & CStr(lignetest) & ":" & "AK" & CStr(lignetest + 4)
PlageBas = "A" & CStr(lignetest + 5) & ":" & "AK" & CStr(lignetest + 9)
Range(PlageBas).Select
Selection.Cut
Range(PlageHaut).Select
Selection.Insert Shift:=xlDown
End Sub
Bonjour,
Lors d'une copie entière de ligne, la hauteur est également reportée. Plutôt que d'utiliser une plage définit de la colonne "A" à "AK", cela pose-t-il problème de copier toute la ligne ?
Rows(lignetest:lignetest + 4)Sinon il existe un code permettant de modifier la hauteur d'une ligne :
.RowHeight = xx.xxBonsoir,
Tu coupes 5 lignes pour les insérer avant les 5 lignes qui précèdent...
Comme d'hab, les Select et consorts sont parfaitement inutiles,
De même, utiliser CStr pour accoler une valeur numérique à une lettre est totalement superflu :
Texte & Nombre produira automatiquement une valeur de type String !
Du reste, le but étant de définir là une adresse de plage, passer par des variables String est un détour : il était plus simple d'affecter des variables de type Range :
Set PlageHaut = ActiveSheet.Range("A" & lignetest).Resize(5, 37)et :
Set PlageBas = PlageHaut.Offset(5)Cependant si je comprends bien, l'objectif est d'intervertir des images, qui demeurent très fantômatiques dans ton sujet...
La méthode utilisée me paraît tout à fait analogue à découper le mur de ton salon pour déplacer un tableau qui y serait apposé !
Les images, comme toutes les formes, ne sont pas dans des cellules, mais sur la feuille. L'objet parent d'un objet Shape n'est pas un objet Range mais un objet Worksheet. Ce qui explique que, même si elles ont des propriétés permettant de les déplacer avec les cellules (propriétés désactivables), cela peut souvent se traduire par des déformations...
Pour échanger la position de 2 images, le plus simple était de relever la position de chacune (position qui est toujours définie sur la feuille, et de les intervertir, en redéfinissant la position de chacune sur la position initiale de l'autre.
Cordialement.