[VBA]Copier une phrase de word dans excel

Copier une phrase de word dans excel [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 19-06-2006 à 17:58:26    

Bonjour,
 
Je voudrais prendre une partie d'un texte saisi dans un document word pour l'insérer dans un tableau excel. Seul problème, je n'arrive pas à sélectionner le morceau de texte désiré. En sachant que le texte peut changer (donc la fonction mid je ne pense pas qu'elle puisse m'aider), quel serait la solution à mon problème ?
 
Merci !

Reply

Marsh Posté le 19-06-2006 à 17:58:26   

Reply

Marsh Posté le 20-06-2006 à 08:12:05    

Personne n'a de réponse ? Est-ce possible ? Dites le moi que je ne m'acharne pas pour rien !
 
Allez je compte sur vous ;)

Reply

Marsh Posté le 20-06-2006 à 10:05:28    

Bon je viens de trouver une solution mais qui ne fonctionne pas sur mon PC. En cherchant dans le MSDN de Microsoft j'ai trouvé cette page  : http://msdn.microsoft.com/library/ [...] uments.asp
 
 
Problème : quand je copie le code dans le VBA, il n'accepte pas "rng.Select()"
 
Je ne sais pas si le problème vient de la, mais ma version de word et excel est la 2000. Pourquoi je ne peux pas utiliser cette procédure ?

Reply

Marsh Posté le 20-06-2006 à 15:32:35    

« il n'accepte pas "rng.Select()"  » ? Il lui fait les gros yeux ?
Donne le message d'erreur stp.
Mais je suppose qu'il s'agit d'un problème de version de Word/Excel
L'exemple proposé ressemble à du VB.NET
Sinon la syntaxe suivante marche chez moi sous Word 2003; elle sélectionne dans le texte du 11e caractère (indice 10) au 12e (cf. plus loin !) :
ThisDocument.Range (10, 12).Select
 
La syntaxe Word est ici vraiment pourie puisque l'indice 12 devrait être le 13e caractère et en fait ce paramètre correspond au premier caractère non sélectionné !

Reply

Marsh Posté le 20-06-2006 à 16:18:02    

Merci pour ta réponse.
 
voici mon code :
 
Private Sub bt_open_Click()
    Dim a As String
    Dim rng As Word.Range
    ThisDocument.Range(sentences(2), sentences(2)).Select
    MsgBox rng
     
    Set exl = CreateObject("excel.application" )
    a = InputBox("Saisir le nom du fichier" )
    exl.Visible = True
    exl.Workbooks.Open "c:\" & a & ".xls"
End Sub
 
quand je l'execute, j'ai une erreur 4218 (type d'argument incorrect)
 

Reply

Marsh Posté le 20-06-2006 à 16:22:13    

Sur quelle ligne ton erreur ... ?
edit: j'avais pas vu que dans ton exemple tu ne te sers pas de rng !
Il faut au moins faire : Set rng = ThisDocument.Range(sentences(2), sentences(2))
Du moins si la syntaxe de « ThisDocument.Range(sentences(2), sentences(2)) » existe réeellement...


Message édité par tegu le 20-06-2006 à 16:25:58
Reply

Marsh Posté le 20-06-2006 à 16:29:09    

Bon essaie plutôt ça : ThisDocument.Range(sentences(2).Start, sentences(2).End)

Reply

Marsh Posté le 20-06-2006 à 16:53:54    

sur la ligne thisdocument.ran ....

Reply

Marsh Posté le 20-06-2006 à 16:56:54    

ah ca marche déjà mieux :)
 
merci.

Reply

Marsh Posté le 26-06-2006 à 09:01:20    

Je vais encore vous embêter, mais les ordres ont changé et il faut désormais selectionner un morceau de texte en se basant sur le titre de paragraphe qui se trouve juste au dessus. Cette méthode permettra à l'entreprise de pouvoir réutiliser le code pour prendre d'autres phrases juste en changeant la constante qui contiendra le nom du titre.
 
Je fais appel à vous car je ne m'y connais pas beaucoup en VBA. J'avais pensé utiliser les fonctions mid et len mais je ne sais pas comment les exploiter.
 
Voici un exemple :
 
    Titre 1
texte du titre 1. bla bla bla.
 
    titre 2
texte à selectionner. bla bla bla
 
 
Comment récupérer "texte à selectionner" dans une variable ?

Reply

Marsh Posté le 26-06-2006 à 09:01:20   

Reply

Marsh Posté le 28-06-2006 à 11:09:52    

Juste pour info, j'ai contourné le problème en insérant des signets dans ma page Word. Je recupère toutes les phrases dans la zone, puis je coupe ces phrases avec la fonction "split" pour récupérer la 1ere phrase. Voici le code utilisé :
 
    test = ActiveDocument.Range(ActiveDocument.Bookmarks("sg1" ).Range.Start, ActiveDocument.Bookmarks("sg2" ).Range.End)
    phrase = Split(test, "." )
 
sg1 et sg2 représentent mes signets.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed