[VBA] Lien Excel-Word +
Résolu/Fermé
Clem
-
3 août 2012 à 09:05
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 8 nov. 2012 à 12:49
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 8 nov. 2012 à 12:49
A voir également:
- [VBA] Lien Excel-Word +
- Word et excel gratuit - Guide
- Lien url - Guide
- Liste déroulante excel - Guide
- Espace insécable word - Guide
- Supprimer une page word - Guide
9 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
3 août 2012 à 09:18
3 août 2012 à 09:18
Bonjour Clem,
Pas évident tout cela. Les termes utilisés dans ton sujet ne sont pas super explicite, mais c'est normal, on a toujours du mal à exprimer son problème de façon claire et simple...
Cependant, pas de souci, on va essayer.
Tu veux :
1- dissocier, via VBA, une chaine de type "String" séparée par un espace.
Plein de solutions :
==> avec Split :
==> avec Left, Right, Len et Instr
Left = Gauche, Right = SDroite et Instr(maVar, " ") indique l'emplacement d'un éventuel espace dans maVar.
2- Comment activer une zone de texte sous word en utilisant une macro sur un fichier excel?
Qu'entends tu exactement par "activer"?
parce qu'en fait tu dis :
à l'aide de zones de textes, et que j'aimerais afficher
afficher? activer? ou? quand? comment? pourquoi?
Pas évident tout cela. Les termes utilisés dans ton sujet ne sont pas super explicite, mais c'est normal, on a toujours du mal à exprimer son problème de façon claire et simple...
Cependant, pas de souci, on va essayer.
Tu veux :
1- dissocier, via VBA, une chaine de type "String" séparée par un espace.
Plein de solutions :
==> avec Split :
Dim maVar As String, Numero, NomDoc maVar = "NuméroDeZone NomDuDocumentWord" Numero = Split(maVar, " ")(0) NomDoc = Split(maVar, " ")(1)
==> avec Left, Right, Len et Instr
Dim maVar As String, Numero, NomDoc maVar = "NuméroDeZone NomDuDocumentWord" Numero = Left(maVar, InStr(maVar, " ") - 1) NomDoc = Right(maVar, Len(maVar) - InStr(maVar, " "))
Left = Gauche, Right = SDroite et Instr(maVar, " ") indique l'emplacement d'un éventuel espace dans maVar.
2- Comment activer une zone de texte sous word en utilisant une macro sur un fichier excel?
Qu'entends tu exactement par "activer"?
parce qu'en fait tu dis :
à l'aide de zones de textes, et que j'aimerais afficher
afficher? activer? ou? quand? comment? pourquoi?
Bonjour pijaku!
Tout d'abord merci de me consacrer de ton temps :)
Ta technique du split est tout bonnement magique!
J'avoue que je ne suis pas très clair... En fait, je souhaite afficher la zone correspondant à "Numero" de la question précédente à l'écran, donc je pensais qu'en la sélectionnant le fichier word serait ouvert directement sur la page où elle se situe... Histoire de faciliter la recherche et ne pas devoir parcourir tout le document à la recherche de cette zone de texte.
Cordialement,
Clem
Tout d'abord merci de me consacrer de ton temps :)
Ta technique du split est tout bonnement magique!
J'avoue que je ne suis pas très clair... En fait, je souhaite afficher la zone correspondant à "Numero" de la question précédente à l'écran, donc je pensais qu'en la sélectionnant le fichier word serait ouvert directement sur la page où elle se situe... Histoire de faciliter la recherche et ne pas devoir parcourir tout le document à la recherche de cette zone de texte.
Cordialement,
Clem
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
3 août 2012 à 09:44
3 août 2012 à 09:44
En clair, tu veux ouvrir le document Word à la page ou figure ta zone de texte?
ça me semble difficile s'il n'y a pas d'ancre de définit dans ton doc word.
On pourrait peut être :
- ouvrir ton doc word,
- copier la bonne zone de texte,
- la coller dans une autre feuille de ton classeur excel.
Tu dis, on peux essayer les deux manières...
ça me semble difficile s'il n'y a pas d'ancre de définit dans ton doc word.
On pourrait peut être :
- ouvrir ton doc word,
- copier la bonne zone de texte,
- la coller dans une autre feuille de ton classeur excel.
Tu dis, on peux essayer les deux manières...
En fait j'ai un énorme schéma assez complexe (qui tient plus du dessin que du schéma d'ailleurs) qui est un plan de mon usine. Donc dans mon document word, il n'y a que des objets, et très peu de texte. Les zones de texte que j'ai rajouté ne servent qu'a "délimiter" les endroits interessants, c'est pour celà que je voulais pouvoir les afficher.
Donc les importer sous excel n'apporterait rien a mon problème, malheureusement d'ailleurs si tu dis qu'il est plus facile de faire celà, étant donné que c'est dans l'ensemble du plan que la zone est interessante pour s'y retrouver...
Désolé d'être si embêtant
Donc les importer sous excel n'apporterait rien a mon problème, malheureusement d'ailleurs si tu dis qu'il est plus facile de faire celà, étant donné que c'est dans l'ensemble du plan que la zone est interessante pour s'y retrouver...
Désolé d'être si embêtant
Alors j'ai certaines pages (mais très peu et celà dépend du document word) sur lesquelles il n'y en a pas, d'autres ou il y en a une dizaine... J'avais dans l'optique de créer un objet ActiveX pour leur donner un nom précis genre "zone1" afin de les manipuler sous VBA. Je sais pas si ca fonctionne
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
3 août 2012 à 11:46
3 août 2012 à 11:46
je regarde la meilleure solution avant que tu ne modifies ton doc word.
Pour moi ce devrait être des "bookmark", mais je préfères vérifier...
Bouges pas je reviens
Pour moi ce devrait être des "bookmark", mais je préfères vérifier...
Bouges pas je reviens
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
3 août 2012 à 12:17
3 août 2012 à 12:17
A FAIRE :
DANS TON DOC WORD :
Au niveau de toutes tes zones de texte, en fait, à chaque endroit ou tu désires accéder dans ton document word :
- clic gauche pour placer le curseur à l'endroit exact souhaité
- Insertion/Signet
- Nom du signet : mettre un nom explicite qui te permettra de savoir à quel endroit tu te trouves, juste en regardant ce nom...
Fait cette opération pour tous les endroits auxquels tu souhaites accéder...
DANS LE CLASSEUR EXCEL :
- ALT+F11, Outils/Références, cocher la référence : Microsoft word xx.x 0bject Library
xx.x dépends de ta version d'Excel. pour 2003 : Microsoft word 11.0 0bject Library
Je reviens dans 5 minutes avec le code VBA à placer dans ton classeur Excel.
DANS TON DOC WORD :
Au niveau de toutes tes zones de texte, en fait, à chaque endroit ou tu désires accéder dans ton document word :
- clic gauche pour placer le curseur à l'endroit exact souhaité
- Insertion/Signet
- Nom du signet : mettre un nom explicite qui te permettra de savoir à quel endroit tu te trouves, juste en regardant ce nom...
Fait cette opération pour tous les endroits auxquels tu souhaites accéder...
DANS LE CLASSEUR EXCEL :
- ALT+F11, Outils/Références, cocher la référence : Microsoft word xx.x 0bject Library
xx.x dépends de ta version d'Excel. pour 2003 : Microsoft word 11.0 0bject Library
Je reviens dans 5 minutes avec le code VBA à placer dans ton classeur Excel.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
Modifié par pijaku le 3/08/2012 à 12:35
Modifié par pijaku le 3/08/2012 à 12:35
Le code, à insérer dans un module du classeur excel :
AVANT DE LANCER LA PROCEDURE, BIEN LIRE LES COMMENTAIRES!!!
Cordialement,
Franck P
AVANT DE LANCER LA PROCEDURE, BIEN LIRE LES COMMENTAIRES!!!
Option Explicit Sub OuvreWordALaBonnePage() 'http://excel.developpez.com/faq/?page=Word '------------- !!! IMPORTANT !!! ---------------- ' '-- nécéssite d'activer la reference : ' 'Microsoft word xx.x 0bject Library -- ' '-- Sous VBE : Outils/Références cocher : ' 'Microsoft word xx.x 0bject Library ' '------------------------------------------------ Dim Appli As Word.Application, WordDoc As Word.Document, BookM As Variant Dim Cpt As Integer, NomZone As String, Chemin As String, NomDoc As String Dim SelectZone As Range, Wbk As Workbook '----- partie sous le classeur Excel ------- Set Wbk = ThisWorkbook Chemin = ThisWorkbook.Path 'Valable si le fichier word est dans le même répertoire 'que le classeur excel 'à remplacer par ex : Chemin = "C:\User\Mes documents" 'Chemin est le chemin d'accès complet au doc word 'sans "\" à la fin ET sans le nom du document!! 'ça c'est pas bon : "C:\User\Mes documents\" 'ça non plus : "C:\User\Mes documents\Doc1.doc" NomDoc = "Doc1.doc" '------------A ADAPTER : le nom de ton doc word 'Si dans le classeur, il existe une feuille appelée "NomZones" Alors If FeuilleExiste(ThisWorkbook, "NomZones") Then 'On supprime tout ce qu'elle contient With Sheets("NomZones") .Activate .Cells.Clear End With '---------------------- Si elle n'existe pas Else '------------------ on la créé Sheets.Add ActiveSheet.Name = "NomZones" End If '----- partie ouverture ou pas du doc word ------ On Error Resume Next Set Appli = GetObject(, "Word.Application") Set WordDoc = Appli.Documents(Chemin & "\" & NomDoc) On Error GoTo 0 's'il est fermé, on l'ouvre If WordDoc Is Nothing Then Set Appli = CreateObject("Word.Application") Set WordDoc = Appli.Documents.Open(Chemin & "\" & NomDoc) Appli.Visible = True End If WordDoc.Activate 'on en fait la liste des signets en Feuille "NomZones" du classeur Excel For Each BookM In Word.ActiveWindow.Document.Bookmarks Cpt = Cpt + 1 Sheets("NomZones").Cells(Cpt, 1) = BookM.Name Next BookM 'On demande à choisir en sélectionnant la bonne cellule Do Set SelectZone = Application.InputBox("Sélectionnez une zone de texte !", "Sélection de cellules", Type:=8) Loop While SelectZone.Value = "" NomZone = SelectZone.Value WordDoc.Activate Cpt = 0 For Each BookM In Word.ActiveWindow.Document.Bookmarks Cpt = Cpt + 1 If BookM.Name = NomZone Then Exit For Next BookM BookM.Select End Sub Function FeuilleExiste(wk As Workbook, stFeuille) As Boolean On Error Resume Next FeuilleExiste = Not (wk.Sheets(stFeuille) Is Nothing) End Function
Cordialement,
Franck P
Je ne comprends pas, malgré le Appli.Visible = True et le WordDoc.Activate, il ouvre bien le document word mais le laisse en arrière plan, donc la ligne:
For Each BookM In Word.ActiveWindow.Document.Bookmarks
crash :(
For Each BookM In Word.ActiveWindow.Document.Bookmarks
crash :(
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
3 août 2012 à 13:42
3 août 2012 à 13:42
Moi aussi, il est en arrière plan, toujours (comprends pas non plus, mais bon). Par contre, ça ne "crashe" pas chez moi...
Essaye déjà d'enregistrer ton classeur et ton doc, de tout fermer et de rouvrir... On ne sait jamais.
Ensuite, si cela ne fonctionne toujours pas, remplace :
par :
Les deux fois bien sur...
Essaye déjà d'enregistrer ton classeur et ton doc, de tout fermer et de rouvrir... On ne sait jamais.
Ensuite, si cela ne fonctionne toujours pas, remplace :
For Each BookM In Word.ActiveWindow.Document.Bookmarks Cpt = Cpt + 1 Sheets("NomZones").Cells(Cpt, 1) = BookM.Name Next BookM
par :
With Word.ActiveWindow For Each BookM In .Document.Bookmarks Cpt = Cpt + 1 Sheets("NomZones").Cells(Cpt, 1) = BookM.Name Next BookM End With
Les deux fois bien sur...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
Modifié par pijaku le 3/08/2012 à 13:56
Modifié par pijaku le 3/08/2012 à 13:56
Qu'elle est ta version d'office?
Ouvres tu au préalable le document word? ou laisses tu tout faire à la macro?
Ouvres tu au préalable le document word? ou laisses tu tout faire à la macro?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
3 août 2012 à 14:21
3 août 2012 à 14:21
erreur OLE sur qu'elle ligne?
seth201
Messages postés
2
Date d'inscription
mercredi 31 octobre 2012
Statut
Membre
Dernière intervention
8 novembre 2012
31 oct. 2012 à 22:40
31 oct. 2012 à 22:40
Bonsoir,
j'ai un petit souci avec excel et word et il me semble que ça ressemble un peu au problème de Clem. Cependant dans mon cas j'ai des graphiques sur Excel sur ces dernier j'ai insérer des zones de textes (pour expliquer certains points remarquables de mes courbes). Le problème c'est que dans mon doc word quand je copie le graph à partir d'excel et que je le colle (de n'importe qu'elle manière) le graph dans son ensemble est copié à part certaines zones de textes.
j'ai un petit souci avec excel et word et il me semble que ça ressemble un peu au problème de Clem. Cependant dans mon cas j'ai des graphiques sur Excel sur ces dernier j'ai insérer des zones de textes (pour expliquer certains points remarquables de mes courbes). Le problème c'est que dans mon doc word quand je copie le graph à partir d'excel et que je le colle (de n'importe qu'elle manière) le graph dans son ensemble est copié à part certaines zones de textes.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
8 nov. 2012 à 09:10
8 nov. 2012 à 09:10
Bonjour,
Un peu en retard, désolé...
Alors il faut distinguer les zones de texte inscrite à l'intérieur de ton graph qui elles font parties intégrantes de ton objet graphiques et les zones de texte placées à l'extérieur (ou à cheval entre l'intérieur et l'extérieur) de ton graph qui elles ne font pas parties de ton objet graphique.
Si tu souhaites copier tous tes objets, y compris les zones de texte, il te faut au préalable les sélectionner. Pour cela, reste appuyé sur Ctrl et, avec ta souris, sélectionne chacun des objets (graph et zones de texte etc...) que tu souhaites copier/coller...
Un peu en retard, désolé...
Alors il faut distinguer les zones de texte inscrite à l'intérieur de ton graph qui elles font parties intégrantes de ton objet graphiques et les zones de texte placées à l'extérieur (ou à cheval entre l'intérieur et l'extérieur) de ton graph qui elles ne font pas parties de ton objet graphique.
Si tu souhaites copier tous tes objets, y compris les zones de texte, il te faut au préalable les sélectionner. Pour cela, reste appuyé sur Ctrl et, avec ta souris, sélectionne chacun des objets (graph et zones de texte etc...) que tu souhaites copier/coller...
seth201
Messages postés
2
Date d'inscription
mercredi 31 octobre 2012
Statut
Membre
Dernière intervention
8 novembre 2012
8 nov. 2012 à 12:37
8 nov. 2012 à 12:37
Merci pour la réponse ça me facilite le travail.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
Modifié par pijaku le 8/11/2012 à 12:49
Modifié par pijaku le 8/11/2012 à 12:49
de rien, n'hésitez pas.
a+
a+
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
3 août 2012 à 11:41
3 août 2012 à 11:41
J'ai un souci sur la sélection.
As tu une zone de texte par page? plusieurs sur une même page? des pages sans zone de texte?
Y a t'il un signe distinctif de ces zones de texte? exemple en page 18 la zone de texte comporte le texte : p18 et ceci pour toutes tes zones de texte???
As tu une zone de texte par page? plusieurs sur une même page? des pages sans zone de texte?
Y a t'il un signe distinctif de ces zones de texte? exemple en page 18 la zone de texte comporte le texte : p18 et ceci pour toutes tes zones de texte???