pourquoi mon code ne marche pas

daniel_c

XLDnaute Nouveau
Bonjour le forum

Etant novice en VBA, j'ai réalisé ce classeur en récupérant des codes sur ce forum.

Quatre feuilles dans mon classeur:

Liste = les articles en référence.

Saisie = le masque des saisie;
je choisis le modèle dans une liste déroulante,
j'obtiens les références des articles,
je saisis le matricule et les quantités,
je valide l'enregistrement avec le bouton.

Rapport = les saisies validées s'enregistrent dans cette feuille.

Toute cette partie fonctionne correctement


Imprimer = je saisie la date en "B6",
je clique sur imprimer,
je désire que les lignes de la feuille 'Rapport',
ayant la même date que celle saisie en "B6",
s'enregistre dans le tableau (seulement les colonnes "D" à "G"),
puis que l'impression se fasse sur l'imprimante par défaut.

Mais là, ça marche pas!

Qu'est ce qui ne va pas dans le code du module 2 ?

Merci de me venir en aide SVP


Sinon est-il possible lorsque l'erreur sera corrigée que le tableau soit vidé aprés l'impression ?
 

Pièces jointes

  • Retour consommables.zip
    21.3 KB · Affichages: 24
  • Retour consommables.zip
    21.3 KB · Affichages: 22
  • Retour consommables.zip
    21.3 KB · Affichages: 24

daniel_c

XLDnaute Nouveau
Re : pourquoi mon code ne marche pas

Bonsoir bhbh, le forum

Avec cette version là, ça devrait mieux le faire

Merci
 

Pièces jointes

  • Retour consommables.zip
    21.4 KB · Affichages: 28
  • Retour consommables.zip
    21.4 KB · Affichages: 28
  • Retour consommables.zip
    21.4 KB · Affichages: 26

Cousinhub

XLDnaute Barbatruc
Re : pourquoi mon code ne marche pas

Re-,

l'erreur provenait de la boucle For Lig....

Tu prends la colonne I, pour déterminer ta dernière ligne remplie....

Prends plutôt la colonne A

et pour supprimer après impression, regarde les modifs :

Code:
Sub imprimer()
Application.ScreenUpdating = False
    Dim Lig As Long
    Dim F2 As Worksheet, F3 As Worksheet
    Dim x
    Set F2 = Sheets("Rapport")
    Set F3 = Sheets("Imprimé")
    With F3
    For Lig = 1 To F2.[A65536].End(xlUp).Row
        If F2.Cells(Lig, "A") = .Cells(6, "B") Then
            F2.Range(F2.Cells(Lig, "D"), F2.Cells(Lig, "G")).Copy
            F.Cells(F.Cells(65536, "D").End(xlUp)(2).Row, _
            "A").PasteSpecial xlPasteValues
        End If
    Next
    Application.CutCopyMode = False
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    .Range(.Cells(10, 1), .Cells(49, 4)).ClearContents
    End With
Application.ScreenUpdating = True
End Sub
 

daniel_c

XLDnaute Nouveau
Re : pourquoi mon code ne marche pas

Bonsoir bhbh, le forum

Merci beaucoup bhbh, maintenant ça marche

Il restait un petit bug

F.Cells(F.Cells(65536, "D").End(xlUp)(2).Row, _

que j'ai remplacé par

F3.Cells(F3.Cells(65536, "D").End(xlUp)(2).Row, _
et là tout roule

Encore merci et bonne soirée


Daniel
 

Discussions similaires

Réponses
13
Affichages
666
Réponses
93
Affichages
2 K
Réponses
4
Affichages
283

Statistiques des forums

Discussions
312 205
Messages
2 086 199
Membres
103 156
dernier inscrit
Ludo94130