Bonjour à tous,
j'ai trouvé un code qui marche super bien et qui download une photo dans excel à l'endroit que l'on souhaite.
Mais je voudrais qui download la photo sur une autre page.
Pour le moment, il imprime la
Range("o1:s11").Select 'emplacement des cellules fusionnées ou la photo sera affiché
Mais je voudrais qu'il affiche sur la page DP au même endroit.
Voici le code en entier pour ceux qui veulent en profiter
Bonne journée !
Sub Downloadcharpente()
'DEPROTECTION
ActiveSheet.Unprotect ""
'SUPPRIMER LA DERNIERE PHOTO CREE
If Range("h43") <> "" Then
PHOTO1 = Range("h43").Value
ActiveSheet.Shapes(PHOTO1).Delete
End If
'SELECTIONER LES CELLULES FUSIONNEES
Range("o1:s11").Select 'emplacement des cellules fusionnées ou la photo sera affiché
Ad = Selection.Address
CellH = Selection.Height
CellW = Selection.Width
'EXTRACTION DE L'IMAGE
On Error Resume Next
Application.ScreenUpdating = False
IMPORTATION = Application.GetOpenFilename("Toutes les images (*.jpg;*.bmp;*.tiff;*.tif;*.gif;*.jpeg;*.png;*.jpe;*.jfif),*.jpg;*.bmp;*.tif;*.tiff;*.gif;*.jpeg;*.png;*.jpe;*.jfif", , "Choisissez l'image") ' choix nom du fichier
If IMPORTATION = "Faux" Then
MsgBox "Operation annulée" & vbCrLf & "Attention, veuillez renouveler l'action !", vbExclamation
'SUPRESSION DU NOM DE L'IMAGE PRECEDENTE
Range("h43").Select
Selection.ClearContents
'SELECTIONER UNE CELLULE
[h42].Select
'PROTECTION
ActiveSheet.Protect "Jpc42*"
Exit Sub
End If
'----- [ B]
ActiveSheet.Pictures.Insert(IMPORTATION).Select
'-------------[ /B] ' insertion
With Selection.ShapeRange
MemW = .Width: MemH = .Height
'adapte les ratio
If MemH < CellH And MemW < CellW Then
'l'image < cellule
RatioHz = MemH / CellH
RatioVt = MemW / CellW
If RatioVt < RatioHz Then 'adapter en hauteur
HT = CellH: Lg = MemW * (HT / MemH)
T = 0: L = (CellW - Lg) / 2
Else 'adapter en largeur
Lg = CellW: HT = MemH * (CellW / MemW)
L = 0: T = (CellH - HT) / 2
End If
ElseIf MemH > CellH And MemW > CellW Then
'l'image > cellule
RatioHz = CellH / MemH
RatioVt = CellW / MemW
If RatioVt > RatioHz Then 'adapter en hauteur
HT = CellH: Lg = MemW * (HT / MemH)
T = 0: L = (CellW - Lg) / 2
Else 'adapter en largeur
Lg = CellW: HT = MemH * (Lg / MemW)
L = 0: T = (CellH - HT) / 2
End If
ElseIf MemH > CellH And MemW < CellW Then
'adapter en hauteur
HT = CellH: Lg = MemW * (HT / MemH)
T = 0: L = (CellW - Lg) / 2
ElseIf MemH < CellH And MemW > CellW Then
'adapter en largeur
Lg = CellW: HT = MemH * (Lg / MemW)
L = 0: T = (CellH - HT) / 2
Else
Stop ' pas prévu ?
End If
.LockAspectRatio = False ' proportions d'origine lorsque vous la redimensionnez
.Top = Range(Ad).Top + T ' haut de la cellule
.Left = Range(Ad).Left + L ' gauche de la cellule
.Height = HT
.Width = Lg ' largeur des cellules fusionnées
End With
With Selection
.Placement = xlMoveAndSize
.PrintObject = True
End With
'ENREGISTRER LE NOM DE L'IMAGE DANS LA CELLULE A GAUCHE
PHOTO2 = Selection.ShapeRange.Name
Range("h43").Value = PHOTO2
'SELECTIONER UNE CELLULE
[h42].Select
'PROTECTION
'ActiveSheet.Protect ""
End Sub
j'ai trouvé un code qui marche super bien et qui download une photo dans excel à l'endroit que l'on souhaite.
Mais je voudrais qui download la photo sur une autre page.
Pour le moment, il imprime la
Range("o1:s11").Select 'emplacement des cellules fusionnées ou la photo sera affiché
Mais je voudrais qu'il affiche sur la page DP au même endroit.
Voici le code en entier pour ceux qui veulent en profiter
Bonne journée !
Sub Downloadcharpente()
'DEPROTECTION
ActiveSheet.Unprotect ""
'SUPPRIMER LA DERNIERE PHOTO CREE
If Range("h43") <> "" Then
PHOTO1 = Range("h43").Value
ActiveSheet.Shapes(PHOTO1).Delete
End If
'SELECTIONER LES CELLULES FUSIONNEES
Range("o1:s11").Select 'emplacement des cellules fusionnées ou la photo sera affiché
Ad = Selection.Address
CellH = Selection.Height
CellW = Selection.Width
'EXTRACTION DE L'IMAGE
On Error Resume Next
Application.ScreenUpdating = False
IMPORTATION = Application.GetOpenFilename("Toutes les images (*.jpg;*.bmp;*.tiff;*.tif;*.gif;*.jpeg;*.png;*.jpe;*.jfif),*.jpg;*.bmp;*.tif;*.tiff;*.gif;*.jpeg;*.png;*.jpe;*.jfif", , "Choisissez l'image") ' choix nom du fichier
If IMPORTATION = "Faux" Then
MsgBox "Operation annulée" & vbCrLf & "Attention, veuillez renouveler l'action !", vbExclamation
'SUPRESSION DU NOM DE L'IMAGE PRECEDENTE
Range("h43").Select
Selection.ClearContents
'SELECTIONER UNE CELLULE
[h42].Select
'PROTECTION
ActiveSheet.Protect "Jpc42*"
Exit Sub
End If
'----- [ B]
ActiveSheet.Pictures.Insert(IMPORTATION).Select
'-------------[ /B] ' insertion
With Selection.ShapeRange
MemW = .Width: MemH = .Height
'adapte les ratio
If MemH < CellH And MemW < CellW Then
'l'image < cellule
RatioHz = MemH / CellH
RatioVt = MemW / CellW
If RatioVt < RatioHz Then 'adapter en hauteur
HT = CellH: Lg = MemW * (HT / MemH)
T = 0: L = (CellW - Lg) / 2
Else 'adapter en largeur
Lg = CellW: HT = MemH * (CellW / MemW)
L = 0: T = (CellH - HT) / 2
End If
ElseIf MemH > CellH And MemW > CellW Then
'l'image > cellule
RatioHz = CellH / MemH
RatioVt = CellW / MemW
If RatioVt > RatioHz Then 'adapter en hauteur
HT = CellH: Lg = MemW * (HT / MemH)
T = 0: L = (CellW - Lg) / 2
Else 'adapter en largeur
Lg = CellW: HT = MemH * (Lg / MemW)
L = 0: T = (CellH - HT) / 2
End If
ElseIf MemH > CellH And MemW < CellW Then
'adapter en hauteur
HT = CellH: Lg = MemW * (HT / MemH)
T = 0: L = (CellW - Lg) / 2
ElseIf MemH < CellH And MemW > CellW Then
'adapter en largeur
Lg = CellW: HT = MemH * (Lg / MemW)
L = 0: T = (CellH - HT) / 2
Else
Stop ' pas prévu ?
End If
.LockAspectRatio = False ' proportions d'origine lorsque vous la redimensionnez
.Top = Range(Ad).Top + T ' haut de la cellule
.Left = Range(Ad).Left + L ' gauche de la cellule
.Height = HT
.Width = Lg ' largeur des cellules fusionnées
End With
With Selection
.Placement = xlMoveAndSize
.PrintObject = True
End With
'ENREGISTRER LE NOM DE L'IMAGE DANS LA CELLULE A GAUCHE
PHOTO2 = Selection.ShapeRange.Name
Range("h43").Value = PHOTO2
'SELECTIONER UNE CELLULE
[h42].Select
'PROTECTION
'ActiveSheet.Protect ""
End Sub