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 18/07/2006, 16h15   #1
Membre du Club
 
Avatar de Sachiel31
 
Inscription : juillet 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 121
Points : 45
Points : 45
Par défaut [Débutante] - Document Word avec des tableaux

Bonjour,

Je développe un programme en C++ dans lequel je dois exploiter un document Word. Par exploiter, j'entend le parcourir et le compléter.
Ce document Word contient 3 tableaux.

Ce que je dois faire pour chaque tableau :
  1. le parcourir ligne par ligne
  2. trouver la ligne que je veux compléter (en comparant le contenu de la 1ere cellule)
  3. compléter la ligne (soit remplir la dernière cellule)
  4. et ainsi de suite jusqu'à la fin de mon tableau

Pour cela, on m'a conseiller de faire une appli VBA qui serait appelée par mon programme C++.

Problème : je n'ai jamais fait de VBA


Je demande donc votre aide pour me donner des pistes vers lesquelles partir.

P.S. : Je dispose de Visual Basic 6 pour développer
__________________

(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.
Sachiel31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 09h10   #2
Membre du Club
 
Avatar de Sachiel31
 
Inscription : juillet 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 121
Points : 45
Points : 45
Il n'y a vraiment personne qui peut m'aider
__________________

(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.
Sachiel31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 09h43   #3
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
tiens un début, rajoute un module dans ton document..(voir arborescence à gauche..)

et code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 
Sub test()
 Dim oT As Table 'définition d'un objet tableau...
 Dim i As Integer 'index ligne en cours
 Dim st As String  
 Set oT = ActiveDocument.Tables(1) ' Affecte à oT le premier tableau du document actif
 
 For i = 0 To oT.Rows.Count ' boucle dans les lignes du tableau
  st = oT.Cell(i, 1).Range ' le contenu d'une cellule se termine par un retour chariot suivit d'une tabulation, j'utilise la variable st, pour "nettoyage"
  st = Left(st, Len(st) - 2) 'Supprime les 2 derniers caractére (tabulation )
  If st = "A_MODIFIER" Then 'on est sur la ligne à modifier
    oT.Cell(i, 3).Range.Text = "On MODIFIE"
  End If
 Next i 'Fin boucle ligne
End Sub
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 11h16   #4
Membre du Club
 
Avatar de Sachiel31
 
Inscription : juillet 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 121
Points : 45
Points : 45
Merci bbil

J'ai une tite question : à quoi cela correspond exactement?
__________________

(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.
Sachiel31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 11h29   #5
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
ce code permet de parcourir le premier tableau du document word actif, et à chaque fois qu'il trouve le texte "A_MODIFIER" dans 1° colonne, il met "on Modifie" dans 3° colonne....

PS: je rajoute un peu de commentaires dans le code...
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 11h36   #6
Membre du Club
 
Avatar de Sachiel31
 
Inscription : juillet 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 121
Points : 45
Points : 45
Oki merci ca va bien m'aider

Par contre j'ai une question bête :
comment on fait un appel de fonction dans le main???

Je sais que je pose des questions de base mais comme je débute je rame un peu.

Rolala, j'ai honte
__________________

(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.
Sachiel31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 11h40   #7
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
il n'y as pas à propement parler de fonciton main en VBA.. , pour l'appel d'un procédure (sub) plusieurs syntaxe:

ou
....
sinon pour tes test à toi... tu peu te placer dans le code de la procédure puis F5...


PS: je suis pas sur d'avoir compris la question...
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 12h11   #8
Membre du Club
 
Avatar de Sachiel31
 
Inscription : juillet 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 121
Points : 45
Points : 45
Tu as bien répondu à ma question, je te rassure.

Le type "Table" correspond à quoi?
Comme c'est un type que je crée, il faut que je le déclare, non?
(instruction Type...EndType)
__________________

(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.
Sachiel31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 12h15   #9
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
le code c'est du VBA Word... pour le type table voir


Citation:
Envoyé par Aide en ligne VBA

Représente un tableau donné. L'objet Table est membre de la collection Tables. Cette collection contient tous les tableaux de la sélection, de la plage ou du document spécifiés.
Utilisation de l'objet Table

bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 12h26   #10
Membre du Club
 
Avatar de Sachiel31
 
Inscription : juillet 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 121
Points : 45
Points : 45
Je demandais ça parceque quand je compile, j'ai le message d'erreur suivant :
Citation:
Erreur de compilation : Type définit par l'utilisateur non défini
__________________

(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.
Sachiel31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 12h29   #11
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
rassure moi
? tu l'as écrit ou ton code ...? pas dans le visual basic 6 de ton PS..? il faut l'écrire dans un module VBA , (editeur VBA acessible par ALT-F11 depuis word..) ..?
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 12h59   #12
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
Hello,
Citation:
Envoyé par Sachiel31
Pour cela, on m'a conseiller de faire une appli VBA qui serait appelée par mon programme C++.
Juste pour être clair... Tu veux un .exe ou tu veux utiliser des macros insérées dans le document word pour compléter tes données ?
Pour que la macro démarre à l'ouverture du document word, tu peux mettre le code suivant dans un module standard du projet VBA

Code :
1
2
3
4
5
6
7
Sub AutoOpen()
Main
End Sub
 
Public Sub Main()
LaMacro
End Sub
A toutes fins utiles
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 13h54   #13
Membre du Club
 
Avatar de Sachiel31
 
Inscription : juillet 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 121
Points : 45
Points : 45
bbil :
Mon code je l'écris dans Visual Basic (c'est ce qu'on m'avait dit de faire).


ouskel'n'or :
Je veux un .exe que j'exécute dans mon programme C++. Je veux pas ouvrir word. Juste que mon appli VB s'exécute en "tâche de fond" et fasse le traitement voulu sur mon document word (sans que l'utilisateur ouvre le doc).
La seule chose que l'utilisateur voit, c'est l'interface de mon programme C++. C'est tout.
__________________

(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.
Sachiel31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 13h56   #14
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
Alors c'est pas du VBA mais du VB. Tu ne peux pas transformer des macros en exécutable.
Tu as VB(x) ?

......................................................(\ _ /)
......................................................(='.'=)
......................................................(")-(")
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 14h02   #15
Membre du Club
 
Avatar de Sachiel31
 
Inscription : juillet 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 121
Points : 45
Points : 45
Le seul outil que j'ai pour programmer en VB c'est Microsoft Visual basic 6.


P.S.: merci pour lapinou
__________________

(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.
Sachiel31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 14h10   #16
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
la je vois pas l'utilité de passer par VB6.. pour effectuer ton action ... soit tu "attaque" directement le document Word en OLE depuis C++ sinon tu crée une macro VBA appellé par le C++ (pas un .exe)


bon en VB6 pour "attaquer" un document word voit :
Comment ouvrir Word ou un fichier Word avec OLE ?
ensuite pour le code que je t'ai mis plus haut remplace activeDocument par docWord ... et table par WORD.Table..

PS: Dis nous la solution retenue ... je déplacerai le post vers le forum ad-hoc s'il y as lieu...
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 14h11   #17
Membre du Club
 
Avatar de Sachiel31
 
Inscription : juillet 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 121
Points : 45
Points : 45
La solution la moins complexe c'est laquelle?
__________________

(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.
Sachiel31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 14h43   #18
Membre du Club
 
Avatar de Sachiel31
 
Inscription : juillet 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 121
Points : 45
Points : 45
Je pense que je vais opter pour la solution de "l'attaque" du document word directement (pas de macro).

Mais va falloir m'expliquer les grandes lignes sur la démarche à suivre, s'il vous plaît.
__________________

(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.
Sachiel31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 14h56   #19
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
ben en C++ je vais avoir du mal pour t'aider... tu as des cours ... sur le site .. et quelque chose qui ressemble..

http://lfe.developpez.com/Word/#L7.1

il sagit du parcours des signets d'un document word... reste plus qu'as transposer pour parcourir la collection Tables..
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 15h17   #20
Membre du Club
 
Avatar de Sachiel31
 
Inscription : juillet 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 121
Points : 45
Points : 45
Merci pour le lien, je pense que ca va bien m'aider.

Coté C++ c'est bon je vais gérer ça

Merci pour votre aide
__________________

(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant.
Sachiel31 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 04h55.


 
 
 
 
Partenaires

Hébergement Web