Discussion:
reherchev pour inserer des images
(trop ancien pour répondre)
domicol
2020-05-12 17:03:26 UTC
Permalink
Bonjour,
j ai une colonne avec plusieurs résultat qui n on pas un ordre définie ex:
1gi
22tr
2c
11p
etc.....................................
ou un autre exemple
22vb
14v
1g1
2vc
etc......................................
dans cet exemple il y a "e;e;1gi"e;e;en commun entre les 2 listes mais ne son
pas au même endroit dans liste;en suite la macro me fera remonter l image qu
correspond a "e;1gi"e;; pour la coller sur une feuille excel.et il doit aussi m
coller toutes les autres images correspondante a la liste ;le nombre de case
pleine est variable suivant les solutions
bonne soirée
MichD
2020-05-12 18:48:10 UTC
Permalink
Bonjour,

Dans mon exemple,

Le nom de l'onglet de la feuille : "Feuil1"
Le nom des images se trouve dans la colonne A de A1:Ax
Comme tes noms dans tes cellules n'ont pas d'extension de fichier, j'ai
supposé qu'il s'agissait de .jpg

Les images sont insérées dans la cellule à droite de la cellule
contenant le nom et aux mêmes dimensions de la cellule.

Tu dois déterminer les 2 répertoires où sont tes fichiers images.


'---------------------------------------------
Sub TestMonImage()
Dim Img As String
Dim RepImage As String
Dim RepImage2 As String
Dim Rg As Range, C As Range
Dim cellule As Range
Dim reponse As String
Dim Message As String, X As Long
'---------------------------------------------------------------
' donner le répertoire ou se trouve les fichiers
'images qui sont en xxxx.jpg à la ligne ci-dessous.
'---------------------------------------------------------------
RepImage = "E:\Images\"

'Chemin du répertoire contenant la deuxième image pour "1g1"
RepImage2 = "E:\UnAutreRépertoire\"

Application.ScreenUpdating = False
With Worksheets("Feuil1") ' Nom onglet feuille à déterminer
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With

For Each C In Rg
If C <> "" Then
'La hauteur de chaque ligne aura 350 points.
'à adapter si besoin...
C.RowHeight = 30
If C.Value = "1g1" Then
X = X + 1
End If
If X = 1 Then
Img = RepImage2 & Trim(C.Value) & ".jpg"
X = 0
Else
Img = RepImage2 & Trim(C.Value) & ".jpg"
End If

If Dir(Img) <> "" Then
InsererImage Rg.Parent.Name, C.Offset(, 1), Img, Trim(C)
Else
Message = Message & Img & vbCrLf
End If
End If
Next
Set Rg = Nothing: Set C = Nothing
If Message <> "" Then
MsgBox "Ces images n'ont pas été trouvées." & vbCrLf & _
Message, vbCritical + vbOKOnly, "Attention"
End If
Application.ScreenUpdating = True
End Sub
'---------------------------------------------
Sub InsererImage(feuille As String, ByVal Rg As Range, _
NomImage As String, SonNom As String)

Dim Largeur As Double
Dim Hauteur As Double
Dim Image As Object

With Worksheets(feuille)
Largeur = Rg.Offset(, 1)(, Rg.Columns.Count).Left - Rg.Left
Hauteur = Rg.Offset(Rg.Rows.Count).Top - Rg(1).Top
Set Image = .Pictures.Insert(NomImage)
.Shapes(Image.Name).LockAspectRatio = msoFalse
End With
With Image
'nom de l'image
.Name = SonNom
.Left = Rg.Left + 0.01
.Top = Rg.Top + 0.01
'Largeur de l'image = largeur - 0.01
Image.Width = Largeur - 0.01
'Hauteur de l'image
Image.Height = Hauteur - 0.01
'l'image doit se déplacer avec les cellules
.Placement = xlMoveAndSize
'note, possibilité xlmove et freefloating
'verrouillé ou pas par true ou false
.Locked = True
End With
End Sub
'---------------------------------------------

MichD
domicol
2020-05-13 17:20:52 UTC
Permalink
Post by domicol
Bonjour,
1gi
22tr
2c
11p
etc.....................................
ou un autre exemple
22vb
14v
1g1
2vc
etc......................................
dans cet exemple il y a "e;1gi"e; en commun entre les 2 listes mais
ne sont pas au même endroit dans liste;en suite la macro me fera remonter
l image qui correspond a "e;1gi"e; pour la coller sur une feuille
excel.et il doit aussi me coller toutes les autres images correspondante
la
Post by domicol
liste ;le nombre de cases plaine est variable suivant les solutions
bonne soirée
merci je me suis inspiré de votre macro
je travaille avec toutes les feuilles dans le même fichier
j ai fais cette moaro qui ne marche pas entièrement et je ne trouve pa
l'erreur
Dim P1 As String
Dim P2 As String
Dim P3 As String
etc.....
Dim P300 As String

Dim Plage As Range

Set F1 = Worksheets("image")'feuille ou il y a les images
Set Plage = F1.Range("L1:L250") 'plage de cellule ou il y a la valeu
exemple"3C"
For Each point In Plage
MsgBox point.Value
'je voudrai que chaque fois que la "MsgBox" affiche un résultat elle exécute l
macro qui correspond au résultat
'exemple:
'1er info de la "MsgBox : 1C "il exécute la macro 1C
'2em info de la "MsgBox : 50v "il exécute la macro 50v
'3em info de la "MsgBox : 3C "il exécute la macro 3c
'etc variable un jour il y a 10 info ,2 jours après il n y en aura peut être 2
ou 2 ....
Next
If point = "3C" Then 'si point est égale a 3C tu execute la macr
suivante
Call MsgBox("dans 3C")
Sheets("image").Select 'feuille ou se trouve les images
ActiveSheet.Shapes("3C").Select
Selection.Copy
Sheets("bilan").Select 'feuiile ou je colle l'image
Range("R11").Select
ActiveSheet.Paste
Selection.ShapeRange.IncrementLeft -22
Selection.ShapeRange.IncrementTop 5
Selection.Name = "Image 120"
Range("Y2").Select
End If
MichD
2020-05-13 19:42:16 UTC
Permalink
Voici un fichier exemple. Évidemment, tu devras adapter le nom des
feuilles, la plage de cellules...

https://www.cjoint.com/c/JEntOeejFvj

MichD
domicol
2020-05-13 21:09:41 UTC
Permalink
Post by domicol
Bonjour,
1gi
22tr
2c
11p
etc.....................................
ou un autre exemple
22vb
14v
1g1
2vc
etc......................................
dans cet exemple il y a "e;1gi"e; en commun entre les 2 listes mais
ne sont pas au même endroit dans liste;en suite la macro me fera remonter
l image qui correspond a "e;1gi"e; pour la coller sur une feuille
excel.et il doit aussi me coller toutes les autres images correspondante
la
Post by domicol
liste ;le nombre de cases plaine est variable suivant les solutions
bonne soirée
Merci
J ai regardé, une question
Je peux choisir la position des images ?
Les images vont se positionner sur une carte pour la compléter .
Bonne soirée
MichD
2020-05-13 21:34:25 UTC
Permalink
Post by domicol
Je peux choisir la position des images ?
OUI, encore faut-il que tu définisses la position que tu désires!
Post by domicol
Les images vont se positionner sur une carte pour la compléter .
Qu'est-ce que tu veux que je te réponde? De quelle carte parles-tu? À
quoi ressemble cette carte? Je n’en sais rien...

MichD
domicol
2020-05-14 05:00:28 UTC
Permalink
Post by domicol
Bonjour,
1gi
22tr
2c
11p
etc.....................................
ou un autre exemple
22vb
14v
1g1
2vc
etc......................................
dans cet exemple il y a "e;1gi"e; en commun entre les 2 listes mais
ne sont pas au même endroit dans liste;en suite la macro me fera remonter
l image qui correspond a "e;1gi"e; pour la coller sur une feuille
excel.et il doit aussi me coller toutes les autres images correspondante
la
Post by domicol
liste ;le nombre de cases plaine est variable suivant les solutions
bonne soirée
Je definie Les positions une fois comme cela
ActiveSheet.Shapes("3C").Select
Selection.Copy
Sheets("bilan").Select 'feuiile ou je colle l'image
Range("R11").Select
ActiveSheet.Paste
Selection.ShapeRange.IncrementLeft -22
Selection.ShapeRange.IncrementTop 5
Selection.Name = "Image 120"
MichD
2020-05-14 11:13:13 UTC
Permalink
Post by domicol
Selection.ShapeRange.IncrementLeft -22
Selection.ShapeRange.IncrementTop 5
Selection.Name = "Image 120"
Dans mon exemple, pour déplacer légèrement l'image copiée selon ce que
tu indiques plus haut, tu fais comme ceci dans mon exemple :

Tu remplaces la ligne : ShDest.Paste ShDest.Range("D" & X)

With ShDest
.Paste .Range("R11")
.Shapes(C.Value).IncrementLeft -22
.Shapes(C.Value).IncrementTop 5
End With

Si tu utilises une adresse de cellules .Range("R11") dans une boucle,
cela signifie que toutes les images de la boucle seront insérées au même
endroit.

Le code que tu as publié est réalisé à l'aide de l'enregistrement d'une
macro. Cela aide beaucoup pour débuter, mais si tu veux apprendre à
programmer en VBA-Excel, je te suggère d'utiliser un bon livre.

Une suggestion d'un livre qui date... mais qui est excellent pour les
débutants, tu le trouveras peut-être dans une bibliothèque :

Auteur: John Walkerbach
Titre : Excel 2000 et VBA, le guide du développeur.

MichD
domicol
2020-05-14 16:31:44 UTC
Permalink
Post by domicol
Bonjour,
1gi
22tr
2c
11p
etc.....................................
ou un autre exemple
22vb
14v
1g1
2vc
etc......................................
dans cet exemple il y a "e;1gi"e; en commun entre les 2 listes mais
ne sont pas au même endroit dans liste;en suite la macro me fera remonter
l image qui correspond a "e;1gi"e; pour la coller sur une feuille
excel.et il doit aussi me coller toutes les autres images correspondante
la
Post by domicol
liste ;le nombre de cases plaine est variable suivant les solutions
bonne soirée
merci pour une foi je suis arrivé à faire marcher la macro.
un détail
exemple il me faut placer sur la carte de France des villes
aujourd'hui il me faut placer
Toulouse
Marseille
Paris
etc jusqu'a 250 villes
je place Toulouse a ça place sur la carte mais après comment je fais pou
placer Paris et Marseille
demain j ai une autre liste
Brest
Toulon
Lille
etc
comment cela va se passer
merci pour l info du livre
il doit être très bien car il est introuvable en rupture partout même d'occasio
introuvable
bonne soirée
MichD
2020-05-14 18:41:28 UTC
Permalink
Post by domicol
Post by domicol
Bonjour,
1gi
22tr
2c
11p
etc.....................................
ou un autre exemple
22vb
14v
1g1
2vc
etc......................................
dans cet exemple il y a "e;1gi"e; en commun entre les 2 listes mais
ne sont pas au même endroit dans liste;en suite la macro me fera remonter
l image qui correspond a "e;1gi"e; pour la coller sur une feuille
excel.et il doit aussi me coller toutes les autres images correspondante a
la
Post by domicol
liste ;le nombre de cases plaine est variable suivant les solutions
bonne soirée
merci pour une foi je suis arrivé à faire marcher la macro.
un détail
exemple il me faut placer sur la carte de France des villes
aujourd'hui il me faut placer
Toulouse
Marseille
Paris
etc jusqu'a 250 villes
je place Toulouse a ça place sur la carte mais après comment je fais pour
placer Paris et Marseille
demain j ai une autre liste
Brest
Toulon
Lille
etc
comment cela va se passer
merci pour l info du livre
il doit être très bien car il est introuvable en rupture partout même d'occasion
introuvable
bonne soirée
Bonjour,

Pour ce que tu cherches à faire, Excel ne va pas te faciliter la tâche.

Pour chaque cellule, ou chaque objet dans la feuille de calcul, tu as 4
propriétés de base. La mesure de base est le "Point".

Left : la distance entre le bord de la fenêtre jusqu'à la cellule ou l'objet

Top : la distance entre le haut de la feuille de calcul et le haut de
la cellule ou l'objet

Width = La largeur de la cellule ou de l'objet

Height = la hauteur de la cellule ou de l'objet

Par exemple, sur la carte de France, il n'y a aucun moyen direct de
demander à VBA de situer un objet tout près de cette ville.


Pour obtenir un endroit précis sur la carte, tu répètes pour toutes les
villes ce que tu as fait.
A ) Tu tentes d'identifier la cellule (sous la carte) la plus proche de
la ville désirée et avec l'enregistreur Macro, tu adaptes la position de
l'objet sur la carte, tu obtiendras des valeurs différentes pour chacune
des villes. Si tu as 250 villes, tu devras refaire manuellement 250 la
même macro pour chacune des villes.
.IncrementLeft -22
.Shapes(C.Value).IncrementTop 5

Après avoir obtenir l'adresse de la cellule la plus près d'une ville et
les valeurs suivantes .IncrementLeft et IncrementTop, il est possible
d'utiliser des "Tableaux "array, et dans ces tableaux d'inclure ces données.
Dans une feuille de calcul (feuille que tu peux masquer au besoin, tu as
4 colonnes :
Colonne A : Le nom de la ville
Colonne B : L'adresse de la cellule
Colonne C : la valeur de IncrementLeft
Colonne D : La valeur de IncrementTop

Comme tu le vois, c'est une tâche très fastidieuse qui t'attend. Lorsque
tu auras toutes ces données, il sera facile de faire la macro que tu
désires.

P.S. Attention, assure-toi que la position de la carte est bien celle
désirée de même que sa grandeur, sinon, tu devras recommencer ces
manipulations.

À mon avis, c'est plus court de faire ce travail manuellement que par macro!

MichD
MichD
2020-05-14 19:01:07 UTC
Permalink
Concernant le livre mentionné, comme cela date de l'an 2000, il ne doit
plus en rester beaucoup en librairie sur les tablettes.

L'adresse Internet de l'éditeur :
Http://www.editions-eyrolles.com

adresse :
Asman Eyrolles Multimedia
1, rue Thénard
75005 Paris
Télécopie : 01 44 41 11 85

ISBN du livre : 2-7464-0048-0

Ceci étant dit, il y en a d'autres du même auteur beaucoup plus récent,
au moins un pour chaque version d'Excel depuis l'an 2000. (2000, 2003,
2007, 2010, 2013, 2016, je n'ai pas vérifié pour 2019.

Pour chacune de ces années, il a aussi un livre traitant seulement sur
les formules dans Excel.

MichD
domicol
2020-05-14 19:52:39 UTC
Permalink
Post by domicol
Bonjour,
1gi
22tr
2c
11p
etc.....................................
ou un autre exemple
22vb
14v
1g1
2vc
etc......................................
dans cet exemple il y a "e;1gi"e; en commun entre les 2 listes mais
ne sont pas au même endroit dans liste;en suite la macro me fera remonter
l image qui correspond a "e;1gi"e; pour la coller sur une feuille
excel.et il doit aussi me coller toutes les autres images correspondante
la
Post by domicol
liste ;le nombre de cases plaine est variable suivant les solutions
bonne soirée
j ai trouve "programmation vba pour excel pour les les nuls 2013 2016" du mêm
auteur
je pense que cela devrait faire l affaire;
j avais déja commence à repérer la position des villes
je continu et aprés comment la macro va se construire avec ses infos.
Colonne A : Le nom de la ville
Colonne B : L'adresse de la cellule
Colonne C : la valeur de IncrementLeft
Colonne D : La valeur de IncrementTop
domicol
MichD
2020-05-14 21:23:46 UTC
Permalink
Post by domicol
je pense que cela devrait faire l affaire;
j avais déja commence à repérer la position des villes
je continu et aprés comment la macro va se construire avec ses infos.
Colonne A : Le nom de la ville
Colonne B : L'adresse de la cellule
Colonne C : la valeur de IncrementLeft
Colonne D : La valeur de IncrementTop
domicol
Voir le fichier joint. https://www.cjoint.com/c/JEovuWxJt0j

Évidemment, tu devras adapter le nom des feuilles dans la procédure!

MichD
domicol
2020-05-14 20:49:45 UTC
Permalink
Post by domicol
Bonjour,
1gi
22tr
2c
11p
etc.....................................
ou un autre exemple
22vb
14v
1g1
2vc
etc......................................
dans cet exemple il y a "e;1gi"e; en commun entre les 2 listes mais
ne sont pas au même endroit dans liste;en suite la macro me fera remonter
l image qui correspond a "e;1gi"e; pour la coller sur une feuille
excel.et il doit aussi me coller toutes les autres images correspondante
la
Post by domicol
liste ;le nombre de cases plaine est variable suivant les solutions
bonne soirée
j ai 20 villes de positionné
domicol
2020-05-15 19:54:12 UTC
Permalink
Post by domicol
Bonjour,
1gi
22tr
2c
11p
etc.....................................
ou un autre exemple
22vb
14v
1g1
2vc
etc......................................
dans cet exemple il y a "e;1gi"e; en commun entre les 2 listes mais
ne sont pas au même endroit dans liste;en suite la macro me fera remonter
l image qui correspond a "e;1gi"e; pour la coller sur une feuille
excel.et il doit aussi me coller toutes les autres images correspondante
la
Post by domicol
liste ;le nombre de cases plaine est variable suivant les solutions
bonne soirée
génial ça marche trop bien
j ai fais les modifs pour l adapter à mon fichier
trop fort
je vous remercie pour votre patience
merci
peut être nous retrouverons nous pour ma prochaine question!!!!!!!!!
domicol

Loading...