Nommer une Image par VBA avec recupération du nom dans une cellule

VincentLoic

XLDnaute Nouveau
Bonjour a tous,

Déjà merci pour toute ces solutions déjà trouvées dans ce forum et qui m'a rendu grandement service.

Comme je l'ai indiqué dans le titre je bloque sur la création d'un fichier excel qui aurait pour but la création d'image leur stockage (la nommer et la placer dans une cellule précise) afin de pouvoir les rappeler ultérieurement

Exemple dans un onglet feuil1
Sur les cellules B5:F10 je fais créer une image grâce à des formes déjà disponibles dans excel
Via une macro déjà existantes j'arrive à transformer cette sélection de formes en images.
Par contre je souhaiterais pouvoir la copier par exemple sur un onglet feuil 2 la renommer en fonction du texte présent en feuil 1 cellule B12
Si B12= Balise 1 je souhaite que mon image s'appelle balise 1

J'espère avoir été assez clair sur ma demande d'aide merci d'avance
Loïc
 

VincentLoic

XLDnaute Nouveau
Re : Nommer une Image par VBA avec recupération du nom dans une cellule

salut Martial

Pour la suite je souhaites bien copié dans RécapitulatifParcours d'où le With Feuil4
En effet j'ai des erreurs dans le code qui me semblait bon au regard de la transposition mais tjs des surprises:

**** Partie permettant de copier l'image JPG dans la Feuil4 ****
'Attribution d'une valeur à la variable Col, détermine dans

'quelle colonne on va copier l'image dans la Feuil4
Col = IIf(Lieu = "Robin", 2, 2) ' copie obligatoire sur la colonne 2 peu importe la condition d'où le , 2, 2


'Recherche la ligne de copie
Lig = Application.Match(Parcours2, Feuil4.Columns(1), 0) 'Parcours2 est le nom réel du parcours ( Du Type LieuAParcoursAA),acquis par une formule remplacée (Lieu1Parcours00 pour Robin; Lieu2Parcours00 pour Etcheberry) et présente dans la cellule K2; mon souhait serait également que si la cellule J9 n'est pas remplie un message apparaise afin de demander de la remplir (cellule comportant le numéro du parcours)
La suite me semble bonne

'Détermination du nom de l'image
Image = Lieu & " " & Fichier
'Avec la Feuil4
With Feuil4
'Vérifie si l'image existe dans Feuil4
For Each x In .Shapes
'Si elle existe
If x.Name = Image Then
'On demande si l'on souhaite la supprimer ?
If MsgBox("Voulez-vous remplacer la Parcours N°" & Parcours & "?", vbYesNo, "Remplacement") = vbYes Then
'si réponse OUI, on supprime l'image puis on sort de la boucle
.Shapes(Image).Delete


'On sort de la boucle pour suivre
Exit For
'Si la réponse est NON
Else
'On sort da la macro puisque l'on ne veut pas la remplacer.
Exit Sub
End If
End If
'On continue avec l'image suivante
Next x
'Détermination de c pour définir où copier
Set c = .Cells(Lig, Col)
'Insertion du fichier avec renommage de l'image dans la Feuil4
.Pictures.Insert(ChemFichier).Name = Image
'Modifie la hauteur de l'image, rajouter *2 :égale à 2 fois la hauteur de la cellule, car cellule fusionnée
.Shapes(Image).Height = c.Height * 0.9 'image à 90%
'Positionne à partir de la gauche l'image par rapport à la cellule C.Left Ici centrer:
.Shapes(Image).Left = c.Left + (c.Width * 0.05)
'Idem pour le positionnement en hauteur C.Top; Ici centrer:
.Shapes(Image).Top = c.Top + (c.Height * 0.05)
'Permet de garder les propotions de l'image, puisque ci-dessus nous n'avons modifié que la hauteur
.Shapes(Image).LockAspectRatio = msoTrue
End With
End Sub
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Nommer une Image par VBA avec recupération du nom dans une cellule

Bonjour Loïc, le forum,

Si Col est forcément 2, autant écrire directement Col = 2
J'ai ajouté une ligne au cas où ta cellule I9 serait vide, de façon à sortir de la macro, afin d'éviter des erreurs ultérieures.

Il n'y avait donc pas grand chose à modifier.

A+

Martial
 

Pièces jointes

  • Logiciel CO.xlsm
    238.2 KB · Affichages: 41
  • Logiciel CO.xlsm
    238.2 KB · Affichages: 36
  • Logiciel CO.xlsm
    238.2 KB · Affichages: 39

VincentLoic

XLDnaute Nouveau
Re : Nommer une Image par VBA avec recupération du nom dans une cellule

salut Martial, en fait j'ai encore un soucis sur cette macro j'ai du faire une erreure dans le code mais je n'arrive pas l'identifié.
En effet quand je me sert de la macro pour enregistré mon parcours , celle ci me supprime les images dans mon onglet référentiel poinçons quand le texte msgbox de remplacement apparait.
 

Yaloo

XLDnaute Barbatruc
Re : Nommer une Image par VBA avec recupération du nom dans une cellule

Bonjour Loïc, le forum,

C'est bizarre, puisqu'il n'y a pas de lien avec cet onglet dans la macro.
Peux-tu mettre le fichier que tu utilises et décrire exactement quand la suppression se produit ?

A+

Martial
 

VincentLoic

XLDnaute Nouveau
Re : Nommer une Image par VBA avec recupération du nom dans une cellule

bonjour Martial,
quand je clique sur ma forme correspondant à "Sauvegarder le parcours" (utilisant ma macro Créationparcours)sur la feuille créationparcours
Les balises s'efface sur cette feuille et je me suis aperçu que c'était du à un effacement de ces balises sur ma feuille référentielpoinçons.

Comme toi j'ai relu plusieurs ma macro et le seul passage que je ne comprend pas et qui est redondant concernant ma macro crétionpoinçons est le passage concernant justement le remplacement des images si celle-ci est présente!
faut il modifier la variable x qui est commune et définit différemment dans les deux macros afin d'éviter des erreurs?

bonne journée et merci d'avance
 

Pièces jointes

  • Logiciel CO.xlsm
    202.2 KB · Affichages: 47
  • Logiciel CO.xlsm
    202.2 KB · Affichages: 52
  • Logiciel CO.xlsm
    202.2 KB · Affichages: 45

Yaloo

XLDnaute Barbatruc
Re : Nommer une Image par VBA avec recupération du nom dans une cellule

Bonjour Loic,

Cela peut être dans ces quelques lignes (X) mais je ne peux pas tester pour le moment, je ne serait pas sur un PC avant la fin de la semaine.

A+
Martial
 

VincentLoic

XLDnaute Nouveau
Re : Nommer une Image par VBA avec recupération du nom dans une cellule

Salut Martial j'ai réussi à corriger mon code afin qu'il n'y est plus cette erreur cela venait bien du passage avec le x il m'a suffit de modifier ma variable x en y et de remplacer tout les x du code par y!
Juste une dernière question j'aimerais qu'a la fin de cette macro
Les cellules de B6à H10 du ma feuille Création de parcours soient copiées via un collage spéciale (valeur) sur ma feuille CorrectionParcours(feuil11) avec pour cible de collage de manière automatique la cellule colonne 2 et ligne de manière automatique comme pour les images: Voici le code que j'ai tapé mais je bloque sur une écriture correcte:
' Copie des données des parcours sur la CorrectionParcours
' Détermination des variables pour la copie dans la correction générale
Dim Col1, Lig1 As Boolean
Col1 = 2
'Recherche la ligne de copie (!!!! ça serait plus simple si les cellules n'étaient pas fusionnées !!!)
Lig1 = Application.Match(Parcours2, Feuil11.Columns(1), 0)
'la variable Parcours 2 est définit plus haut dans la macro et correspond au nom du parcours
'Copie des données pour la correction générale des parcours
Sheets("CréationParcours").Select
Range("B6:H10").Select
Selection.Copy
' Collage des données pour la correction générale des parcours
Sheets("CorrectionParcours").Select
Range(Cells(Lig1, Col1)).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
 

Pièces jointes

  • Logiciel CO.xlsm
    272.8 KB · Affichages: 25
  • Logiciel CO.xlsm
    272.8 KB · Affichages: 24
  • Logiciel CO.xlsm
    272.8 KB · Affichages: 28

Yaloo

XLDnaute Barbatruc
Re : Nommer une Image par VBA avec recupération du nom dans une cellule

Bonjour Loic, le forum,

Je pense que tu peux simplifier en remplaçant toutes tes lignes par une seule :
VB:
Feuil11.Cells(Lig1, Col1).Resize(5, 7) = [B6:H10].Value
Puisque tu veux copier uniquement les valeurs de ta feuille active sur Feuil11.

Il faut faire attention lorsque tu déclares tes variables, pour Lig1 tu avais mis As Boolean, une variable Boolean correspond à VRAI ou FAUX alors que la valeur de Lig1 attendue est un chiffre donc plutôt une variable Long (&).

Vois ton fichier modifié en pièce jointe.

A+

Martial
 

Pièces jointes

  • Logiciel CO (1).xlsm
    265.2 KB · Affichages: 35

Discussions similaires

Statistiques des forums

Discussions
312 429
Messages
2 088 351
Membres
103 824
dernier inscrit
frederic.marien@proximus.