impression de 3 fiches par page au départ d'une base de donnée

paolonam1958

XLDnaute Nouveau
Bonjour à tous.
Je vous suis depuis quelques années et grâce à de nombreux "experts" parmi vous, je suis parvenu à automatiser pas mal de tâches.
Je suis souvent en admiration devant la simplicité des codes proposés. J'admire tout simplement votre dévouement étant passionné moi-même, .. mais pour ma part je ne suis qu'un très simple "adaptateur copieur-colleur" de code...:)
J'ai beau parcourir des milliers de lignes depuis des semaines, je ne trouve pas le code qui me convient.
C'est une base de données à partir de laquelle je souhaite imprimer non pas 1 fiche par page mais 3 fiches.
La ligne 1 de bdd remplit la fiche 1.
La ligne 2 de bdd remplit la fiche 2.
La ligne 3 de bdd remplit la fiche 3.
3 fiches donc se suivent sur la page A4.
On imprime la page
On efface les données des 3 fiches
On passe aux 3 fiches suivantes jusqu'à la fin de la bdd
Voir fichier joint:
le code du bouton déjà présent remplit la fiche 1
et si quelqu'un pouvait me donner un coup de main pour le compléter
ou un code similaire que j'adapterai
onglet "MEF" = bdd - onglet "Modfiche" = page A4 avec les 3 fiches
Un tout grand merci d'avance.
 

Pièces jointes

  • fichier test pour xld.xls
    98 KB · Affichages: 72
Dernière édition:
C

Compte Supprimé 979

Guest
Re : impression de 3 fiches par page au départ d'une base de donnée

Bonjour Paolonam1958

Désolé pour ton fil resté sans réponse depuis 4 jours :rolleyes:

Voici le code qu'il te faut
Code:
Sub Bouton1_Clic()
  Dim ShtS As Worksheet, TabCel(3) As String
  Dim DLig As Long, Inc As Integer, Lig As Long
  ' Définir les 3 plages à remplir
  TabCel(1) = "F6": TabCel(2) = "F15": TabCel(3) = "F24"
  ' Définir la feuille source
  Set ShtS = Sheets("MEF")
  ' Trouver la dernière remplie de la feuille MEF
  DLig = ShtS.Range("A" & Rows.Count).End(xlUp).Row
  ' Avec la feuille ModFiche
  With Sheets("Modfiche")
  ' Pour chaque ligne par pas de 3 de la feuille source
  For Lig = 2 To DLig Step 3
    ' Pour les 3 fiches à remplir
    For Inc = 1 To 3
      .Range(TabCel(Inc)).Value = ShtS.Range("A" & Lig + Inc - 1).Value
      .Range(TabCel(Inc)).Offset(1, 0).Value = ShtS.Range("D" & Lig + Inc - 1).Value
      .Range(TabCel(Inc)).Offset(2, 0).Value = ShtS.Range("B" & Lig + Inc - 1).Value
    Next Inc
      ' Imprimer la feuille
      .PrintOut
  Next Lig
  End With
End Sub

A+
 

Pièces jointes

  • Paolonam1958_fichier test pour xld.xls
    95 KB · Affichages: 63

paolonam1958

XLDnaute Nouveau
Re : impression de 3 fiches par page au départ d'une base de donnée

Bonjour Bruno
Génial !
Il me reste 1 question pour remplir cette fiche avec plus de données encore:
Si je souhaite maintenant ajouter une plage de 2 lignes en F4 + F13 + F22, avec les données des colonnes F+G de la bdd "MEF"
Pouvez-vous me conseiller sur la modification à faire sur le code.
Un tout grand merci d'avance,
 
C

Compte Supprimé 979

Guest
Re : impression de 3 fiches par page au départ d'une base de donnée

Re,

Pour ce faire, il suffit de changer les 3 cellules de départ et d'ajouter des lignes pour chaque valeur à inscrire
ce qui donne
Code:
Sub Bouton1_Clic()
  Dim ShtS As Worksheet, TabCel(3) As String
  Dim DLig As Long, Inc As Integer, Lig As Long
  ' Définir les 3 cellules de départ à remplir
  TabCel(1) = "F4": TabCel(2) = "F13": TabCel(3) = "F22"
  ' Définir la feuille source
  Set ShtS = Sheets("MEF")
  ' Trouver la dernière remplie de la feuille MEF
  DLig = ShtS.Range("A" & Rows.Count).End(xlUp).Row
  ' Avec la feuille ModFiche
  With Sheets("Modfiche")
  ' Pour chaque ligne par pas de 3 de la feuille source
  For Lig = 2 To DLig Step 3
    ' Pour les 3 fiches à remplir
    For Inc = 1 To 3
      .Range(TabCel(Inc)).Value = ShtS.Range("F" & Lig + Inc - 1).Value
      ' Remplir la cellule de départ + 1 ligne
      .Range(TabCel(Inc)).Offset(1, 0).Value = ShtS.Range("G" & Lig + Inc - 1).Value
      ' Remplir la cellule de départ + 2 lignes, etc ...
      .Range(TabCel(Inc)).Offset(2, 0).Value = ShtS.Range("A" & Lig + Inc - 1).Value
      .Range(TabCel(Inc)).Offset(3, 0).Value = ShtS.Range("D" & Lig + Inc - 1).Value
      .Range(TabCel(Inc)).Offset(4, 0).Value = ShtS.Range("B" & Lig + Inc - 1).Value
    Next Inc
      ' Imprimer la feuille
      .PrintOut
  Next Lig
  End With
End Sub

A+
 

paolonam1958

XLDnaute Nouveau
Re : impression de 3 fiches par page au départ d'une base de donnée

Re-bonjour
Excellent !
Le code répond parfaitement à mes besoins et reste évolutif écrit comme cela.
On peut tout modifier, le nb de champs/fiche, le nb de fiches/page
Encore un tout grand merci à vous et à tous les autres, de qui j'apprends un peu à chaque fois...:)
 

Discussions similaires