Archivage ticket de caisse

Fermé
mdcherif Messages postés 10 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 13 novembre 2014 - Modifié par mdcherif le 13/10/2014 à 01:50
mdcherif Messages postés 10 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 13 novembre 2014 - 19 oct. 2014 à 03:06
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

Raymond PENTIER Messages postés 58720 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 10 novembre 2024 17 233
13 oct. 2014 à 01:30
Euh ! il y a un petit problème ... Vérifie ce que tu as joint comme lien !
0
mdcherif Messages postés 10 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 13 novembre 2014
Modifié par mdcherif le 13/10/2014 à 01:52
Bonsoir Raymond;
c vrais j'arrive pas a joindre mon fichier ( comment faire ?)

merci
0
Raymond PENTIER Messages postés 58720 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 10 novembre 2024 17 233
13 oct. 2014 à 01:46
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
mdcherif Messages postés 10 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 13 novembre 2014
13 oct. 2014 à 02:34
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mdcherif Messages postés 10 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 13 novembre 2014
15 oct. 2014 à 20:37
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
Raymond PENTIER Messages postés 58720 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 10 novembre 2024 17 233
16 oct. 2014 à 04:37
Moi, mon rôle est terminé : je n'y connais rien en macros ...
J'ai laissé la place à d'autres, plus compétents.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
16 oct. 2014 à 08:35
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
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
17 oct. 2014 à 08:44
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
mdcherif Messages postés 10 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 13 novembre 2014
17 oct. 2014 à 16:33
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
mdcherif Messages postés 10 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 13 novembre 2014
19 oct. 2014 à 03:06
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