Bonjour a tous,
Je suis un novice sur Visual basic,
En fouillant un peut sur le net j'ai réussi a trouver une macro qui correspond a 80% a mes besoins,
Elle me permet en effet, comme le titre de la discussion l'indique d'insérer une ou plusieurs images dans plusieurs cellules en les redimensionnant automatiquement a la taille de la cellule,
L'ordre d'insertion des images est défini par l'ordre dans lequel je sélectionne les cellules au départ :
- Je sélectionne A1 puis A2 (ctrl + click)
- j'exécute la macro
- la fenêtre d'insertion d'image s'ouvre et je sélectionne la Photo1 et Photo2
- Lors de l'insertion la Photo1 vient se loger en cellule A1 e la Photo2 en cellule A2
Si au départ j'avais sélectionné la cellule A2 en premier et ensuite A1 la Photo1 se serait logé en A2 et la Photo2 en A1 ...
Mon souhait serait de pouvoir adapter mon code de sorte que l'ordre d'insertion des image se fasse au moment de la sélection des photos et non des cellules :
- Je sélectionne A1 puis A2
- j'exécute la macro mais si je sélectionne la Photo2 en premier et ensuite la Photo1, la Photo2 viendra se loger en cellule A1 et la Photo1 en cellule A2
Voici le code de la macro en question :
Public Sub insere_image()
Dim ficimg, nbImg As Byte
Dim Cel As Range, Plage As Range
On Error Resume Next
ficimg = Application.GetOpenFilename(".jpeg,*.jpeg", , "Choisissez l'image", , True) ' choix nom du fichier
Set Plage = Selection
For Each Cel In Plage
Cel.Select
nbImg = nbImg + 1
If Not ficimg(nbImg) = "" Then
ActiveSheet.Pictures.Insert(ficimg(nbImg)).Select ' insertion
With Selection.ShapeRange
.LockAspectRatio = False ' proportions d'origine lorsque vous la redimensionnez
.Top = ActiveCell.Top ' haut de la cellule
.Left = ActiveCell.Left ' gauche de la cellule
.Height = ActiveCell.RowHeight ' hauteur de la cellule
.Width = ActiveCell.Width ' largeur de la cellule
End With
Selection.Placement = xlMoveAndSize
End If
Next
End Sub
Je remercie par avance tous ceux qui auront l'amabilité de me répondre,
Cordialement,
Cédric
Je suis un novice sur Visual basic,
En fouillant un peut sur le net j'ai réussi a trouver une macro qui correspond a 80% a mes besoins,
Elle me permet en effet, comme le titre de la discussion l'indique d'insérer une ou plusieurs images dans plusieurs cellules en les redimensionnant automatiquement a la taille de la cellule,
L'ordre d'insertion des images est défini par l'ordre dans lequel je sélectionne les cellules au départ :
- Je sélectionne A1 puis A2 (ctrl + click)
- j'exécute la macro
- la fenêtre d'insertion d'image s'ouvre et je sélectionne la Photo1 et Photo2
- Lors de l'insertion la Photo1 vient se loger en cellule A1 e la Photo2 en cellule A2
Si au départ j'avais sélectionné la cellule A2 en premier et ensuite A1 la Photo1 se serait logé en A2 et la Photo2 en A1 ...
Mon souhait serait de pouvoir adapter mon code de sorte que l'ordre d'insertion des image se fasse au moment de la sélection des photos et non des cellules :
- Je sélectionne A1 puis A2
- j'exécute la macro mais si je sélectionne la Photo2 en premier et ensuite la Photo1, la Photo2 viendra se loger en cellule A1 et la Photo1 en cellule A2
Voici le code de la macro en question :
Public Sub insere_image()
Dim ficimg, nbImg As Byte
Dim Cel As Range, Plage As Range
On Error Resume Next
ficimg = Application.GetOpenFilename(".jpeg,*.jpeg", , "Choisissez l'image", , True) ' choix nom du fichier
Set Plage = Selection
For Each Cel In Plage
Cel.Select
nbImg = nbImg + 1
If Not ficimg(nbImg) = "" Then
ActiveSheet.Pictures.Insert(ficimg(nbImg)).Select ' insertion
With Selection.ShapeRange
.LockAspectRatio = False ' proportions d'origine lorsque vous la redimensionnez
.Top = ActiveCell.Top ' haut de la cellule
.Left = ActiveCell.Left ' gauche de la cellule
.Height = ActiveCell.RowHeight ' hauteur de la cellule
.Width = ActiveCell.Width ' largeur de la cellule
End With
Selection.Placement = xlMoveAndSize
End If
Next
End Sub
Je remercie par avance tous ceux qui auront l'amabilité de me répondre,
Cordialement,
Cédric