CODE pour imprimer par date

bonsoir le forum

voila mon soucis ,j'ai mis un userform pour m'imprimer date a date

mais voila la premières il fonctionne au ralentis et deux il m'affiche quatre jours avant le début des date que je demander

sinon il fonctionne mais pourquoi il m'affiche quatre jours avant

ou est mon erreur

avec tout mes remercîments pour votre aide

Private Sub CommandButton1_Click()

Dim derlig&, i&, plage As Range, deb As Date, fin As Date

With Sheets("basededonnéesglobal")
    derlig = .Range("a" & Rows.Count).End(xlUp).Row

    deb = CDate(TextBox1.Value)
    fin = CDate(TextBox2.Value)

    For i = 6 To derlig
        If CDate(.Cells(i, 1)) >= deb And CDate(.Cells(i, 1)) <= fin Then
            .Cells(i, 1).EntireRow.Hidden = False
        Else
            .Cells(i, 1).EntireRow.Hidden = True
        End If
    Next i
        Set plage = .Range("a1:n" & .Range("a" & Rows.Count).End(xlUp).Row)

        Unload Me
        .PageSetup.PrintArea = plage.Address
        .PrintPreview
        .Rows("2:106").Hidden = False
End With
End Sub

Bonjour,

La date n'est pas version Anglaise par hasard ?

Cela le fait pour toutes les dates ?

Le fait que ce soit si long est surement du a un trop grand nombre de ligne. Combien de ligne possède ta feuille ?

Tu peux m'envoyer juste la feuille basededonnéesglobal (en effacant les données de B à N) et l'userform que je teste sur mon PC ?

MERCI pour la réponse

non le date sont 30/06/2020

deuxièmes question oui je pense que cela est du a la longeur des lignes la moyenne est de 45 pour une journée

oui demain je mettrais la feuille base de données global avec sont userform

a demain

merci encore pour ton aide

Pas de problème je vais patienter jusqu'a demain !

Bonne fin de soirée

bonjour

voila le userform en question avec la base de données global les donnée sont imaginée mais le plus proche de la réalisation

j'ai mis ses lignes pour pas devoir faire des ligne pour rien mieux a faire

enfin j'espère

3essaie-aide.xlsm (44.04 Ko)

que vous allez pouvoir résoudre mon problème et vous en remercie

amicalement

Bonjour à tous,

En présumant que la plage est triée sur la colonne A ...

Le code commençait à la ligne 6 et la plage commence à la ligne 2,

Un essai ...

Est-ce plus rapide ?

Private Sub CommandButton1_Click()
Dim derlig&, i&, plage As Range, deb As Date, fin As Date
Dim Ld&, Lf&

    Application.ScreenUpdating = False  ' gèle l'affichage

    With Sheets("BaseDeDonnéesGlobal")
        derlig = .UsedRange.Rows.Count                  ' trouve la dernière ligne
        .Rows("2:" & derlig).Hidden = False             ' s'assurer que toutes les lignes sont visibles
        deb = CDate(TextBox1.Value)                     ' date début
        fin = CDate(TextBox2.Value)                     ' date fin

        For i = 2 To derlig
            If CDate(.Cells(i, 1)) < deb Then Ld = i    ' si avant date début, mémorise la ligne

            If CDate(.Cells(i, 1)) > fin Then           ' mémorise la ligne après date fin
                Lf = i
                Exit For                                ' met fin à la boucle
            End If
        Next i

        Rows("2:" & Ld).EntireRow.Hidden = True         ' masque la plage
        Rows(Lf & ":" & derlig).EntireRow.Hidden = True ' masque la plage

        Set plage = .Range("a1:N" & .Range("a" & Rows.Count).End(xlUp).Row) ' nouvelle plage d'impression
        .PageSetup.PrintArea = plage.Address
        Unload Me
        .PrintPreview
        .Rows("2:" & derlig).Hidden = False             ' s'assurer que toutes les lignes sont visibles
    End With
End Sub

ric

merci ric d'être toujours disponible quand ont a besoin

oui effectivement cela est plus rapide que mon code

mais je recherche toujours pourquoi cela me donne dans la feuille toujours quatre jours avant les date que je demande

sinon je vais essayer de passer par la listbox avec une feuille résultats avec se code pour avoir de date a date fixe

Private Sub CommandButton1_Click()
 Set f2 = Sheets("résultat")
  f2.Cells.ClearContents
  a = Me.ListBox1.List
  f2.[A2].Resize(UBound(a) + 1, UBound(a, 2) + 1) = a
  c = 0
  For c = 1 To NbCol
     f2.Cells(1, c) = [Tableau1].Offset(-1).Item(1, c)
  Next
  f2.Cells.EntireColumn.AutoFit

End Sub
merci beaucoup pour ton aide 
amicalement 

voila j ai enfin trouvé grâce a ton code ou étais mon erreur

le code qui me donnais quatre ligne avant il fallait mettre 3 aux lieu de 6

 For i = 3 To derlig
Rechercher des sujets similaires à "code imprimer date"