OVH Cloud OVH Cloud

liste avec nextif

14 réponses
Avatar
michel263
bonsoir
soit une liste de personnes identifié avec un code pour preciser leur
appartenance (ex v pour voisin, f pour famille, c comme collaborateur)
je fais une liste dans word avec une liste par type de personne
(appartenance) en fonction du code et ce avec l instruction SKIPIF pour le
1° enreg puis NEXTIF. la liste des personnes sous excel n est pas triée sur
le code.
a rupture sur le code word perd les pedales et m imprime n fois la même
personne.

si je trie ma liste alpha sur le code, l edition des personnes code c se
passe impec, la suivante avec le code f aussi, sauf qu'elle m imprime la 1°
personne avec le code v et me le repete jusqu a saut de page

Question: existe il un moyen, sans passer par du VBA, de faire une liste ne
comportant qu'un code et ce que la feuille excel de depart soit trié ou pas
trie ?

merci de votre patience
bonne soirée

Michel

ps si vous voulez un exemple, pas de probleme, suffit de me le dire.

4 réponses

1 2
Avatar
michel263
j ai mis en place ton code mais le resultat n est pas celui escompté..
je le met en ligne. http://cjoint.com/?ggwMgO0ONe
j ai du oublier quelque chose

"Dom" a écrit dans le message de news:

C'est comme tu veux.
Mais maintenant que tu as une ligne de VBA dans ton document, tu peux bien
la remplacer par :

Sub AutoOpen()
Dim Signet As Range
Set Signet = ActiveDocument.Bookmarks("Titre").Range
Signet.Text = InputBox("Taper le titre du document", "Michel263",
"Texte par défaut")
ActiveDocument.Bookmarks.Add "Titre", Signet
End Sub

qui résoud le problème précédent si la macro est lancée plusieurs fois ou
le
document principal sauvegardé.

Dom



tu m a donné la soluce. je vais faire un .dot et comme cela le probléme
sera
réglé

merci et bon WE

"Dom" a écrit dans le message de news:

Je suppose que je n'ai pas ce problème car j'utilise un modèle que je
n'enregistre plus quand je le quitte. Il faudrait réinitialiser le
signet
à
l'ouverture du document principal, avant la demande de saisie.

Ce qui me surprend c'est que ta 2e valeur ne fonctionne pas. Elle
devrait
au
moins s'ajouter à la première.

Dom



merci Dom de ta reponse

j ai mis en place ta macro. c est impec sauf le signet conserve la
valeur
et
si on relance la macro, la seconde valeur saisie n est pas pris en
compte...
Michel
"Dom" a écrit dans le message de news:

Je veux dire que je t'ai donnée une instruction basique (c'est le
cas
de
dire
:) qui fonctionne mais qui peut être améliorée.
Par exemple, elle pourrait être complétée par un titre pour la boîte
de
dialogue (Michel263) et un texte par défaut.

ActiveDocument.Bookmarks("LeTitre").Range.InsertBefore
(InputBox("Taper
le
titre du document", "Michel263", "Texte par défaut"))

Mais elle aurait pu être écrite de manière plus 'pro', en déclarant
les
3
paramètres d'abord. Bref, avec le VBA, on peut tout faire mais
l'apprentissage est plus long.

Dom


Merci Dom
je vais essayer
mais que signifie "siimplifié" dans ta macro ?

merci de ta reponse

Michel

"Dom" a écrit dans le message de
news:

Le code Fillin n'est pas vraiment compatible avec le répertoire.
Car
même
si
tu le places dans l'en-tête du document, le titre se mettra dans
le
document
principal, mais pas dans le résultat.

Je crains que tu sois obligé de passer par du VBA. Mais si ton
objectif
est
de simplifier la tache des utilisateurs, tu seras obligé d'y
venir
:)

Dans le document principal, il faudrait déclarer un signet dans
l'en-tête,
nommé Titre par exemple. Et utiliser une macro (simplifiée ici) :
Sub AutoOpen()
ActiveDocument.Bookmarks("Titre").Range.InsertBefore
(InputBox("Tapez
le
titre de votre document"))
End Sub

A l'ouverture du document principal, une boîte de dialogue (comme
celle
du
Fillin ou Remplir) s'affiche. Le titre se placera au niveau du
signet.
Il
restera à faire la fusion.

Dom




"michel263" a écrit dans le message de
news:
g26sl1$tco$
bonsoir
soit une liste de personnes identifié avec un code pour
preciser
leur
appartenance (ex v pour voisin, f pour famille, c comme
collaborateur)
je fais une liste dans word avec une liste par type de
personne
(appartenance) en fonction du code et ce avec l instruction
SKIPIF
pour
le
1° enreg puis NEXTIF. la liste des personnes sous excel n est
pas
triée
sur le code.
a rupture sur le code word perd les pedales et m imprime n
fois
la
même
personne.

si je trie ma liste alpha sur le code, l edition des personnes
code
c
se
passe impec, la suivante avec le code f aussi, sauf qu'elle m
imprime
la
1° personne avec le code v et me le repete jusqu a saut de
page

Question: existe il un moyen, sans passer par du VBA, de faire
une
liste
ne comportant qu'un code et ce que la feuille excel de depart
soit
trié
ou
pas trie ?

merci de votre patience
bonne soirée

Michel

ps si vous voulez un exemple, pas de probleme, suffit de me le
dire.

je vais utiliser la solution de DOM. en effet il s agit d un

publipostage
effectué trés régukierement par des personnes pratiquant trés
peu
la
micro
informatique. je recherche donc un syteme trés simple et le
systéme
de
publipostage avec un répertoire
il susiste un probleme. j utilise le mot-clef "remplir" pour
faire
saisir
un titre qui doit changer à chaque fois. Avec un publipostage de
type
repertoire, l instruction fonctionne mais imprime le champ avec
chaque
enregistrement et je ne le voudrais qu une seule fois en t^te de
la
liste.
avez vous une astuce ?

merci d avance

Michel





























Avatar
Circé
Bonsoir michel

Franchement, je trouve que tu t'embêtes bien avec cette macro et ce
publipostage.

Tu veux une liste avec toujours le même critère : un champ DATABASE est
à insérer une seule fois, et ça marche... Juste une mise à jour avec
F9, pas besoin de publipostage et donc pas besoin de plusieurs
documents.

Pour insérer facilement un champ DATABASE, affiche la barre d'outils
Base de données et clique sur le bouton Insérer une base de données.

Clique ensuite sur le bouton Obtenir les données, sélectionne ta base
et OK.
Il te reste à aller dans les options de requêtes pour filtrer et trier
des enregistrements, puis bouton Insérer les données => insérer en tant
que champ.

Cerise sur le gâteau, tu peux choisir un format sympa en un clin
d'oeil.

Un champ FILLIN ? No problem, tu le mets dans ce même document.

Si vraiment t'as peur que tes utilisateurs ne sachent pas mettre à
jour, éventuellement un bouton avec une macro qui met tout à jour et
c'est tout. A savoir : il existe aussi un bouton Mise à jour des champs
sur la barre d'outils Base de données.

Circé
http://faqword.free.fr


j ai mis en place ton code mais le resultat n est pas celui escompté..
je le met en ligne. http://cjoint.com/?ggwMgO0ONe
j ai du oublier quelque chose

"Dom" a écrit dans le message de news:

C'est comme tu veux.
Mais maintenant que tu as une ligne de VBA dans ton document, tu peux bien
la remplacer par :

Sub AutoOpen()
Dim Signet As Range
Set Signet = ActiveDocument.Bookmarks("Titre").Range
Signet.Text = InputBox("Taper le titre du document", "Michel263",
"Texte par défaut")
ActiveDocument.Bookmarks.Add "Titre", Signet
End Sub

qui résoud le problème précédent si la macro est lancée plusieurs fois ou
le
document principal sauvegardé.

Dom



tu m a donné la soluce. je vais faire un .dot et comme cela le probléme
sera
réglé

merci et bon WE

"Dom" a écrit dans le message de news:

Je suppose que je n'ai pas ce problème car j'utilise un modèle que je
n'enregistre plus quand je le quitte. Il faudrait réinitialiser le
signet

à
l'ouverture du document principal, avant la demande de saisie.

Ce qui me surprend c'est que ta 2e valeur ne fonctionne pas. Elle
devrait

au
moins s'ajouter à la première.

Dom



merci Dom de ta reponse

j ai mis en place ta macro. c est impec sauf le signet conserve la
valeur


et
si on relance la macro, la seconde valeur saisie n est pas pris en
compte...
Michel
"Dom" a écrit dans le message de news:

Je veux dire que je t'ai donnée une instruction basique (c'est le cas
de
dire
:) qui fonctionne mais qui peut être améliorée.
Par exemple, elle pourrait être complétée par un titre pour la boîte
de



dialogue (Michel263) et un texte par défaut.

ActiveDocument.Bookmarks("LeTitre").Range.InsertBefore
(InputBox("Taper



le
titre du document", "Michel263", "Texte par défaut"))

Mais elle aurait pu être écrite de manière plus 'pro', en déclarant
les



3
paramètres d'abord. Bref, avec le VBA, on peut tout faire mais
l'apprentissage est plus long.

Dom


Merci Dom
je vais essayer
mais que signifie "siimplifié" dans ta macro ?

merci de ta reponse

Michel

"Dom" a écrit dans le message de
news:





Le code Fillin n'est pas vraiment compatible avec le répertoire.
Car





même
si
tu le places dans l'en-tête du document, le titre se mettra dans
le





document
principal, mais pas dans le résultat.

Je crains que tu sois obligé de passer par du VBA. Mais si ton
objectif
est
de simplifier la tache des utilisateurs, tu seras obligé d'y venir
:)

Dans le document principal, il faudrait déclarer un signet dans
l'en-tête,
nommé Titre par exemple. Et utiliser une macro (simplifiée ici) :
Sub AutoOpen()
ActiveDocument.Bookmarks("Titre").Range.InsertBefore
(InputBox("Tapez
le
titre de votre document"))
End Sub

A l'ouverture du document principal, une boîte de dialogue (comme
celle
du
Fillin ou Remplir) s'affiche. Le titre se placera au niveau du
signet.
Il
restera à faire la fusion.

Dom




"michel263" a écrit dans le message de
news:
g26sl1$tco$
bonsoir
soit une liste de personnes identifié avec un code pour
preciser







leur
appartenance (ex v pour voisin, f pour famille, c comme
collaborateur)
je fais une liste dans word avec une liste par type de personne
(appartenance) en fonction du code et ce avec l instruction
SKIPIF
pour
le
1° enreg puis NEXTIF. la liste des personnes sous excel n est
pas







triée
sur le code.
a rupture sur le code word perd les pedales et m imprime n fois
la
même
personne.

si je trie ma liste alpha sur le code, l edition des personnes
code
c
se
passe impec, la suivante avec le code f aussi, sauf qu'elle m
imprime
la
1° personne avec le code v et me le repete jusqu a saut de page

Question: existe il un moyen, sans passer par du VBA, de faire
une
liste
ne comportant qu'un code et ce que la feuille excel de depart
soit
trié
ou
pas trie ?

merci de votre patience
bonne soirée

Michel

ps si vous voulez un exemple, pas de probleme, suffit de me le
dire.

je vais utiliser la solution de DOM. en effet il s agit d un

publipostage
effectué trés régukierement par des personnes pratiquant trés peu
la
micro
informatique. je recherche donc un syteme trés simple et le
systéme






de
publipostage avec un répertoire
il susiste un probleme. j utilise le mot-clef "remplir" pour
faire






saisir
un titre qui doit changer à chaque fois. Avec un publipostage de
type
repertoire, l instruction fonctionne mais imprime le champ avec
chaque
enregistrement et je ne le voudrais qu une seule fois en t^te de
la






liste.
avez vous une astuce ?

merci d avance

Michel































Avatar
Dom
Ton exemple (Set, Nextif) ne correspondant pas à ce que j'ai proposé, je
n'ai donc regardé que le VBA. Le code est ok, mais ton signet ne doit pas
être placé dans le code SET. Il doit être à l'extérieur et dans l'en-tête !

Dom



j ai mis en place ton code mais le resultat n est pas celui escompté..
je le met en ligne. http://cjoint.com/?ggwMgO0ONe
j ai du oublier quelque chose

"Dom" a écrit dans le message de news:

C'est comme tu veux.
Mais maintenant que tu as une ligne de VBA dans ton document, tu peux bien
la remplacer par :

Sub AutoOpen()
Dim Signet As Range
Set Signet = ActiveDocument.Bookmarks("Titre").Range
Signet.Text = InputBox("Taper le titre du document", "Michel263",
"Texte par défaut")
ActiveDocument.Bookmarks.Add "Titre", Signet
End Sub

qui résoud le problème précédent si la macro est lancée plusieurs fois ou
le
document principal sauvegardé.

Dom



tu m a donné la soluce. je vais faire un .dot et comme cela le probléme
sera
réglé

merci et bon WE

"Dom" a écrit dans le message de news:

Je suppose que je n'ai pas ce problème car j'utilise un modèle que je
n'enregistre plus quand je le quitte. Il faudrait réinitialiser le
signet
à
l'ouverture du document principal, avant la demande de saisie.

Ce qui me surprend c'est que ta 2e valeur ne fonctionne pas. Elle
devrait
au
moins s'ajouter à la première.

Dom



merci Dom de ta reponse

j ai mis en place ta macro. c est impec sauf le signet conserve la
valeur
et
si on relance la macro, la seconde valeur saisie n est pas pris en
compte...
Michel
"Dom" a écrit dans le message de news:

Je veux dire que je t'ai donnée une instruction basique (c'est le
cas
de
dire
:) qui fonctionne mais qui peut être améliorée.
Par exemple, elle pourrait être complétée par un titre pour la boîte
de
dialogue (Michel263) et un texte par défaut.

ActiveDocument.Bookmarks("LeTitre").Range.InsertBefore
(InputBox("Taper
le
titre du document", "Michel263", "Texte par défaut"))

Mais elle aurait pu être écrite de manière plus 'pro', en déclarant
les
3
paramètres d'abord. Bref, avec le VBA, on peut tout faire mais
l'apprentissage est plus long.

Dom


Merci Dom
je vais essayer
mais que signifie "siimplifié" dans ta macro ?

merci de ta reponse

Michel

"Dom" a écrit dans le message de
news:

Le code Fillin n'est pas vraiment compatible avec le répertoire.
Car
même
si
tu le places dans l'en-tête du document, le titre se mettra dans
le
document
principal, mais pas dans le résultat.

Je crains que tu sois obligé de passer par du VBA. Mais si ton
objectif
est
de simplifier la tache des utilisateurs, tu seras obligé d'y
venir
:)

Dans le document principal, il faudrait déclarer un signet dans
l'en-tête,
nommé Titre par exemple. Et utiliser une macro (simplifiée ici) :
Sub AutoOpen()
ActiveDocument.Bookmarks("Titre").Range.InsertBefore
(InputBox("Tapez
le
titre de votre document"))
End Sub

A l'ouverture du document principal, une boîte de dialogue (comme
celle
du
Fillin ou Remplir) s'affiche. Le titre se placera au niveau du
signet.
Il
restera à faire la fusion.

Dom




"michel263" a écrit dans le message de
news:
g26sl1$tco$
bonsoir
soit une liste de personnes identifié avec un code pour
preciser
leur
appartenance (ex v pour voisin, f pour famille, c comme
collaborateur)
je fais une liste dans word avec une liste par type de
personne
(appartenance) en fonction du code et ce avec l instruction
SKIPIF
pour
le
1° enreg puis NEXTIF. la liste des personnes sous excel n est
pas
triée
sur le code.
a rupture sur le code word perd les pedales et m imprime n
fois
la
même
personne.

si je trie ma liste alpha sur le code, l edition des personnes
code
c
se
passe impec, la suivante avec le code f aussi, sauf qu'elle m
imprime
la
1° personne avec le code v et me le repete jusqu a saut de
page

Question: existe il un moyen, sans passer par du VBA, de faire
une
liste
ne comportant qu'un code et ce que la feuille excel de depart
soit
trié
ou
pas trie ?

merci de votre patience
bonne soirée

Michel

ps si vous voulez un exemple, pas de probleme, suffit de me le
dire.

je vais utiliser la solution de DOM. en effet il s agit d un

publipostage
effectué trés régukierement par des personnes pratiquant trés
peu
la
micro
informatique. je recherche donc un syteme trés simple et le
systéme
de
publipostage avec un répertoire
il susiste un probleme. j utilise le mot-clef "remplir" pour
faire
saisir
un titre qui doit changer à chaque fois. Avec un publipostage de
type
repertoire, l instruction fonctionne mais imprime le champ avec
chaque
enregistrement et je ne le voudrais qu une seule fois en t^te de
la
liste.
avez vous une astuce ?

merci d avance

Michel


































Avatar
michel263
Merci à vous deux de votre attention
@ CIRCE Je ne peu pas utiliser le DATABASE car mes enregistrements sont de
longueur variable et l inscription dans un tableau me pose probleme. Il est
vrai que cette solution me conviendrai mieux. le gros avantage de ta
solution est la simplicité, l'utilisation de la même feuille
@ DOM j'ai mis le signet dans l entete et cela marche bien mieux

encore merci à vous deux


"Dom" a écrit dans le message de news:


Ton exemple (Set, Nextif) ne correspondant pas à ce que j'ai proposé, je
n'ai donc regardé que le VBA. Le code est ok, mais ton signet ne doit pas
être placé dans le code SET. Il doit être à l'extérieur et dans l'en-tête
!

Dom



j ai mis en place ton code mais le resultat n est pas celui escompté..
je le met en ligne. http://cjoint.com/?ggwMgO0ONe
j ai du oublier quelque chose

"Dom" a écrit dans le message de news:

C'est comme tu veux.
Mais maintenant que tu as une ligne de VBA dans ton document, tu peux
bien
la remplacer par :

Sub AutoOpen()
Dim Signet As Range
Set Signet = ActiveDocument.Bookmarks("Titre").Range
Signet.Text = InputBox("Taper le titre du document", "Michel263",
"Texte par défaut")
ActiveDocument.Bookmarks.Add "Titre", Signet
End Sub

qui résoud le problème précédent si la macro est lancée plusieurs fois
ou
le
document principal sauvegardé.

Dom



tu m a donné la soluce. je vais faire un .dot et comme cela le
probléme
sera
réglé

merci et bon WE

"Dom" a écrit dans le message de news:

Je suppose que je n'ai pas ce problème car j'utilise un modèle que
je
n'enregistre plus quand je le quitte. Il faudrait réinitialiser le
signet
à
l'ouverture du document principal, avant la demande de saisie.

Ce qui me surprend c'est que ta 2e valeur ne fonctionne pas. Elle
devrait
au
moins s'ajouter à la première.

Dom



merci Dom de ta reponse

j ai mis en place ta macro. c est impec sauf le signet conserve la
valeur
et
si on relance la macro, la seconde valeur saisie n est pas pris en
compte...
Michel
"Dom" a écrit dans le message de
news:

Je veux dire que je t'ai donnée une instruction basique (c'est le
cas
de
dire
:) qui fonctionne mais qui peut être améliorée.
Par exemple, elle pourrait être complétée par un titre pour la
boîte
de
dialogue (Michel263) et un texte par défaut.

ActiveDocument.Bookmarks("LeTitre").Range.InsertBefore
(InputBox("Taper
le
titre du document", "Michel263", "Texte par défaut"))

Mais elle aurait pu être écrite de manière plus 'pro', en
déclarant
les
3
paramètres d'abord. Bref, avec le VBA, on peut tout faire mais
l'apprentissage est plus long.

Dom


Merci Dom
je vais essayer
mais que signifie "siimplifié" dans ta macro ?

merci de ta reponse

Michel

"Dom" a écrit dans le message de
news:

Le code Fillin n'est pas vraiment compatible avec le
répertoire.
Car
même
si
tu le places dans l'en-tête du document, le titre se mettra
dans
le
document
principal, mais pas dans le résultat.

Je crains que tu sois obligé de passer par du VBA. Mais si ton
objectif
est
de simplifier la tache des utilisateurs, tu seras obligé d'y
venir
:)

Dans le document principal, il faudrait déclarer un signet
dans
l'en-tête,
nommé Titre par exemple. Et utiliser une macro (simplifiée
ici) :
Sub AutoOpen()
ActiveDocument.Bookmarks("Titre").Range.InsertBefore
(InputBox("Tapez
le
titre de votre document"))
End Sub

A l'ouverture du document principal, une boîte de dialogue
(comme
celle
du
Fillin ou Remplir) s'affiche. Le titre se placera au niveau du
signet.
Il
restera à faire la fusion.

Dom




"michel263" a écrit dans le message
de
news:
g26sl1$tco$
bonsoir
soit une liste de personnes identifié avec un code pour
preciser
leur
appartenance (ex v pour voisin, f pour famille, c comme
collaborateur)
je fais une liste dans word avec une liste par type de
personne
(appartenance) en fonction du code et ce avec l instruction
SKIPIF
pour
le
1° enreg puis NEXTIF. la liste des personnes sous excel n
est
pas
triée
sur le code.
a rupture sur le code word perd les pedales et m imprime n
fois
la
même
personne.

si je trie ma liste alpha sur le code, l edition des
personnes
code
c
se
passe impec, la suivante avec le code f aussi, sauf qu'elle
m
imprime
la
1° personne avec le code v et me le repete jusqu a saut de
page

Question: existe il un moyen, sans passer par du VBA, de
faire
une
liste
ne comportant qu'un code et ce que la feuille excel de
depart
soit
trié
ou
pas trie ?

merci de votre patience
bonne soirée

Michel

ps si vous voulez un exemple, pas de probleme, suffit de me
le
dire.

je vais utiliser la solution de DOM. en effet il s agit d un

publipostage
effectué trés régukierement par des personnes pratiquant trés
peu
la
micro
informatique. je recherche donc un syteme trés simple et le
systéme
de
publipostage avec un répertoire
il susiste un probleme. j utilise le mot-clef "remplir" pour
faire
saisir
un titre qui doit changer à chaque fois. Avec un publipostage
de
type
repertoire, l instruction fonctionne mais imprime le champ
avec
chaque
enregistrement et je ne le voudrais qu une seule fois en t^te
de
la
liste.
avez vous une astuce ?

merci d avance

Michel




































1 2