Archivage ticket de caisse

mdcherif Messages postés 10 Statut Membre -  
mdcherif Messages postés 10 Statut Membre -
Bonjour à tous,
je suis un mauvais copieur de macro
Je sollicite votre aide pour finir mon petit programme
il me reste a archiver les articles vendu présent sur le ticket dans la base de donnée en feuil3 comme exemple j'ai copier les cellules que je voulais transférer du ticket vers feuil3
seulement si vous pourriez m'aider a le faire par macro
merci à tous
http://cjoint.com/14oc/DJnb0QX24mH.htm
merci Raymond j'ai oublier la reglementation

10 réponses

  1. Raymond PENTIER Messages postés 58225 Date d'inscription   Statut Contributeur Dernière intervention   17 488
     
    Euh ! il y a un petit problème ... Vérifie ce que tu as joint comme lien !
    0
  2. mdcherif Messages postés 10 Statut Membre
     
    Bonsoir Raymond;
    c vrais j'arrive pas a joindre mon fichier ( comment faire ?)

    merci
    0
  3. Raymond PENTIER Messages postés 58225 Date d'inscription   Statut Contributeur Dernière intervention   17 488
     
    Non, non, non !
    Il y a 7 ans que tu es membre inscrit ; tu sais très bien qu'il est interdit de donner son mail en clair ; et tu devrais savoir que pour envoyer un fichier il suffit de passer par https://www.cjoint.com/ pour créer le lien, que tu reviendras coller dans ton message.
    0
  4. mdcherif Messages postés 10 Statut Membre
     
    Merci Raymond
    je continu a corriger des petits bug sur mon fichier et je veux le faire moi meme
    pour apprendre !
    mais le transfert des articles vendu vers feuil3 me fait patiner !
    voici le lien
    http://cjoint.com/14oc/DJncL6SZdSE.htm
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mdcherif Messages postés 10 Statut Membre
     
    Je continu toujours à avancer , mais j'avoue que sans assistance d'un prof
    c du bricolage que je fait ,maintenant j'essaie de reconstruire un ticket à partir de la Feuil Archives pour le réimprimer si c possible.je souhaite toujours votre aide pour mieux comprendre.
    http://cjoint.com/14oc/DJpuMC2510S.htm
    0
    1. Raymond PENTIER Messages postés 58225 Date d'inscription   Statut Contributeur Dernière intervention   17 488
       
      Moi, mon rôle est terminé : je n'y connais rien en macros ...
      J'ai laissé la place à d'autres, plus compétents.
      0
  7. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    @ Raymond :
    Salut le retraité!
    Je prend le relais si tu veux bien.
    Bonne journée à toi.

    @mdcherif :
    Pas si simple...
    En fait, ta recherche de ticket de caisse doit se faire par la date. C'est en effet la seule info commune aux différentes lignes de la feuille Archives composants un seul ticket.

    j'essaie de reconstruire un ticket à partir de la Feuil Archives
    Comment souhaites tu faire cela?
    A partir d'un bouton sur une feuille?
    A partir d'un bouton sur un UserForm?

    Peu importe la solution choisie, il te faudra :
    - une combobox de choix de la date,
    - une combobox de choix du nom de client,
    - un bouton.

    Tu dis...
    0
  8. mdcherif
     
    Salut a tous ; en particulier Raymond notre doyen
    Pijaku ; a vous aussi c'est un honneur de pouvoir discuter un peux avec des connaisseurs , finalement moi aussi je vais bientôt passer en retraite je continu
    a faire mon métier de magasinier avec plaisir .
    revenant a nos moutons ( boutons)
    Oui les boutons c ce qu'il faut ajouter avec deux conditions si c possible
    ( par recherche date et nom du client) c mieux je crois ; parce qu'il arrive des fois ou le client oubli la date de livraison on obligé de rechercher aussi le nom
    merci Pijaku
    0
  9. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Alors, voici ma solution.

    Dans un nouvel UserForm, ou dans un UserForm existant, mais il te faudra inclure ces Sub dans celles existants déjà, dessiner :
    - deux combobox : Changer leurs propriétés Name en CB_Client et CB_Date
    - deux boutons : changer leurs propriétés Name en Btn_Imprime et Btn_Annule

    Puis, dans le module de cet userform, placez les codes suivants :
    Dim Recherche As Boolean
    
    Private Sub UserForm_Initialize()
    Dim Lig As Long, DLig As Long, i As Long, j As Long
    Dim Clients()
    
    'Suppression du contenu éventuel des Combobox
    CB_Client.Clear
    CB_Date.Clear
    i = 0
    'Remplissage des combobox
    With Sheets("Archives")
        DLig = .Range("A" & Rows.Count).End(xlUp).Row
        For Lig = 2 To DLig
            CB_Client = .Range("G" & Lig)
            'Filtre les doublons
            If CB_Client.ListIndex = -1 Then
                CB_Client.AddItem .Range("G" & Lig)
                ReDim Preserve Clients(i)
                Clients(i) = .Range("G" & Lig)
                i = i + 1
            End If
            CB_Date = .Range("F" & Lig)
            If CB_Date.ListIndex = -1 Then CB_Date.AddItem .Range("F" & Lig)
        Next Lig
    End With
    'Tri de la combobox Client par ordre alpha
    Call tri(Clients, LBound(Clients), UBound(Clients))
    CB_Client.Clear
    CB_Client.List = Clients
    Recherche = False
    End Sub
    
    'Combobox Clients
    Private Sub CB_Client_Change()
    If Recherche = True Or CB_Client = "" Then Exit Sub
    Recherche = True
    'Ici on va remplir la CB_Date en fonction du choix du client
    CB_Date.Clear
    With Sheets("Archives")
        DLig = .Range("A" & Rows.Count).End(xlUp).Row
        For Lig = 2 To DLig
            If CB_Client = .Range("G" & Lig) Then
                CB_Date = .Range("F" & Lig)
                If CB_Date.ListIndex = -1 Then CB_Date.AddItem .Range("F" & Lig)
            End If
        Next Lig
    End With
    End Sub
    
    'Combobox Dates
    Private Sub CB_Date_Change()
    If Recherche = True Or CB_Date = "" Then Exit Sub
    Recherche = True
    'Ici on va remplir la CB_Client en fonction du choix de la date
    CB_Client.Clear
    With Sheets("Archives")
        DLig = .Range("A" & Rows.Count).End(xlUp).Row
        For Lig = 2 To DLig
            If CB_Date = .Range("F" & Lig) Then
                CB_Client = .Range("G" & Lig)
                If CB_Client.ListIndex = -1 Then CB_Client.AddItem .Range("G" & Lig)
            End If
        Next Lig
    End With
    End Sub
    
    'Bouton ANNULER
    Private Sub Btn_Annule_Click() 'Identique à UserForm_initialize
    Dim Lig As Long, DLig As Long, i As Long, j As Long
    Dim Clients()
    'Suppression du contenu éventuel des Combobox
    CB_Client.Clear
    CB_Date.Clear
    i = 0
    'Remplissage des combobox
    With Sheets("Archives")
        DLig = .Range("A" & Rows.Count).End(xlUp).Row
        For Lig = 2 To DLig
            CB_Client = .Range("G" & Lig)
            'Filtre les doublons
            If CB_Client.ListIndex = -1 Then
                CB_Client.AddItem .Range("G" & Lig)
                ReDim Preserve Clients(i)
                Clients(i) = .Range("G" & Lig)
                i = i + 1
            End If
            CB_Date = .Range("F" & Lig)
            If CB_Date.ListIndex = -1 Then CB_Date.AddItem .Range("F" & Lig)
        Next Lig
    End With
    'Tri de la combobox Client par ordre alpha
    Call tri(Clients, LBound(Clients), UBound(Clients))
    CB_Client.Clear
    CB_Client.List = Clients
    Recherche = False
    End Sub
    
    'Bouton Imprime
    Private Sub Btn_Imprime_Click()
    Dim Lignes() As Long, Lig As Long, DLig As Long, i As Long
    
    If CB_Client = "" And CB_Date = "" Then MsgBox "Tous les champs sont obligatoires.": Exit Sub
    
    With Sheets("Archives")
        DLig = .Range("A" & Rows.Count).End(xlUp).Row
        For Lig = 2 To DLig
            If CB_Client = .Range("G" & Lig) And CB_Date = .Range("F" & Lig) Then
                ReDim Preserve Lignes(i)
                Lignes(i) = Lig
                i = i + 1
            End If
        Next
        'remplissage du ticket de caisse
        Sheets("Menu").Range("K7") = .Range("G" & Lignes(0))
        Sheets("Menu").Range("L6") = .Range("F" & Lignes(0))
        For i = LBound(Lignes) To UBound(Lignes)
            Lig = Sheets("Menu").Range("K" & Rows.Count).End(xlUp).Row + 1
            Sheets("Menu").Range("K" & Lig) = .Range("B" & Lignes(i))
            Sheets("Menu").Range("L" & Lig) = .Range("C" & Lignes(i))
            Sheets("Menu").Range("M" & Lig) = .Range("D" & Lignes(i))
            Sheets("Menu").Range("N" & Lig) = .Range("E" & Lignes(i))
        Next i
    End With
    With Sheets("Menu")
        .Select
        .Range("K1:" & .Range("l60").End(xlUp).Offset(1, 2).Address & "").Select
        Selection.PrintOut Copies:=1, Collate:=False
        .Range("L6").FormulaLocal = "=MAINTENANT()"
    End With
    End Sub
    
    'Sources :
        'http://boisgontierjacques.free.fr/pages_site/Dictionnaire.htm
    Sub tri(a, gauc, droi) ' Quick sort
      ref = a((gauc + droi) \ 2)
      g = gauc: d = droi
      Do
        Do While a(g) < ref: g = g + 1: Loop
        Do While ref < a(d): d = d - 1: Loop
        If g <= d Then
           temp = a(g): a(g) = a(d): a(d) = temp
           g = g + 1: d = d - 1
        End If
      Loop While g <= d
      If g < droi Then Call tri(a, g, droi)
      If gauc < d Then Call tri(a, gauc, d)
    End Sub
    


    Il y a peut être des erreurs, à toi de tester et de nous dire...
    0
  10. mdcherif Messages postés 10 Statut Membre
     
    merci Pikaju
    je v ajouter un userform indépendant c mieux pour ne pas toucher les autres
    bonne fin de semaine
    je vous tiendrez au courant
    a+
    0
  11. mdcherif Messages postés 10 Statut Membre
     
    Bonjour a tous
    je considère que le programme est résolu
    je me contente pour l'instant et j'attends toujours vos idées
    Pikaju le module que vous aviez fait ma fait des boucles dans ma tête
    je n'ais pas pu comprendre pas a pas il saute d'une boucle a une autre
    en plein milieu de boucle ? j'avoue cela me dépasse
    merci encore pour votre aide ,alors je vous envoie ci-joint
    le fichier ,j'ai garder toujours la FormBase en là dupliquant
    qui me paraissait plus simple de petite modification et ça marche

    http://cjoint.com/14oc/DJtdj4A8bJh.htm
    0