Bonjour à tous,

Je souhaite réaliser une fonction sur mon fichier excel qui me sélectionne plusieurs lignes de ma base données selon 1 critère, que chacune des lignes soit renseignée tour à tour dans un formulaire qui lui s'imprime alors pour finir- 1 formulaire l'un après l'autre. J'ai commencé à rédiger un code mais je rencontre des difficultés.

- Ma base de données

Pièce jointe 341557

Chaque case renseignée est un lien avec un autre fichier où l'on procède à la saisie manuelle des informations. Je souhaite trier ma base de données selon le critère de la 2ième colonne "Etat:" et afficher seulement les cases vides. Je souhaite ensuite copier une à une les lignes d'informations, puis coller tour à tour les valeurs dans une autre feuille de mon classeur dans une ligne choisie arbitrairement dont les cellules sont liées à mon formulaire suivant que je souhaite par la suite imprimer automatiquement:

Pièce jointe 341567

Dans mon code, je rencontre la difficulté suivante :

Une fois ma base de données triée selon le critère choisi, je compte le nombre de ligne non vide pour effectuer ma boucle. Je souhaite alors copier/coller une à une les lignes contenant de l'information mais je ne sais pas comment récupérer le bon indice de ligne qui me permettra de copier la bonne ligne pour la coller ensuite. C'est à dire les numéros de lignes excel associés à mes lignes voulues. De plus, selon le filtre les numéros de lignes ne se suivent pas ce qui rajoute une difficulté pour ma boucle.

J'espère avoir été assez clair pour expliquer ma difficulté.

- Mon code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Sub IMPRESSION_DEMANDES_EN_ATTENTE()

Dim i As Integer, derniere_ligne As Integer

 With Worksheets("P.MICHAUD")
    .Activate
    .Unprotect Password:="LEAN"
    On Error Resume Next
    .ShowAllData
    On Error GoTo 0

    .Range("$A$1:$U$2266").AutoFilter Field:=2, Criteria1:="=" 'filtre  -> case vide
    
derniere_ligne = Worksheets("P.MICHAUD").Range("A" & Rows.Count).End(xlUp).Row 'Compte nombre de ligne non vide

    For i = 2 To derniere_ligne 'Mauvais indices choisis
    
    Set rngSource = Worksheets("P.MICHAUD").Range("F" & i & ":S" & i) 'copie la ligne d'information voulue
  
    With Worksheets("FORMULAIRE")
     
     .Range("AH1").Resize(1, rngSource.Count).Value = rngSource.Value 'colle la ligne pour remplissage automatique du formulaire

     .Range("B1:K32").Select
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
    .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.7)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = False
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    Selection.PrintOut Copies:=1, Collate:=True
     
    End With
     
    Next
    
End With
  
  

End Sub