Re: Nombre d'enregistrements de fusion
Le
Jean Laflèche
Re-bonjour chère Tisane,
Après réflexion, je me demandais s'il était réalisable, une fois la fusion
terminée, qu'une macro puisse insérer une ligne vierge, suivi d'un tableau
correspondant au même nombre de colonnes, que celui généré par la fusion et
que cette macro indique le nombre de lignes non vide dans chacune des
colonnes ???
Est-ce là une bonne possibilité ?
Merci à l'avance,
Salutations et bonne fin de journée,
Jean
-- Message d'origine --
De : "Tisane" <b.tisane@laposte.net>
Groupes de discussion : microsoft.public.fr.word
Envoyé : 15 octobre 2006 12:51
Objet : Re: Nombre d'enregistrements de fusion
>> Exposé de la situation :
>> J'ai un bassin de X retraités (581) dans Excel 2000. Seulement une
>> partie, participent à une activité quelconque, laquelle offre divers
>> forfaits. Ainsi, le CA me demande régulièrement combien de
>> participants ils auront à ladite activité, en fonction du forfait
>> choisi, (Fusion-catalogue Word 2000) pour budgéter en conséquence et
>> à la date de fin d'inscription, imprimer des cartes individuelles
>> indiquant le "statut" de chaque participant (Fusion-étiquettes Word
>> 2000), à ce point nul besoin de calcul de nombre. Je ne peux donc pas
>> inscrire FIN nulle part, (si oui, où ?) comme
>> vous me le suggérez, à moins que je n'ais rien compris à vos
>> explications. Si vous aviez l'amabilité de m'expliquer la procédure pour
>> MsgBox, je
>> n'aurais pas peur de me "mouiller" un peu.
>> Lorsque je fusionne, je demande une liste des membres dont le champ Y
>> (d'Excel) n'est pas vide.
>> En note de fin de document, j'apprécierais donc pouvoir lire :
>> Forfait 1= 8
>> Forfait 2 U
>> Forfait 3 A
>> TOTAL 4
>
> Malheureusement, mes compétences s'arrêtent presque là où la programmation
> commence ;-)
> D'autant qu'à la lecture de ce dernier message, ça se complique.
> Au début, c'était indiquer le nombre d'enregistrements, maintenant c'est
> compter les enregistrements qui répondent à un critère
> En attendant qu'un pro de la programmation passe par là (ou que je vois le
> mien demain), je sélectionnerais le champ Y non vide dans Excel (menu
> Données | Filtrer | Filtre automatique) et je ferais mon comptage des
> divers forfaits sur la dernière ligne du tableau.
> Pas terrible mais pas mieux pour l'instant
>
> --
> Tisane
>
>
>>> Bonjour Jean,
>>>
>>>> J'ai trouvé ceci, qui ressemble à ce que vous m'avez dit :
>>>> " The following code in a macro will display the number of records
>>>> in the datasource attached to the active document:
>>>> MsgBox ActiveDocument.MailMerge.DataSource.RecordCount
>>>> mais je n'y comprends rien. Qu'est-ce que MsgBox ???
>>>
>>> MsgBox ouvre une petite boîte de dialogue qui affiche un message.
>>> Tu es sûr que tu veux t'embarquer dans du code ?
>>>
>>> Au-delà du manque d'élégance, comme tu disais dans ton premier
>>> message je crois, tu pourrais faire plus simple :
>>> Dans le dernier enregistrement de la source, marquer "Fin" (par
>>> exemple) et dans le document-type :
>>> { IF { MERGEFIELD nom }= "Fin" { MERGEREC } " " }
>>> Tu vas me dire que dans ce cas-là, autant afficher le nombre
>>> directement dans cette dernière ligne (avec une formule dans Excel :
>>> NBVAL par exemple).
>>> Mais c'était ta solution de départ il me semble.
>>>
>>> Ou encore, tu peux numéroter les enregistrements dans Word :
>>> ajoute { MERGEREC }. devant le premier code de champ.
>>>
>>> --
>>> Tisane
>>>
>>>
>>>> "Tisane" <b.tisane@laposte.net> a écrit dans le message de news:
>>>> OAY1yw57GHA.4572@TK2MSFTNGP02.phx.gbl
>>>>> Bonjour Jean,
>>>>>
>>>>>> Je fusionne en utilisant l'option Catalogue de Word 2000 et ma
>>>>>> base de données provient d'Excel 2000. Je désire faire apparaître
>>>>>> au bas de mon document et/ou dans le pied de page Word, le nombre
>>>>>> d'enregistrements trouvés pour ma requête.
>>>>>> Quel serait le type de "MERGEFIELD" à utiliser et ses diverses
>>>>>> options s'il y a lieu?
>>>>>
>>>>> Comme tu t'en doutes (ton 1er message étant resté sans réponse), ce
>>>>> n'est pas si simple dans la mesure où tu ne veux pas indiquer le
>>>>> total d'enregistrements directement dans la source.
>>>>> Il va sans doute falloir créer un bout de code. Regarde du côté de
>>>>> l'instruction :
>>>>> ActiveDocument.MailMerge.DataSource.RecordCount
>>>>>
>>>>> --
>>>>> Tisane
>
>
--
Salutations et bonne fin de journée,
Jean
Après réflexion, je me demandais s'il était réalisable, une fois la fusion
terminée, qu'une macro puisse insérer une ligne vierge, suivi d'un tableau
correspondant au même nombre de colonnes, que celui généré par la fusion et
que cette macro indique le nombre de lignes non vide dans chacune des
colonnes ???
Est-ce là une bonne possibilité ?
Merci à l'avance,
Salutations et bonne fin de journée,
Jean
-- Message d'origine --
De : "Tisane" <b.tisane@laposte.net>
Groupes de discussion : microsoft.public.fr.word
Envoyé : 15 octobre 2006 12:51
Objet : Re: Nombre d'enregistrements de fusion
>> Exposé de la situation :
>> J'ai un bassin de X retraités (581) dans Excel 2000. Seulement une
>> partie, participent à une activité quelconque, laquelle offre divers
>> forfaits. Ainsi, le CA me demande régulièrement combien de
>> participants ils auront à ladite activité, en fonction du forfait
>> choisi, (Fusion-catalogue Word 2000) pour budgéter en conséquence et
>> à la date de fin d'inscription, imprimer des cartes individuelles
>> indiquant le "statut" de chaque participant (Fusion-étiquettes Word
>> 2000), à ce point nul besoin de calcul de nombre. Je ne peux donc pas
>> inscrire FIN nulle part, (si oui, où ?) comme
>> vous me le suggérez, à moins que je n'ais rien compris à vos
>> explications. Si vous aviez l'amabilité de m'expliquer la procédure pour
>> MsgBox, je
>> n'aurais pas peur de me "mouiller" un peu.
>> Lorsque je fusionne, je demande une liste des membres dont le champ Y
>> (d'Excel) n'est pas vide.
>> En note de fin de document, j'apprécierais donc pouvoir lire :
>> Forfait 1= 8
>> Forfait 2 U
>> Forfait 3 A
>> TOTAL 4
>
> Malheureusement, mes compétences s'arrêtent presque là où la programmation
> commence ;-)
> D'autant qu'à la lecture de ce dernier message, ça se complique.
> Au début, c'était indiquer le nombre d'enregistrements, maintenant c'est
> compter les enregistrements qui répondent à un critère
> En attendant qu'un pro de la programmation passe par là (ou que je vois le
> mien demain), je sélectionnerais le champ Y non vide dans Excel (menu
> Données | Filtrer | Filtre automatique) et je ferais mon comptage des
> divers forfaits sur la dernière ligne du tableau.
> Pas terrible mais pas mieux pour l'instant
>
> --
> Tisane
>
>
>>> Bonjour Jean,
>>>
>>>> J'ai trouvé ceci, qui ressemble à ce que vous m'avez dit :
>>>> " The following code in a macro will display the number of records
>>>> in the datasource attached to the active document:
>>>> MsgBox ActiveDocument.MailMerge.DataSource.RecordCount
>>>> mais je n'y comprends rien. Qu'est-ce que MsgBox ???
>>>
>>> MsgBox ouvre une petite boîte de dialogue qui affiche un message.
>>> Tu es sûr que tu veux t'embarquer dans du code ?
>>>
>>> Au-delà du manque d'élégance, comme tu disais dans ton premier
>>> message je crois, tu pourrais faire plus simple :
>>> Dans le dernier enregistrement de la source, marquer "Fin" (par
>>> exemple) et dans le document-type :
>>> { IF { MERGEFIELD nom }= "Fin" { MERGEREC } " " }
>>> Tu vas me dire que dans ce cas-là, autant afficher le nombre
>>> directement dans cette dernière ligne (avec une formule dans Excel :
>>> NBVAL par exemple).
>>> Mais c'était ta solution de départ il me semble.
>>>
>>> Ou encore, tu peux numéroter les enregistrements dans Word :
>>> ajoute { MERGEREC }. devant le premier code de champ.
>>>
>>> --
>>> Tisane
>>>
>>>
>>>> "Tisane" <b.tisane@laposte.net> a écrit dans le message de news:
>>>> OAY1yw57GHA.4572@TK2MSFTNGP02.phx.gbl
>>>>> Bonjour Jean,
>>>>>
>>>>>> Je fusionne en utilisant l'option Catalogue de Word 2000 et ma
>>>>>> base de données provient d'Excel 2000. Je désire faire apparaître
>>>>>> au bas de mon document et/ou dans le pied de page Word, le nombre
>>>>>> d'enregistrements trouvés pour ma requête.
>>>>>> Quel serait le type de "MERGEFIELD" à utiliser et ses diverses
>>>>>> options s'il y a lieu?
>>>>>
>>>>> Comme tu t'en doutes (ton 1er message étant resté sans réponse), ce
>>>>> n'est pas si simple dans la mesure où tu ne veux pas indiquer le
>>>>> total d'enregistrements directement dans la source.
>>>>> Il va sans doute falloir créer un bout de code. Regarde du côté de
>>>>> l'instruction :
>>>>> ActiveDocument.MailMerge.DataSource.RecordCount
>>>>>
>>>>> --
>>>>> Tisane
>
>
--
Salutations et bonne fin de journée,
Jean

Poser une question


C'est une excellente idée, même si je ne sais pas la mettre en oeuvre.
Pour la théorie, le mieux serait d'ajouter une ligne au tableau, sans en
créer un 2e, quitte à la faire assez haute pour qu'elle se distingue du
reste, afin de simplifier la formule.
En "manuel", la fonction ressemblerait à quelque chose comme
{ =COUNT(above) # "# ##0" }
mais cela compte toutes les cellules du dessus (y compris vides). Donc il
faudrait compléter avec un IF.
Du style "Si cellule vide alors 0, sinon 1" et totaliserait les 1.
Le problème c'est que les formules de calculs dans Word sont trèèèèèès
limitées.
C'est si simple avec Excel ou Access !
Rien de mieux pour l'instant,
--
Tisane
Si l'anglais ne te pose pas trop de problème, je pense que tu pourrais
utilement consulter les forums :
microsoft.public.word.vba.*
(* parce qu'il y a un "general", un "beginners", "userforms", etc.)
--
Tisane
J'ai "posté" au groupe general et customization.
S'ils peuvent m'aider, je vous retournerai copie de leur message pour ajout
à votre base de connaissances, qui sait, d'autres utilisateurs auront sans
doute besoin de la "recette", si elle existe.
Merci pour tout.
--
Salutations et bonne fin de journée,
Jean
"Tisane"
Efficace n'est-ce pas le forum vba ? (nota : je ne suis pas MVP ;-))
Le code le plus adapté est celui-ci me semble-t-il, car comme indiqué, il
prévoit les en-têtes et surtout ajoute une ligne au tableau.
Sub Scratchmacro()
Dim oTbl As Word.Table
Dim i As Long
Dim j As Long
Dim pCount As Long
Set oTbl = Selection.Tables(1) 'Or ActiveDocument.Tables(?)"
oTbl.Rows.Add 'If no last row exists for the totals then enable the next
line
For i = 1 To oTbl.Columns.Count
pCount = 0
For j = 1 To oTbl.Rows.Count
'For j = 2 To oTbl.Rows.Count 'Use this if you have a header row
If j = oTbl.Rows.Count Then oTbl.Cell(j, i).Range.Text = pCount
If Len(oTbl.Cell(j, i).Range.Text) > 2 Then
pCount = pCount + 1
End If
Next j
Next i
End Sub
Merci à Greg Maxey et bonne continuation à toi,
--
Tisane
Le 22/10/2006 15:31 vous avez écrit ceci :
Laquelle ? vous voulez parlez de la FAQ Word ? non, je ne crois pas,
tisane l'exècre. A part celle ci, je ne vois pas d'autres base de
connaissances, maintenues par des bénévoles du moins, quand à celle de MS,
avant d'y mettre un article, il faut d'abord devenir moine (ou qqchose
dans la genre pas vraiment évident ou encore parler p'tit nèg'e)
Ca part d'un bon sentiment, mais la directrice est bien plus exigeante, la
preuve, elle vous coupe l'herbe sous les pieds. Merci quand même, c'etait
sympa d'y avoir pensé.
--
JièL / Jean-Louis GOUBERT
Là bas mieux qu'en face ;-) http://forums.offices.free.fr/
La FAQ Outlook est là : http://faq.outlook.free.fr/
Les stats de CDO : http://faq.outlook.free.fr/cdo/