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 22/06/2007, 20h39   #1
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
Par défaut Copier une selection de texte automatiquement

A partir d'une macro, je souhaiterais simuler la sélection du texte surligné, à la manière du Ctrl+sélection, puis copier l'ensemble des valeurs sélectionnées dans le presse papier.



Pouvez vous m'aider ?
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 21h15   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 351
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 351
Points : 29 264
Points : 29 264
J'ai pas très bien compris ce que tu voudrais faire.
Si tu nous explique ce que tu veux faire de la copie des données, on devrait pouvoir t'aider un peu.

Si j'ai correctement compris ce que tu veux n'est pas possible.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 22h36   #3
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
Quand j'utilise l'enregistreur de macro cela donne ca :

Code :
1
2
3
4
5
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Copy
    Selection.MoveRight Unit:=wdCharacter, Count:=11
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Copy
Le problème, c'est que je voudrais que ce soit l'ensemble des sélection qui soit copié et pas une par une
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 22h50   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 351
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 351
Points : 29 264
Points : 29 264
Si tu veux tout avoir en une fois, il suffit simplement de tout mettre dans une variable et tu peux ensuite faire ce que tu veux avec.

Mais ce que tu vas rencontrer comme problème, c'est avec les sélection que tu fais.
D'un texte à l'autre, il pourrait y avoir des différences.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2007, 13h16   #5
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
Une petite vidéo vaut mieux qu'une longue explication.

Cliquer sur l'image


Je voudrais réaliser la même chose avec une macro
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2007, 14h42   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 351
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 351
Points : 29 264
Points : 29 264
On peut le faire, en recherchant pour chaque cellule le texte qui suit le : et à chaque fois insérer le texte dans une variable.

Tu ne nous dis pas ce que tu veux faire avec ce texte.

Peut-être existe-t-il une autre solution ?
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2007, 18h48   #7
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
Oui, avec PowerPoint, la simulation serait plus aisée, j'ai eu fait ça pour décrire les procédures d'un logiciel de comptabilité publique lors d'une formation, c'est vraiment l'outil idéal...
En attendant que tu expliques ce que tu veux faire de ce texte
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2007, 20h14   #8
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
Avec une vidéo, on peut pas faire plus simple comme simulation ...

Les valeurs copiées seront collés dans un fichier excel

Citation:
Envoyé par Heureux-oli
Si tu veux tout avoir en une fois, il suffit simplement de tout mettre dans une variable et tu peux ensuite faire ce que tu veux avec.
soit, mais je suis nul en VBA. Pourriez vous m'aider
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2007, 09h37   #9
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
Quelle utilisation veux-tu faire de ton code ? La but de la manoeuvre ?
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2007, 11h12   #10
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
Le but de la manœuvre c'est de gagner du temps dans le traitement de mes fichiers que je reçois.

Avec une macro, je pourrais copier ces valeurs automatiquement sans à les sectionner une par une.

Ensuite je fais en simple coller dans mon fichier excel
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2007, 11h31   #11
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 351
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 351
Points : 29 264
Points : 29 264
Tes fichiers sont-ils toujours formaté de la même manière ?

Il est alors possible de faire tourner une maco pour que les données soient envoyées au bon endroit en Excel.

Si c'est une macro pour juste faire un copier

Pourquoi toutes ces questions de notre part ?

Pour qu'une macro puisse fonctionner et donner le résultat escompté, il faut pouvoir repérer le texte à copier, si les documents ne sont pas toujours les mêmes, il ne sera pas possible de dire à la Macro ce qu'elle doit copier.

Si les cellules du tableau sont toujours au même endroit, on peut dire à Word de regarder dans ces cellules.
Si les cellules contiennent toujours le même mot, on peut aussi faire une recherche sur un mot.
Si tout change à chaque fois, c'est mal parti, très mal parti.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2007, 17h13   #12
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
Oui, les fichiers word sont tous formatés de la même manière. Le tableau comme présenté en début du post.

Oui, les cellules du tableau sont toujours au même endroit

non, les cellules ne contiennent jamais le même mot.
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2007, 18h21   #13
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 351
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 351
Points : 29 264
Points : 29 264
Les cellules ne contiennent jamais deux fois de suite "Nom :" ; "Prénom : "
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2007, 18h39   #14
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
non
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2007, 18h54   #15
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 351
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 351
Points : 29 264
Points : 29 264
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
Public Sub testolivier()
Dim objTable As Table
Dim xlApp As Excel.Application
Dim xlSheet As Excel.Worksheet
Dim xlBook As Excel.Workbook
Dim e As String
Dim a As String
Dim b As String
Dim c As String
Dim d As String
 
Set objTable = ActiveDocument.Tables(1)
a = Mid(objTable.Cell(1, 1), 7, 25)
b = Mid(objTable.Cell(1, 2), 10, 25)
c = Mid(objTable.Cell(1, 3), 7, 25)
d = Mid(objTable.Cell(2, 1), 7, 25)
e = Mid(objTable.Cell(2, 2), 11, 25)
 
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Add
    Set xlSheet = xlBook.Worksheets.Add
    xlSheet.Cells(1, 1) = a
    xlSheet.Cells(1, 2) = b
    xlSheet.Cells(1, 3) = c
    xlSheet.Cells(1, 4) = d
    xlSheet.Cells(1, 5) = e
 
xlApp.Visible = True
End sub
Tu dois ajouter les références Excel dans ton projet.
Mais si les cellules des tableaux ne contiennent jamais des données formatées, c'est perdu.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2007, 20h23   #16
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
Merci de m'avoir proposer un code
Mais il y a des problèmes

1 - j'ai du effacer des lignes du code car j'avais des erreurs

'Dim xlApp As Excel.Application
'Dim xlSheet As Excel.Worksheet
'Dim xlBook As Excel.Workbook


2 - Il y a des symboles rajoutés lors de la copie dans excel


3 - Est il possible d'avoir un message dans Excel du type "Sélectionner la cellule" afin de choisir l'emplacement pour la copie.
En sachant que mon fichier Excel serait déjà ouvert.
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2007, 23h33   #17
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 351
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 351
Points : 29 264
Points : 29 264
Citation:
Envoyé par Heureux-oli

Tu dois ajouter les références Excel dans ton projet.
Mais si les cellules des tableaux ne contiennent jamais des données formatées, c'est perdu.
Copier le code, c'est bien mais il ne fallait pas oublier le reste.

Le fait de déclarer les références Excel élimine les messages d'erreurs.

Tu n'avais pas demandé de coller dans des lignes différentes.

Eliminer les symboles, on peut, il faut modifier le code.
Le code c'est un exemple que je te donne.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 19h02   #18
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
Citation:
Envoyé par Heureux-oli
Le fait de déclarer les références Excel élimine les messages d'erreurs.
Je suis complétement nul en VBA. Comment je fais ca ?

Et pour un choix de l'endroit où coller les valeur ?

Par avance merci
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 21h23   #19
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 351
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 351
Points : 29 264
Points : 29 264
Code vb :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Public Sub testolivier()
Dim objTable As Table
'Déclaration d'un objet table en Word
Dim xlApp As Excel.Application
'Déclaration d'un objet qui sera une application Excel
'Utile pour manipuler une feuille Excel.
Dim xlSheet As Excel.Worksheet
'Même chose mais pour une feuille de calcul
Dim xlBook As Excel.Workbook
Dim e As String
Dim a As String
Dim b As String
Dim c As String
Dim d As String
'Tout ce qui commence par Dim, est une déclaration

 
Set objTable = ActiveDocument.Tables(1)
'Affectation d'une table à l'objet objTable
'L objet table sera rempli avec le première table du document (1)

a = Mid(objTable.Cell(1, 1), 7, 25)
'Travail du texte à l'aide de certaines fonctions VBA
'Mid, va extraire une valeur à l'intérieur d'une chaîne de texte
'La chaîne de texte provient de la première cellule du tableau
' objTable.cell() fait référence à une cellule
'on commence l'extraction au caractère 7
'on en prend 25
'le texte extrait est affecté à la chaîne de caractère a
b = Mid(objTable.Cell(1, 2), 10, 25)
c = Mid(objTable.Cell(1, 3), 7, 25)
d = Mid(objTable.Cell(2, 1), 7, 25)
e = Mid(objTable.Cell(2, 2), 11, 25)
 
    Set xlApp = CreateObject("Excel.Application")
'Création de l'objet Excel qui est une application
    Set xlBook = xlApp.Workbooks.Add
'Ajout d'un classeur à l'objet Excel
    Set xlSheet = xlBook.Worksheets.Add
'Ajout d'une feuille au classeur
    xlSheet.Cells(1, 1) = a
    xlSheet.Cells(1, 2) = b
    xlSheet.Cells(1, 3) = c
    xlSheet.Cells(1, 4) = d
    xlSheet.Cells(1, 5) = e
'On va coller les valeurs obtenues dans les cellules
 
xlApp.Visible = True
'On rend Excel Visible
End sub
Pour ajouter la référence Excel au projet, c'est dans Outils Références et dans la liste, il y a Excel.

Pour ne plus avoir les caractères parasites, il faut mesurer la longueur du texte avant extraction.
la mesure se fait avec la fonction Len.
Pour ajouter les lignes les unes derrieres les autres, une astuce, tu ouvre l'enregistreur de macro excel et tu te déplaces à la dernière cellule.
Tu regardes comment Excel à fait.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 22h52   #20
Invité de passage
 
Inscription : juin 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 39
Points : 4
Points : 4
Pour eliminer les deux derniers carateres, J'ai modifié le code comme cela :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Public Sub testolivier()
Dim objTable As Table
'Déclaration d'un objet table en Word
Dim xlApp As Excel.Application
'Déclaration d'un objet qui sera une application Excel
'Utile pour manipuler une feuille Excel.
Dim xlSheet As Excel.Worksheet
'Même chose mais pour une feuille de calcul
Dim xlBook As Excel.Workbook
Dim e As String
Dim a As String
Dim b As String
Dim c As String
Dim d As String
'Tout ce qui commence par Dim, est une déclaration
Set objTable = ActiveDocument.Tables(1)
'Affectation d'une table à l'objet objTable
'L objet table sera rempli avec le première table du document (1)
 
a1 = Len(Mid(objTable.Cell(1, 1), 7, 25)) - 2
a2 = Mid(objTable.Cell(1, 1), 7, a1)
 
b1 = Len(Mid(objTable.Cell(1, 2), 10, 25)) - 2
b2 = Mid(objTable.Cell(1, 2), 10, b1)
 
c1 = Len(Mid(objTable.Cell(1, 3), 7, 25)) - 2
c2 = Mid(objTable.Cell(1, 3), 7, c1)
 
d1 = Len(Mid(objTable.Cell(2, 1), 7, 25)) - 2
d2 = Mid(objTable.Cell(2, 1), 7, d1)
 
e1 = Len(Mid(objTable.Cell(2, 2), 11, 25)) - 2
e2 = Mid(objTable.Cell(2, 2), 11, e1)
 
 
    Set xlApp = CreateObject("Excel.Application")
'Création de l'objet Excel qui est une application
    Set xlBook = xlApp.Workbooks.Add
'Ajout d'un classeur à l'objet Excel
    Set xlSheet = xlBook.Worksheets.Add
'Ajout d'une feuille au classeur
    xlSheet.Cells(1, 1) = a2
    xlSheet.Cells(1, 2) = b2
    xlSheet.Cells(1, 3) = c2
    xlSheet.Cells(1, 4) = d2
    xlSheet.Cells(1, 5) = e2
'On va coller les valeurs obtenues dans les cellules
 
xlApp.Visible = True
'On rend Excel Visible
End Sub
Je ne veux pas coller les lignes les unes après les autres.
Je voudrais pouvoir les coller à un endroit à définir via un message "sélectionner la cellule de destination".
Mais je ne sais pas comment faire ca
didier.aucun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h17.


 
 
 
 
Partenaires

Hébergement Web