bonne annéee à tous ! de l'aide mrs ou mmes les spécialistes VB
5 réponses
SoyOnsSérieUX
Bonjour,
J'ai réalisé un publipostage Word 2003 à partir d'une base de données Excel
En manuel, lignes de données par ligne de données ça fonctionne parfaitement
:
Fusionner vers imprimante...enregistrement en cours...1 copie etc....vous
connaissez ..
J'essaie maintenant d'optimiser par des macros commandes
J'ai conçu cete macro qui fonctionne en semi-automatique
Mais Il faut renseigner le numéro de l'enregistrement puis le nombre
d'étiquettes..pas de problèmes
c'est long si la base contient beaucoup d'enregistrements
Le nombre d'étiquettes par ligne n'étant jamais le même !
J'aimerais pouvoir récupérer directement le nombre d'étiquettes dans une
variable à partir de ma base de données
je sais l'incorporer au document c'est simple par MERGEFIELD "quantite"
mais dans le corps du document de fusion ça ne sert pas à grand chose
La macro :
Sub ImprimeTout_zebra()
'
' zebra2 Macro
' Macro enregistrée le 01/01/2005 par Robert SERALINE
'With Documents("Form letter.doc").MailMerge
nb_lignes = InputBox("Nombre de lignes de la facture : " &
ActiveDocument.MailMerge.DataSource.Name, "LIGNES", 1)
For i = 1 To nb_lignes Step 1
nb_etiq = InputBox("Nombre d'étiquettes" & Chr(13) & " Pour la ligne " & i,
"ETIQUETTES", 1)
ActivePrinter = "ZEBRA_LT2844"
For j = 1 To nb_etiq Step 1
With ActiveDocument.MailMerge
.Destination = wdSendToPrinter
.SuppressBlankLines = True
With .DataSource
.FirstRecord = i
.LastRecord = i
End With
.Execute Pause:=False
End With
Next j
Next i
End Sub
--
Robert SERALINE
Rs47@wanadoo.fr
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
LSteph
Bonjour Robert,
Vois de ce côté (F1) l'exemple:
.count
bonne année à toi aussi.
lSteph
"SoyOnsSérieUX" a écrit dans le message de news: %
Bonjour, J'ai réalisé un publipostage Word 2003 à partir d'une base de données Excel En manuel, lignes de données par ligne de données ça fonctionne parfaitement : Fusionner vers imprimante...enregistrement en cours...1 copie etc....vous connaissez .. J'essaie maintenant d'optimiser par des macros commandes J'ai conçu cete macro qui fonctionne en semi-automatique Mais Il faut renseigner le numéro de l'enregistrement puis le nombre d'étiquettes..pas de problèmes c'est long si la base contient beaucoup d'enregistrements
Le nombre d'étiquettes par ligne n'étant jamais le même ! J'aimerais pouvoir récupérer directement le nombre d'étiquettes dans une variable à partir de ma base de données je sais l'incorporer au document c'est simple par MERGEFIELD "quantite" mais dans le corps du document de fusion ça ne sert pas à grand chose La macro :
Sub ImprimeTout_zebra() ' ' zebra2 Macro ' Macro enregistrée le 01/01/2005 par Robert SERALINE 'With Documents("Form letter.doc").MailMerge
nb_lignes = InputBox("Nombre de lignes de la facture : " & ActiveDocument.MailMerge.DataSource.Name, "LIGNES", 1) For i = 1 To nb_lignes Step 1 nb_etiq = InputBox("Nombre d'étiquettes" & Chr(13) & " Pour la ligne " & i, "ETIQUETTES", 1)
ActivePrinter = "ZEBRA_LT2844" For j = 1 To nb_etiq Step 1 With ActiveDocument.MailMerge .Destination = wdSendToPrinter .SuppressBlankLines = True With .DataSource .FirstRecord = i .LastRecord = i End With .Execute Pause:úlse End With Next j Next i End Sub -- Robert SERALINE
Bonjour Robert,
Vois de ce côté (F1) l'exemple:
.count
bonne année à toi aussi.
lSteph
"SoyOnsSérieUX" <Gb45@wanadoo.fr> a écrit dans le message de news:
%233TOdJK8EHA.3828@TK2MSFTNGP09.phx.gbl...
Bonjour,
J'ai réalisé un publipostage Word 2003 à partir d'une base de données
Excel
En manuel, lignes de données par ligne de données ça fonctionne
parfaitement :
Fusionner vers imprimante...enregistrement en cours...1 copie etc....vous
connaissez ..
J'essaie maintenant d'optimiser par des macros commandes
J'ai conçu cete macro qui fonctionne en semi-automatique
Mais Il faut renseigner le numéro de l'enregistrement puis le nombre
d'étiquettes..pas de problèmes
c'est long si la base contient beaucoup d'enregistrements
Le nombre d'étiquettes par ligne n'étant jamais le même !
J'aimerais pouvoir récupérer directement le nombre d'étiquettes dans une
variable à partir de ma base de données
je sais l'incorporer au document c'est simple par MERGEFIELD "quantite"
mais dans le corps du document de fusion ça ne sert pas à grand chose
La macro :
Sub ImprimeTout_zebra()
'
' zebra2 Macro
' Macro enregistrée le 01/01/2005 par Robert SERALINE
'With Documents("Form letter.doc").MailMerge
nb_lignes = InputBox("Nombre de lignes de la facture : " &
ActiveDocument.MailMerge.DataSource.Name, "LIGNES", 1)
For i = 1 To nb_lignes Step 1
nb_etiq = InputBox("Nombre d'étiquettes" & Chr(13) & " Pour la ligne " &
i, "ETIQUETTES", 1)
ActivePrinter = "ZEBRA_LT2844"
For j = 1 To nb_etiq Step 1
With ActiveDocument.MailMerge
.Destination = wdSendToPrinter
.SuppressBlankLines = True
With .DataSource
.FirstRecord = i
.LastRecord = i
End With
.Execute Pause:úlse
End With
Next j
Next i
End Sub
--
Robert SERALINE
Rs47@wanadoo.fr
"SoyOnsSérieUX" a écrit dans le message de news: %
Bonjour, J'ai réalisé un publipostage Word 2003 à partir d'une base de données Excel En manuel, lignes de données par ligne de données ça fonctionne parfaitement : Fusionner vers imprimante...enregistrement en cours...1 copie etc....vous connaissez .. J'essaie maintenant d'optimiser par des macros commandes J'ai conçu cete macro qui fonctionne en semi-automatique Mais Il faut renseigner le numéro de l'enregistrement puis le nombre d'étiquettes..pas de problèmes c'est long si la base contient beaucoup d'enregistrements
Le nombre d'étiquettes par ligne n'étant jamais le même ! J'aimerais pouvoir récupérer directement le nombre d'étiquettes dans une variable à partir de ma base de données je sais l'incorporer au document c'est simple par MERGEFIELD "quantite" mais dans le corps du document de fusion ça ne sert pas à grand chose La macro :
Sub ImprimeTout_zebra() ' ' zebra2 Macro ' Macro enregistrée le 01/01/2005 par Robert SERALINE 'With Documents("Form letter.doc").MailMerge
nb_lignes = InputBox("Nombre de lignes de la facture : " & ActiveDocument.MailMerge.DataSource.Name, "LIGNES", 1) For i = 1 To nb_lignes Step 1 nb_etiq = InputBox("Nombre d'étiquettes" & Chr(13) & " Pour la ligne " & i, "ETIQUETTES", 1)
ActivePrinter = "ZEBRA_LT2844" For j = 1 To nb_etiq Step 1 With ActiveDocument.MailMerge .Destination = wdSendToPrinter .SuppressBlankLines = True With .DataSource .FirstRecord = i .LastRecord = i End With .Execute Pause:úlse End With Next j Next i End Sub -- Robert SERALINE
LSteph
Pardon pour un datasource plutôt RecordCount
lSteph
"SoyOnsSérieUX" a écrit dans le message de news: %
Bonjour, J'ai réalisé un publipostage Word 2003 à partir d'une base de données Excel En manuel, lignes de données par ligne de données ça fonctionne parfaitement : Fusionner vers imprimante...enregistrement en cours...1 copie etc....vous connaissez .. J'essaie maintenant d'optimiser par des macros commandes J'ai conçu cete macro qui fonctionne en semi-automatique Mais Il faut renseigner le numéro de l'enregistrement puis le nombre d'étiquettes..pas de problèmes c'est long si la base contient beaucoup d'enregistrements
Le nombre d'étiquettes par ligne n'étant jamais le même ! J'aimerais pouvoir récupérer directement le nombre d'étiquettes dans une variable à partir de ma base de données je sais l'incorporer au document c'est simple par MERGEFIELD "quantite" mais dans le corps du document de fusion ça ne sert pas à grand chose La macro :
Sub ImprimeTout_zebra() ' ' zebra2 Macro ' Macro enregistrée le 01/01/2005 par Robert SERALINE 'With Documents("Form letter.doc").MailMerge
nb_lignes = InputBox("Nombre de lignes de la facture : " & ActiveDocument.MailMerge.DataSource.Name, "LIGNES", 1) For i = 1 To nb_lignes Step 1 nb_etiq = InputBox("Nombre d'étiquettes" & Chr(13) & " Pour la ligne " & i, "ETIQUETTES", 1)
ActivePrinter = "ZEBRA_LT2844" For j = 1 To nb_etiq Step 1 With ActiveDocument.MailMerge .Destination = wdSendToPrinter .SuppressBlankLines = True With .DataSource .FirstRecord = i .LastRecord = i End With .Execute Pause:úlse End With Next j Next i End Sub -- Robert SERALINE
Pardon pour un datasource plutôt RecordCount
lSteph
"SoyOnsSérieUX" <Gb45@wanadoo.fr> a écrit dans le message de news:
%233TOdJK8EHA.3828@TK2MSFTNGP09.phx.gbl...
Bonjour,
J'ai réalisé un publipostage Word 2003 à partir d'une base de données
Excel
En manuel, lignes de données par ligne de données ça fonctionne
parfaitement :
Fusionner vers imprimante...enregistrement en cours...1 copie etc....vous
connaissez ..
J'essaie maintenant d'optimiser par des macros commandes
J'ai conçu cete macro qui fonctionne en semi-automatique
Mais Il faut renseigner le numéro de l'enregistrement puis le nombre
d'étiquettes..pas de problèmes
c'est long si la base contient beaucoup d'enregistrements
Le nombre d'étiquettes par ligne n'étant jamais le même !
J'aimerais pouvoir récupérer directement le nombre d'étiquettes dans une
variable à partir de ma base de données
je sais l'incorporer au document c'est simple par MERGEFIELD "quantite"
mais dans le corps du document de fusion ça ne sert pas à grand chose
La macro :
Sub ImprimeTout_zebra()
'
' zebra2 Macro
' Macro enregistrée le 01/01/2005 par Robert SERALINE
'With Documents("Form letter.doc").MailMerge
nb_lignes = InputBox("Nombre de lignes de la facture : " &
ActiveDocument.MailMerge.DataSource.Name, "LIGNES", 1)
For i = 1 To nb_lignes Step 1
nb_etiq = InputBox("Nombre d'étiquettes" & Chr(13) & " Pour la ligne " &
i, "ETIQUETTES", 1)
ActivePrinter = "ZEBRA_LT2844"
For j = 1 To nb_etiq Step 1
With ActiveDocument.MailMerge
.Destination = wdSendToPrinter
.SuppressBlankLines = True
With .DataSource
.FirstRecord = i
.LastRecord = i
End With
.Execute Pause:úlse
End With
Next j
Next i
End Sub
--
Robert SERALINE
Rs47@wanadoo.fr
"SoyOnsSérieUX" a écrit dans le message de news: %
Bonjour, J'ai réalisé un publipostage Word 2003 à partir d'une base de données Excel En manuel, lignes de données par ligne de données ça fonctionne parfaitement : Fusionner vers imprimante...enregistrement en cours...1 copie etc....vous connaissez .. J'essaie maintenant d'optimiser par des macros commandes J'ai conçu cete macro qui fonctionne en semi-automatique Mais Il faut renseigner le numéro de l'enregistrement puis le nombre d'étiquettes..pas de problèmes c'est long si la base contient beaucoup d'enregistrements
Le nombre d'étiquettes par ligne n'étant jamais le même ! J'aimerais pouvoir récupérer directement le nombre d'étiquettes dans une variable à partir de ma base de données je sais l'incorporer au document c'est simple par MERGEFIELD "quantite" mais dans le corps du document de fusion ça ne sert pas à grand chose La macro :
Sub ImprimeTout_zebra() ' ' zebra2 Macro ' Macro enregistrée le 01/01/2005 par Robert SERALINE 'With Documents("Form letter.doc").MailMerge
nb_lignes = InputBox("Nombre de lignes de la facture : " & ActiveDocument.MailMerge.DataSource.Name, "LIGNES", 1) For i = 1 To nb_lignes Step 1 nb_etiq = InputBox("Nombre d'étiquettes" & Chr(13) & " Pour la ligne " & i, "ETIQUETTES", 1)
ActivePrinter = "ZEBRA_LT2844" For j = 1 To nb_etiq Step 1 With ActiveDocument.MailMerge .Destination = wdSendToPrinter .SuppressBlankLines = True With .DataSource .FirstRecord = i .LastRecord = i End With .Execute Pause:úlse End With Next j Next i End Sub -- Robert SERALINE
SoyOnsSérieUX
Merci LSteph mais.... RecordCount me donne le nombre d'enregistrements de la BD J'utilise un filtre pour ne pas tenir compte des enregidtrements incomplets..tout celà OK Ma question est : Comment faire pour récupérer dans chaque enregistrement le champ quantité qui renseigne le nombre d'étiquettes toujours différent d'un record à l'autre et le passer dans ma macro commande Avec une syntaxe du genre : nb_etiq = ["Valeur du champ quantité" de] ActiveDocument.MailMerge.DataSource.ActiveRecord
Pour le nombre d'enregistrement j'ai mis la ligne suivante :
nb_lignes = ActiveDocument.MailMerge.DataSource.RecordCount Pas de problèmes J'ai tenté de renseigner la variable nb_etiq par la ligne suivante :
ActiveDocument.MailMerge.DataSource.DataFields(7).value Mais j'obtiens toujours en réponse le nombred'étiquettes du Record(1)..pas moyen de changer de record
Robert SERALINE
Merci LSteph mais....
RecordCount me donne le nombre d'enregistrements de la BD
J'utilise un filtre pour ne pas tenir compte des enregidtrements
incomplets..tout celà OK
Ma question est : Comment faire pour récupérer dans chaque enregistrement
le champ quantité qui renseigne le nombre d'étiquettes toujours différent
d'un record à l'autre et le passer dans ma macro commande
Avec une syntaxe du genre :
nb_etiq = ["Valeur du champ quantité" de]
ActiveDocument.MailMerge.DataSource.ActiveRecord
Pour le nombre d'enregistrement j'ai mis la ligne suivante :
nb_lignes = ActiveDocument.MailMerge.DataSource.RecordCount
Pas de problèmes
J'ai tenté de renseigner la variable nb_etiq par la ligne suivante :
ActiveDocument.MailMerge.DataSource.DataFields(7).value
Mais j'obtiens toujours en réponse le nombred'étiquettes du Record(1)..pas
moyen de changer de record
Merci LSteph mais.... RecordCount me donne le nombre d'enregistrements de la BD J'utilise un filtre pour ne pas tenir compte des enregidtrements incomplets..tout celà OK Ma question est : Comment faire pour récupérer dans chaque enregistrement le champ quantité qui renseigne le nombre d'étiquettes toujours différent d'un record à l'autre et le passer dans ma macro commande Avec une syntaxe du genre : nb_etiq = ["Valeur du champ quantité" de] ActiveDocument.MailMerge.DataSource.ActiveRecord
Pour le nombre d'enregistrement j'ai mis la ligne suivante :
nb_lignes = ActiveDocument.MailMerge.DataSource.RecordCount Pas de problèmes J'ai tenté de renseigner la variable nb_etiq par la ligne suivante :
ActiveDocument.MailMerge.DataSource.DataFields(7).value Mais j'obtiens toujours en réponse le nombred'étiquettes du Record(1)..pas moyen de changer de record
Robert SERALINE
LSteph
Re, bonjour, Effectivement je n'avais pas compris cela. Pour stocker dans variable j'ai testé avec ceci donc sans le .value:
et j'ai bien les valeurs du champ dans la variable selon les changements d'enregistrement . Si ce n'est pas là la cause, désolé , je ne vois pas ce qui coince.
Bonne soirée.
'lSteph
"SoyOnsSérieUX" a écrit dans le message de news:
Merci LSteph mais.... RecordCount me donne le nombre d'enregistrements de la BD J'utilise un filtre pour ne pas tenir compte des enregidtrements incomplets..tout celà OK Ma question est : Comment faire pour récupérer dans chaque enregistrement le champ quantité qui renseigne le nombre d'étiquettes toujours différent d'un record à l'autre et le passer dans ma macro commande Avec une syntaxe du genre : nb_etiq = ["Valeur du champ quantité" de] ActiveDocument.MailMerge.DataSource.ActiveRecord
Pour le nombre d'enregistrement j'ai mis la ligne suivante :
nb_lignes = ActiveDocument.MailMerge.DataSource.RecordCount Pas de problèmes J'ai tenté de renseigner la variable nb_etiq par la ligne suivante :
ActiveDocument.MailMerge.DataSource.DataFields(7).value Mais j'obtiens toujours en réponse le nombred'étiquettes du Record(1)..pas moyen de changer de record
Robert SERALINE
Re, bonjour,
Effectivement je n'avais pas compris cela.
Pour stocker dans variable j'ai testé avec ceci donc sans le .value:
et j'ai bien les valeurs du champ dans la variable selon les changements
d'enregistrement .
Si ce n'est pas là la cause, désolé , je ne vois pas ce qui coince.
Bonne soirée.
'lSteph
"SoyOnsSérieUX" <Gb45@wanadoo.fr> a écrit dans le message de news:
eSbyt1L8EHA.3076@TK2MSFTNGP15.phx.gbl...
Merci LSteph mais....
RecordCount me donne le nombre d'enregistrements de la BD
J'utilise un filtre pour ne pas tenir compte des enregidtrements
incomplets..tout celà OK
Ma question est : Comment faire pour récupérer dans chaque enregistrement
le champ quantité qui renseigne le nombre d'étiquettes toujours différent
d'un record à l'autre et le passer dans ma macro commande
Avec une syntaxe du genre :
nb_etiq = ["Valeur du champ quantité" de]
ActiveDocument.MailMerge.DataSource.ActiveRecord
Pour le nombre d'enregistrement j'ai mis la ligne suivante :
nb_lignes = ActiveDocument.MailMerge.DataSource.RecordCount
Pas de problèmes
J'ai tenté de renseigner la variable nb_etiq par la ligne suivante :
ActiveDocument.MailMerge.DataSource.DataFields(7).value
Mais j'obtiens toujours en réponse le nombred'étiquettes du Record(1)..pas
moyen de changer de record
et j'ai bien les valeurs du champ dans la variable selon les changements d'enregistrement . Si ce n'est pas là la cause, désolé , je ne vois pas ce qui coince.
Bonne soirée.
'lSteph
"SoyOnsSérieUX" a écrit dans le message de news:
Merci LSteph mais.... RecordCount me donne le nombre d'enregistrements de la BD J'utilise un filtre pour ne pas tenir compte des enregidtrements incomplets..tout celà OK Ma question est : Comment faire pour récupérer dans chaque enregistrement le champ quantité qui renseigne le nombre d'étiquettes toujours différent d'un record à l'autre et le passer dans ma macro commande Avec une syntaxe du genre : nb_etiq = ["Valeur du champ quantité" de] ActiveDocument.MailMerge.DataSource.ActiveRecord
Pour le nombre d'enregistrement j'ai mis la ligne suivante :
nb_lignes = ActiveDocument.MailMerge.DataSource.RecordCount Pas de problèmes J'ai tenté de renseigner la variable nb_etiq par la ligne suivante :
ActiveDocument.MailMerge.DataSource.DataFields(7).value Mais j'obtiens toujours en réponse le nombred'étiquettes du Record(1)..pas moyen de changer de record
Robert SERALINE
SoyOnsSérieUX
Merci beaucoup Lsteph et encore Bonne année Grace à toi(vous) j'ai pu terminer ma macro que je te transmets..elle fonctionne très bien Sub ImprimeTout() ' Macro enregistrée le 02/01/2005 par Robert SERALINE ActiveDocument.MailMerge.OpenDataSource Name:= _ ActiveDocument.Path & "etiq05.xls", _ ConfirmConversions:úlse, ReadOnly:úlse, LinkToSource:=True, _ AddToRecentFiles:úlse, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:úlse, _ Format:=wdOpenFormatAuto, Connection:= _ "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User IDmin;Data Source¬tiveDocument.Path &etiq05.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Dat" _ , SQLStatement:="SELECT * FROM `Etiq$`", SQLStatement1:="", SubType:= _ wdMergeSubTypeAccess ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord 'Place le pointeur sur le 1er Record nb_lignes = ActiveDocument.MailMerge.DataSource.RecordCount 'compte le nbre d'enregistrements For i = 1 To nb_lignes Step 1 ' ActivePrinter = "cotationetiq" ' nb_etiq = ActiveDocument.MailMerge.DataSource.DataFields(7) For j = 1 To nb_etiq Step 1
With ActiveDocument.MailMerge .Destination = wdSendToPrinter .SuppressBlankLines = True With .DataSource .FirstRecord = i .LastRecord = i End With ' .Execute Pause:úlse 'neutralisation de l'impression pour tester
End With
Next j ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord 'ta contribution et Merci
If ActiveDocument.MailMerge.DataSource.DataFields(4) = 0 Then GoTo Fin 'pas de prix de vente STOP Next i Fin: ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord End Sub
-- Robert SERALINE
Merci beaucoup Lsteph et encore Bonne année
Grace à toi(vous) j'ai pu terminer ma macro que je te transmets..elle
fonctionne très bien
Sub ImprimeTout()
' Macro enregistrée le 02/01/2005 par Robert SERALINE
ActiveDocument.MailMerge.OpenDataSource Name:= _
ActiveDocument.Path & "etiq05.xls", _
ConfirmConversions:úlse, ReadOnly:úlse, LinkToSource:=True, _
AddToRecentFiles:úlse, PasswordDocument:="", PasswordTemplate:="",
_
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:úlse,
_
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User IDmin;Data
Source¬tiveDocument.Path &etiq05.xls;Mode=Read;Extended
Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet
OLEDB:Registry Path="""";Jet OLEDB:Dat" _
, SQLStatement:="SELECT * FROM `Etiq$`", SQLStatement1:="",
SubType:= _
wdMergeSubTypeAccess
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord 'Place
le pointeur sur le 1er Record
nb_lignes = ActiveDocument.MailMerge.DataSource.RecordCount
'compte le nbre d'enregistrements
For i = 1 To nb_lignes Step 1
' ActivePrinter = "\cotationetiq"
'
nb_etiq = ActiveDocument.MailMerge.DataSource.DataFields(7) For j =
1 To nb_etiq Step 1
With ActiveDocument.MailMerge
.Destination = wdSendToPrinter
.SuppressBlankLines = True
With .DataSource
.FirstRecord = i
.LastRecord = i
End With
' .Execute Pause:úlse 'neutralisation de l'impression pour
tester
End With
Next j
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord 'ta
contribution et Merci
If ActiveDocument.MailMerge.DataSource.DataFields(4) = 0 Then GoTo Fin
'pas de prix de vente STOP
Next i
Fin:
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord
End Sub
Merci beaucoup Lsteph et encore Bonne année Grace à toi(vous) j'ai pu terminer ma macro que je te transmets..elle fonctionne très bien Sub ImprimeTout() ' Macro enregistrée le 02/01/2005 par Robert SERALINE ActiveDocument.MailMerge.OpenDataSource Name:= _ ActiveDocument.Path & "etiq05.xls", _ ConfirmConversions:úlse, ReadOnly:úlse, LinkToSource:=True, _ AddToRecentFiles:úlse, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:úlse, _ Format:=wdOpenFormatAuto, Connection:= _ "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User IDmin;Data Source¬tiveDocument.Path &etiq05.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Dat" _ , SQLStatement:="SELECT * FROM `Etiq$`", SQLStatement1:="", SubType:= _ wdMergeSubTypeAccess ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord 'Place le pointeur sur le 1er Record nb_lignes = ActiveDocument.MailMerge.DataSource.RecordCount 'compte le nbre d'enregistrements For i = 1 To nb_lignes Step 1 ' ActivePrinter = "cotationetiq" ' nb_etiq = ActiveDocument.MailMerge.DataSource.DataFields(7) For j = 1 To nb_etiq Step 1
With ActiveDocument.MailMerge .Destination = wdSendToPrinter .SuppressBlankLines = True With .DataSource .FirstRecord = i .LastRecord = i End With ' .Execute Pause:úlse 'neutralisation de l'impression pour tester
End With
Next j ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord 'ta contribution et Merci
If ActiveDocument.MailMerge.DataSource.DataFields(4) = 0 Then GoTo Fin 'pas de prix de vente STOP Next i Fin: ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord End Sub