Nom des "objects" OLE

  • Initiateur de la discussion Initiateur de la discussion BOUCHEZ JD
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

BOUCHEZ JD

XLDnaute Junior
Bonjour/soir

On peut insérer un fichier dans une feuille via ce type de code :

Set Obj = ActiveSheet.OLEObjects.Add(Filename:=Chemin, Link:=False, DisplayAsIcon:=True, IconFileName:= "C:\TRAVAIL\PDFFile.ico", _
IconIndex:=0, IconLabel:= _Fichier )

Excel insére des objets dont le nom est "Object 5" "Object 6" etc ..

Et ma question est: Comment peut on récupérer dans une variable ces noms ?

Merci d'avance
 
Re : Nom des "objects" OLE

Merci Catrice.

Comme on le dit aprés, "c'était tout bête " !


Puisque l'on est sur le sujet des 'Objets', existe t'il un moyen de
repartir à 1 (Objet 1) ?

Par exemple, on supprime 3 objets 'Objet 5' 'Objet 6' 'Objet 7' dans une feuille.
Lorsque l'on rajoute un objet, Excel crée 'Objet 8 ' alors que la suppression
avait supprimé TOUS les objets de la feuille.


Merci d'avance.
 
Re : Nom des "objects" OLE

Bonjour Bouchez JD, Catrice,

(...) existe t'il un moyen de
repartir à 1 (Objet 1) ?

Il faut renommer l'objet, et comme il n'est pas possible d'avoir 2 objets portant le même nom, faire une boucle à partir de 1 :

Code:
Dim i As Long
On Error Resume Next
i = 0
1 i = i + 1
Err = 0
Obj.Name = "Object " & i
If Err Then GoTo 1
On Error GoTo 0

EDITION : non, ça ne va pas, on peut donner le même nom à plusieurs objets... Il y a des choses qui m'échappent vraiment dans les OLEObjects et les Shapes...

A+
 
Dernière édition:
Re : Nom des "objects" OLE

Bonjour à tous
J'ai les mêmes problèmes
j'ai une feuille de calcul (A) que j'utilise alternativement avec un logo différent
je voudrai supprimer le logo1 de la feuille (A), aller chercher le logo2 de la feuille (B) qui contient les logos 1 et 2, pour le mettre sur la feuille (A) et bien sur inversément
Merci à tous
 
Re : Nom des "objects" OLE

Bonjour,

A defaut de reinitialiser, le code suivant créé toujours un objet qui s'appelle "toto".

Sub Test()
Chemin = "C:\Test.jpg"
For Each X In ActiveSheet.OLEObjects
If X.Name = "toto" Then X.Delete
Next
Set Obj = ActiveSheet.OLEObjects.Add(Filename:=Chemin)
Obj.Name = "toto"
End Sub
 
Re : Nom des "objects" OLE

salut Catrice
Merci de te plonger dans nos soucis
la macro doit faire :
1) enlever le logo existant de la feuille 1 du classeur A
2) aller chercher un autre logo dans le classeur B feuille 1 (parfois ce sera le même logo (fonction d'un choix délibéré))
3) revenir sur le classeur A feuille
4) mettre au même endroit le logo choisi
quand on le fait une fois, ça fonctionne puis après on passe à l'erreur

pour l'essai, je sui rester sur le même classeur


Sub chgtlogo()
' Macro enregistrée le 14/05/2009 par MNO
ActiveSheet.Shapes("Picture 7").Select
Selection.Delete
Sheets("logos").Select
ActiveSheet.Shapes("Picture 2").Select
Selection.Copy
Sheets("contrat").Select
Range("C4").Select
ActiveSheet.Paste
End Sub


DUR DUR, je voulais me simplifier... pour éviter d'avoir des fichiers en double

Merci à tous
 
Re : Nom des "objects" OLE

Un super grand merci à PierreJean et à tous ce qui on participé
j'ai adapté et ça marche
mais comment bien positionner le logo sur la feuille "Contrat"
avec Range, c'est de l'à peu prêt...


Sub chgtlogo()
monchoix = UCase(InputBox("Compagnie A ou T", "FAITES VOTRE CHOIX"))
For n = 1 To ActiveSheet.Shapes.Count
nomp = ActiveSheet.Shapes(n).Name
If Left(nomp, 8) = "Picture " Then
x = Val(Right(nomp, Len(nomp) - 8))
End If
Next
ActiveSheet.Shapes("Picture " & x).Select
Selection.Delete
Range("C10") = ""
Sheets("logos").Select
'cette feuille sera dans un autre classeur et contient 2 logos.jpg
If monchoix = "T" Then
textr = "TROUPUSCULE"
yf = 3
Else
textr = "ADM"
yf = 4
End If
ActiveSheet.Shapes("Picture " & yf).Select
Selection.Copy
Sheets("contrat").Select
Range("C3").Select
ActiveSheet.Paste
Range("C10") = textr
End Sub

BRAVO au Site...
 
Re : Nom des "objects" OLE

Re
La reponse a quasiment été donnée le fichier que je t' ai fourni
Voici la façon de proceder :
Tu enclenches l'enregisteur de macro :Outils > Macro > Nouvelle macro
Tu places en manuel ton logo exactement ou tu veux le voir
tu arretes l'enregistrement et tu lis la macro
tu trouveras les position Left et Top te permettant de loger le logo la ou tu le souhaites
 
Re : Nom des "objects" OLE

Bonjour,

Ci-joint un code qui efface "Picture x" et qui remplace selon le choix, au meme endroit :
(voir fichier joint)

Sub chgtlogo()
monchoix = UCase(InputBox("Compagnie A ou T", "FAITES VOTRE CHOIX"))
For Each X In ActiveSheet.Shapes
If Left(X.Name, 8) = "Picture " Then
XLeft = X.Left
XTop = X.Top
X.Delete
End If
Next
Select Case monchoix
Case "T": textr = "TROUPUSCULE": yf = 3
Case "A": textr = "ADM": yf = 4
End Select
Sheets("logos").Shapes("Picture " & yf).Copy
With Sheets("contrat")
.Paste
.Shapes("Picture " & yf).Left = XLeft
.Shapes("Picture " & yf).Top = XTop
.Range("C10") = textr
End With
End Sub
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour