Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Nom des "objects" OLE

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
 

Catrice

XLDnaute Barbatruc
Re : Nom des "objects" OLE

Bonsoir,

Tu peux récupérer le nom comme ceci :

toto = Obj.Name
MsgBox toto

et acceder à un "ancien" objet comme ceci :

ActiveSheet.OLEObjects("Object 2").Select
 

BOUCHEZ JD

XLDnaute Junior
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.
 

job75

XLDnaute Barbatruc
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:

46MNO83

XLDnaute Junior
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
 

Catrice

XLDnaute Barbatruc
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
 

46MNO83

XLDnaute Junior
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
 

pierrejean

XLDnaute Barbatruc
Re : Nom des "objects" OLE

bonjour a tous

un petit fichier pour vous inspirer
 

Pièces jointes

  • 46MNO83.zip
    9.7 KB · Affichages: 28
  • 46MNO83.zip
    9.7 KB · Affichages: 37
  • 46MNO83.zip
    9.7 KB · Affichages: 30

pierrejean

XLDnaute Barbatruc
Re : Nom des "objects" OLE

Re

Voila des explications sur le fonctionnement
 

Pièces jointes

  • 46MNO83.zip
    11.4 KB · Affichages: 20
  • 46MNO83.zip
    11.4 KB · Affichages: 24
  • 46MNO83.zip
    11.4 KB · Affichages: 26
Dernière édition:

46MNO83

XLDnaute Junior
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...
 

pierrejean

XLDnaute Barbatruc
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
 

Catrice

XLDnaute Barbatruc
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

  • Classeur1.xls
    29 KB · Affichages: 56
  • Classeur1.xls
    29 KB · Affichages: 60
  • Classeur1.xls
    29 KB · Affichages: 50

46MNO83

XLDnaute Junior
Re : Nom des "objects" OLE

Merci PierreJean
je n'avais pas trop compris, il faut dire que je ne connaissais pas ces instructions

Meri à toi aussi Catrice

Vos aides me permettent d'avancer et de faire de super truc

Marcel
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…