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 29/04/2006, 23h05   #1
Invité régulier
 
Inscription : janvier 2005
Messages : 42
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 42
Points : 9
Points : 9
Par défaut [VBA-W]publipostage word

Bonjour,
Je cherche à faire une lettre type qui utilise une requête imbriquée.
Pour chaque entreprise la lettre doit reprendre la liste des personnes stagiaires dans celle-ci en fonction d'un critère de date.
Je sais faire la requête mais pas l'intégrer dans Word 2003.
Est-ce possible ?
Je vous remercie de vos réponses, bien que ce ne soit pas tout à fait l'endroit où poster une pareil question.
nagdrir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 09h01   #2
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
VB ? VBA ? Si tu peux préciser... Quant à ta requête, que fait-elle ?
A tout'
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 09h54   #3
Invité régulier
 
Inscription : janvier 2005
Messages : 42
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 42
Points : 9
Points : 9
Je souhaite le faire en vba.
Ma requete, elle liste toutes les entreprises qui ont un stagiaire dans leurs murs dans un premier temps et liste les noms et prénoms de chaque stagiaire.
Le critère de tri est l'ordre alphabétique des noms des entreprises.
Donc l'entreprise 1 puis stagiaire 1
entreprise 2 puis stagiaire 2 et stagiaire 3 etc.
Le problème c'est que le nombre de stagiares n'est pas fixe, il faudrait faire une itération j'imagine. Mais je ne vois pas du tout comment faire.
Merci de la réponse.
nagdrir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 09h56   #4
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
tu nous as toujours pas dis d'ou ta requête tiré ces données ?
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 09h59   #5
Invité régulier
 
Inscription : janvier 2005
Messages : 42
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 42
Points : 9
Points : 9
La requete est dans un fichier access.
nagdrir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 10h03   #6
Invité régulier
 
Inscription : janvier 2005
Messages : 42
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 42
Points : 9
Points : 9
nom de la base de données : stagiaire
nom de la requete : ets_stagiaire
liste des champs :
ets_nom
ets_adresse
ets_cp
ets_ville
eleve_nom
eleve_prenom
nagdrir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 10h06   #7
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 675
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 675
Points : 7 645
Points : 7 645
On va devoir te tirer les vers du nez jusqu'au dernier mot???

Quelle version ta base Access?

Si c'est 97 tu devras utiliser DAO, après, c'est ADO.

fais des recherches sur l'un de ces mots clés dans le forum et dans le site (www.developpez.com).

Jacma a écrit un tuto à ce sujet, tu devrais le trouver.
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 10h08   #8
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 675
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 675
Points : 7 645
Points : 7 645
Tiens, je suis bon prince, voici le lien:

http://jacma.developpez.com/
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 10h11   #9
Invité régulier
 
Inscription : janvier 2005
Messages : 42
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 42
Points : 9
Points : 9
Je suis désolé, mais je ne savais pas qu'il fallait ces informations :
access 2003
word 2003
vba

Merci pour le lien, je vais voir.
nagdrir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 10h58   #10
Invité régulier
 
Inscription : janvier 2005
Messages : 42
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 42
Points : 9
Points : 9
J'ai regardé les tutoriaux qui sont très bien faits, mais j'ai toujours une petite question.
Access je connais, la programmation de word non. J'ai compris les principes de la programmation vb.
Maintenant, pour ma lettre type, je dois passer par une macro qui charge les données dans des recordsets hiérarchiques.
Ensuite l'ajout des adresses des entreprises je ne vois pas trop comment faire non plus que sur l'ajout des noms des stagiaires.
Une fois ce problème réglé, ce sera fait pour une lettre, mais comment itérer pour toutes les lettres.
Je me rends bien compte que ce sont des questions qui vous semblent ridicules mais je ne vois pas bien comment les solutionner.
Merci de votre patience.
nagdrir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 11h48   #11
Inactif
 
Avatar de jmfmarques
 
Inscription : décembre 2005
Messages : 3 784
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 3 784
Points : 4 125
Points : 4 125
Citation:
J'ai compris les principes de la programmation vb.
Bien ! C'est un bon début !
Tu as par ailleurs le lien vers le bon tuto.
Reviens avec un début de code en nous expliquant où tu rencontres une difficulté
jmfmarques est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 12h58   #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
Le principe de fusion de document dans word est : Une base de données contenant les renseignements utiles à ta lettre type et le document type dans lequel sont placés des champs de fusion.

Réaliser la liaison entre le document type et la base de données est réalisé ainsi
Code :
1
2
3
4
5
    ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
    ActiveDocument.MailMerge.OpenDataSource Name:= _
        "D:\xls\adresses diverses.xls", ConfirmConversions:=False, ReadOnly:= _
        False, LinkToSource:=True, Format:=wdOpenFormatAuto, Connection:= _
        "Feuille de calcul entière"
Réalise la liaison entre une base de données Excel (ne l'ai jamais fait avec access)
Pour Access, regarde la méthode OpenDataSource dans l'aide
Dans la base de données, j'ai les champs Civilité, Prénom, Nom, adresse...etc
Je suppose que tu souhaites placer l'adresse d'une personne sur ta lettre
Citation:
Mademoiselle Michèle Untelle
5, avenue du Rosier
75013 PARIS
Pour faire ça, tu dois placer dans le document les champs de fusion aux endroits voulus.
Ces champs ont pour référence le nom de champ de la base de données. Dans l'exemple, tu auras ça dans Word
Code :
1
2
3
4
 
"Civilité" "Prénom" "Nom" 
"Adresse"
"Code_Postal" "Ville"
Généralement, l'insertion des champs se réalise manuellement, leur emplacement dépendant des termes de la lettre. Le code ne te servirait à rien sauf à t'inciter à réaliser une usine à gaz

Par contre, lancer par macro la fusion une fois le document type réalisée ne pose pas de pb :
Code :
1
2
3
4
5
 
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .Execute
    End With
Créera autant de lettres que de noms existants dans ta base de données
Mais tu peux définir des critères. Par exemple, si tu ne souhaites n'adresser une lettre qu'à Mademoiselle Michèle Untelle :
Code :
1
2
3
4
5
6
7
 
    ActiveDocument.MailMerge.DataSource.QueryString = _
        "SELECT * FROM D:\xls\adresses diverses.xls WHERE ((Nom = 'Untelle') AND (Prénom = 'Michèle'))" & ""
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .Execute Pause:=True
    End With
Te reste à l'adapter avec une base Access, ce que je ne sais pas faire
Mais il y aura bien quelqu'un pour t'aider.

A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 14h05   #13
Invité régulier
 
Inscription : janvier 2005
Messages : 42
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 42
Points : 9
Points : 9
Merci pour tous ces renseignements, je vais m'y mettre sérieusement.
Il me faudra un peu de temps.
Je considère que ma question est résolue et ceci .
SI j'ai d'autres problèmes, je créerai une autre discussion.
Merci encore pour la cellérité dont vous avez fait tous preuve.
Bonne journée.
nagdrir 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 03h18.


 
 
 
 
Partenaires

Hébergement Web