Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/02/2007, 17h52   #1
Membre du Club
 
Inscription : mars 2003
Messages : 170
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2003
Messages : 170
Points : 63
Points : 63
Envoyer un message via MSN à tazamorte
Par défaut [VBA-W]Retrouvez des objets dans son document

J'aimerai savoir comment peut on lister des objets (dans mon cas des feuilles de calcul excel) dans un document word

J'ai regardé dans ActiveDocument mais je ne vois pas qu'elle collection me donnera accès à ses feuilles (ne connaissant pas leur nom)

ce que je voudrais c'est avec une boucle for parcourir toutes mes feuilles

Merci d'avance
__________________
tazamorte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 18h04   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Code :
1
2
3
4
5
6
Sub CompterlesObjets()
For Each LObjet In ActiveDocument.Shapes
      MsgBox LObjet.Name
      i = i + 1
Next
End Sub
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 10h14   #3
Membre du Club
 
Inscription : mars 2003
Messages : 170
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2003
Messages : 170
Points : 63
Points : 63
Envoyer un message via MSN à tazamorte
Cela ne marche pas il semblerait que les feuilles de calculs qui sont des objets ne font pas partie de la collection Shape
__________________
tazamorte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 10h51   #4
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 775
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 775
Points : 16 855
Points : 16 855
Envoyer un message via Skype™ à bbil
essai la collection inlineShapes..
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 11h43   #5
Membre du Club
 
Inscription : mars 2003
Messages : 170
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2003
Messages : 170
Points : 63
Points : 63
Envoyer un message via MSN à tazamorte
Il semblerait que InlineShapes soit mieux car quand je fais
Citation:
ActiveDocument.InlineShapes.Count
il me sort le bon nombre d'objet mais le soucis c'est que
Citation:
ActiveDocument.InlineShapes
ne renvoit pas d'objet ni même
Citation:
ActiveDocument.InlineShapes.Item
qui renvoi des InlineShapes et donc pas de propriété Name
__________________
tazamorte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 11h56   #6
Membre du Club
 
Inscription : mars 2003
Messages : 170
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2003
Messages : 170
Points : 63
Points : 63
Envoyer un message via MSN à tazamorte
je me fous de les compter je souligner juste que Inlineshape pourrait etre la bonne collection car le count correspond au nombre d'objet mais non ce que je veux c recupérer les objets afin de naviguer de dedans et de récupérer des plages.

Je rappel que je suis dans Word avec des objets feuille de calcul insérer
Merci d'avance
__________________
tazamorte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 12h06   #7
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 775
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 775
Points : 16 855
Points : 16 855
Envoyer un message via Skype™ à bbil
tiens essai :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 
Sub BoucleTableauxExcel()
 Dim inS As InlineShape
 Dim wk
 For Each inS In ActiveDocument.InlineShapes
    If TypeName(inS.OLEFormat.Object) = "Workbook" Then
        Set wk = inS.OLEFormat.Object
        wk.sheets(1).Range("A1") = " Et la c'est bon ..?"
    End If
 
 
 
 Next
End Sub
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 12h22   #8
Membre du Club
 
Inscription : mars 2003
Messages : 170
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2003
Messages : 170
Points : 63
Points : 63
Envoyer un message via MSN à tazamorte
Je me sens bête mais cela ne marche pas non plus voici les messages d'erreur
et la fenetre de deboggage


__________________
tazamorte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 12h29   #9
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 775
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 775
Points : 16 855
Points : 16 855
Envoyer un message via Skype™ à bbil
c'est quoi la version de Word et d'excel... ?...

au lieu d'utiliser typeName.. essai d'utiliser

inS.OLEFormat.Object.classType =...
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 12h38   #10
Membre du Club
 
Inscription : mars 2003
Messages : 170
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2003
Messages : 170
Points : 63
Points : 63
Envoyer un message via MSN à tazamorte
j'ai une version de Word 2003 et un version de word 2007 sur la machine et il faudrait que le code soit compatible sur les 2 version mais la version finale sera WORD 2007 mais il y aura une période de transistion

Ne marche pas avec
Citation:
If inS.OLEFormat.Object.ClassType = "Excel.Sheet.8" Then
Set wk = inS.OLEFormat.Object
meme message d'erreur '430'

voici une capture des références que j'ai mise
__________________
tazamorte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 13h22   #11
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 775
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 775
Points : 16 855
Points : 16 855
Envoyer un message via Skype™ à bbil
bon à priori d'aprés un exemple de l'aide en ligne il faudrai activer l'objet...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
Sub BoucleTableauxExcel()
 Dim inS As InlineShape
 Dim wk
 For Each inS In ActiveDocument.InlineShapes
   If inS.OLEFormat.ProgID Like "Excel.Sheet*" Then
        inS.OLEFormat.Activate
        Set wk = inS.OLEFormat.Object
        wk.sheets(1).Range("A1") = " Et la c'est bon ..?" & Now
    End If
 Next
End Sub
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 14h47   #12
Membre du Club
 
Inscription : mars 2003
Messages : 170
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2003
Messages : 170
Points : 63
Points : 63
Envoyer un message via MSN à tazamorte
ouskel'n'or:
Ta méthode ne marche pas j'ai un message d'erreur sur
Citation:
LeTableau.ConvertToShape
ou il me dit que la méthode converttoshape a échoué sur l'objet inlineshape

Bravo BBIL

ta méthode marche
Citation:
Sub BoucleTableauxExcel()
Dim inS As InlineShape
Dim wk
For Each inS In ActiveDocument.InlineShapes
If inS.OLEFormat.ProgID Like "Excel.Sheet*" Then
inS.OLEFormat.Activate
Set wk = inS.OLEFormat.Object
wk.sheets(1).Range("A1") = " Et la c'est bon ..?" & Now
End If
Next
End Sub
je flague en résolu merci à tous les 2 bonne journée et a bientot
__________________
tazamorte est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h48.


 
 
 
 
Partenaires

Hébergement Web