Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Compléter automatiquement des cellules

13 réponses
Avatar
SecondSight
Bonjour ! :)

J'utilise Excel 2000 et je dispose d'un fichier excel dans lequel j'ai :
- une feuille contenant trois reçus identiques.
- une feuillle contenant la liste de mes élèves (dans une seule colonne :
cellules A1, A2, A3, etc.).

J'ai environ 250 reçus à imprimer et à compléter à la main pour vendredi...

Serait-il possible de :
1- Faire apparaître automatiquement les noms des élèves dans chaque reçu ?
(cellules H9, H33 et H57 et aussi pour le talon : B7, B31 et B55).
2- Faire apparaître automatiquement le numéro de chaque reçu, de 1 à 250 ?
(cellules M5, M29, M53 et C4, C28 et C52)

Si cela est faisable, pourriez-vous m'aider à le faire ou me donner des
indications ?

Merci pour votre aide ! :)

10 réponses

1 2
Avatar
Misange
Bonjour
Le publipostage est fait pour toi !
sur la faqword tu trouveras tout un tutoriel là dessus pour exploiter
tes données excel dans word bien proprement.
http://faqword.free.fr

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonjour ! :)

J'utilise Excel 2000 et je dispose d'un fichier excel dans lequel j'ai :
- une feuille contenant trois reçus identiques.
- une feuillle contenant la liste de mes élèves (dans une seule colonne :
cellules A1, A2, A3, etc.).

J'ai environ 250 reçus à imprimer et à compléter à la main pour vendredi...

Serait-il possible de :
1- Faire apparaître automatiquement les noms des élèves dans chaque reçu ?
(cellules H9, H33 et H57 et aussi pour le talon : B7, B31 et B55).
2- Faire apparaître automatiquement le numéro de chaque reçu, de 1 à 250 ?
(cellules M5, M29, M53 et C4, C28 et C52)

Si cela est faisable, pourriez-vous m'aider à le faire ou me donner des
indications ?

Merci pour votre aide ! :)




Avatar
isabelle
bonjour,

voici un exemple,

Sub Macro1()
Dim Msg, Style, Title, Response
Msg = "Souhaitez-vous continuer?"
Style = vbYesNo + vbCritical + vbDefaultButton2
Title = "Impression des reçues"

For i = 1 To 200 Step 3

Range("B7") = Sheets("Feuil1").Range("A" & i)
Range("H9") = Sheets("Feuil1").Range("A" & i)
Range("B31") = Sheets("Feuil1").Range("A" & i + 1)
Range("H33") = Sheets("Feuil1").Range("A" & i + 1)
Range("B55") = Sheets("Feuil1").Range("A" & i + 2)
Range("H57") = Sheets("Feuil1").Range("A" & i + 2)

Range("C4") = Sheets("Feuil1").Range("A" & i)
Range("M5") = Sheets("Feuil1").Range("A" & i)
Range("C28") = Sheets("Feuil1").Range("A" & i + 1)
Range("M29") = Sheets("Feuil1").Range("A" & i + 1)
Range("C52") = Sheets("Feuil1").Range("A" & i + 2)
Range("M53") = Sheets("Feuil1").Range("A" & i + 2)

Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then ActiveSheet.PrintOut

Next
End Sub


isabelle


Bonjour ! :)

J'utilise Excel 2000 et je dispose d'un fichier excel dans lequel j'ai :
- une feuille contenant trois reçus identiques.
- une feuillle contenant la liste de mes élèves (dans une seule colonne :
cellules A1, A2, A3, etc.).

J'ai environ 250 reçus à imprimer et à compléter à la main pour vendredi...

Serait-il possible de :
1- Faire apparaître automatiquement les noms des élèves dans chaque reçu ?
(cellules H9, H33 et H57 et aussi pour le talon : B7, B31 et B55).
2- Faire apparaître automatiquement le numéro de chaque reçu, de 1 à 250 ?
(cellules M5, M29, M53 et C4, C28 et C52)

Si cela est faisable, pourriez-vous m'aider à le faire ou me donner des
indications ?

Merci pour votre aide ! :)




Avatar
SecondSight
Bonjour !

C'est pas très clair... Je n'obtiens que des cases vides dans word.

J'ai déjà mon reçu de prêt dans Excel, dois-je d'abord le copier dans Word
ou le recréer complètement ? Et comment relier ensuite les cases n° et nom à
la feuille Excel ?

Merci ! :)
Avatar
SecondSight
Je faisais un peu de Visual Basic il y a quelques années (niveau débutant).
C'est sympa de retrouver ça dans Excel.

J'ai réussi à imprimer, mais seulement une page, en faisant des essais avec
un petit document de 15 élèves.
Voici comment j'ai modifié le code :

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Sub Impression_reçus()
'
' Impression_reçus Macro
' Macro enregistrée le 22/08/2007 par SecondSight'
Dim Msg, Style, Title, Response
Msg = "Souhaitez-vous continuer?"
Style = vbYesNo + vbCritical + vbDefaultButton2
Title = "Impression des reçus"

Static a As Boolean
a = True

For i = 2 To 15 Step 3 ' commencer à 2 car 1 est la ligne des titres de
colonnes

Range("B7") = Sheets("cm1").Range("B" & i) 'nom eleve dans talon du 1er reçu
Range("H9") = Sheets("cm1").Range("B" & i) 'nom eleve dans 1er reçu
Range("B31") = Sheets("cm1").Range("B" & i + 1) 'nom eleve dans talon 2ème
reçu
Range("H33") = Sheets("cm1").Range("B" & i + 1) 'nom eleve dans reçu 2
Range("B55") = Sheets("cm1").Range("B" & i + 2) 'nom eleve dans talon 1er
reçu
Range("H57") = Sheets("cm1").Range("B" & i + 2) 'nom eleve dans reçu 3

Range("C4") = Sheets("cm1").Range("A" & i) 'numeros des reçus dans colonne A
de feuille cm1
Range("M5") = Sheets("cm1").Range("A" & i) 'idem ici et dessous - reçus des
autres cellules
Range("C28") = Sheets("cm1").Range("A" & i + 1)
Range("M29") = Sheets("cm1").Range("A" & i + 1)
Range("C52") = Sheets("cm1").Range("A" & i + 2)
Range("M53") = Sheets("cm1").Range("A" & i + 2)

If a = True Then 'demander une seule fois
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then ActiveSheet.PrintOut
a = False
End If

Next

'
Application.CommandBars("Stop Recording").Visible = False
Application.Goto Reference:="Impression_reçus"
End Sub

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

J'ai imprimé dans un fichier PDF histoire d'économiser de l'encre. :)
Mais pourquoi est-ce que ça ne m'imprime que les trois premiers reçus (sur
les 15), c'est-à-dire la première page seulement ?

Merci. :)
Avatar
SecondSight
Bon, j'ai compris, c'est à cause de la condition que j'ai ajoutée...
Va falloir que je trouve une solution pour ne pas cliquer 80 fois sur le Ok
pour valider l'impression des 250 reçus... :)

Merci pour votre aide ! :)
Avatar
SecondSight
Je vais adopter la solution en VBA.

Merci pour votre aide. :)
Avatar
isabelle
bonjour SecondSight,

dans le dernier "IF" tu remet a = False
donc à la seconde boucle la question de print ("Souhaitez-vous continuer?") n'est pas demandé vue que a = False.

isabelle


Je faisais un peu de Visual Basic il y a quelques années (niveau débutant).
C'est sympa de retrouver ça dans Excel.

J'ai réussi à imprimer, mais seulement une page, en faisant des essais avec
un petit document de 15 élèves.
Voici comment j'ai modifié le code :

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Sub Impression_reçus()
'
' Impression_reçus Macro
' Macro enregistrée le 22/08/2007 par SecondSight'
Dim Msg, Style, Title, Response
Msg = "Souhaitez-vous continuer?"
Style = vbYesNo + vbCritical + vbDefaultButton2
Title = "Impression des reçus"

Static a As Boolean
a = True

For i = 2 To 15 Step 3 ' commencer à 2 car 1 est la ligne des titres de
colonnes

Range("B7") = Sheets("cm1").Range("B" & i) 'nom eleve dans talon du 1er reçu
Range("H9") = Sheets("cm1").Range("B" & i) 'nom eleve dans 1er reçu
Range("B31") = Sheets("cm1").Range("B" & i + 1) 'nom eleve dans talon 2ème
reçu
Range("H33") = Sheets("cm1").Range("B" & i + 1) 'nom eleve dans reçu 2
Range("B55") = Sheets("cm1").Range("B" & i + 2) 'nom eleve dans talon 1er
reçu
Range("H57") = Sheets("cm1").Range("B" & i + 2) 'nom eleve dans reçu 3

Range("C4") = Sheets("cm1").Range("A" & i) 'numeros des reçus dans colonne A
de feuille cm1
Range("M5") = Sheets("cm1").Range("A" & i) 'idem ici et dessous - reçus des
autres cellules
Range("C28") = Sheets("cm1").Range("A" & i + 1)
Range("M29") = Sheets("cm1").Range("A" & i + 1)
Range("C52") = Sheets("cm1").Range("A" & i + 2)
Range("M53") = Sheets("cm1").Range("A" & i + 2)

If a = True Then 'demander une seule fois
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then ActiveSheet.PrintOut
a = False
End If

Next

'
Application.CommandBars("Stop Recording").Visible = False
Application.Goto Reference:="Impression_reçus"
End Sub

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

J'ai imprimé dans un fichier PDF histoire d'économiser de l'encre. :)
Mais pourquoi est-ce que ça ne m'imprime que les trois premiers reçus (sur
les 15), c'est-à-dire la première page seulement ?

Merci. :)




Avatar
isabelle
essai comme ça :

If a = True Then 'demander une seule fois
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then ActiveSheet.PrintOut
a = False
Else
ActiveSheet.PrintOut
End If


isabelle


Bon, j'ai compris, c'est à cause de la condition que j'ai ajoutée...
Va falloir que je trouve une solution pour ne pas cliquer 80 fois sur le Ok
pour valider l'impression des 250 reçus... :)

Merci pour votre aide ! :)




Avatar
SecondSight
Oui, c'est ce que j'ai fait et ça fonctionne. :)

L'impression est un peu lente (ça s'arrête et ça reprend), mais ça ira
beaucoup plus vite que si j'écris à la main, les noms, numéros de reçus,...
:)

Je vais essayer d'améliorer un peu en fonction de mes besoins :
- ajouter un bouton qui appelle la macro.
- mettre "page 1" à la place de "ActiveSheet" ou imprimer plusieurs pages.
etc.

Merci beaucoup ! :)
Avatar
isabelle
bonjour SecondSight,

une autre solution serait que la macro servent uniquement à mettre les numéros de reçu,

et qu'au cellule 'nom eleve "
il y ai une formule équivalent au no. de recue

=INDEX(Feuil1!B:B;EQUIV(C4;cm1!A:A;0))

isabelle


Oui, c'est ce que j'ai fait et ça fonctionne. :)

L'impression est un peu lente (ça s'arrête et ça reprend), mais ça ira
beaucoup plus vite que si j'écris à la main, les noms, numéros de reçus,...
:)

Je vais essayer d'améliorer un peu en fonction de mes besoins :
- ajouter un bouton qui appelle la macro.
- mettre "page 1" à la place de "ActiveSheet" ou imprimer plusieurs pages.
etc.

Merci beaucoup ! :)




1 2