Copier une phrase de word dans excel [VBA] - VB/VBA/VBS - Programmation
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
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 ?
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é !
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)
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...
Marsh Posté le 20-06-2006 à 16:29:09
Bon essaie plutôt ça : ThisDocument.Range(sentences(2).Start, sentences(2).End)
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 ?
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.
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 !