Panier pour bon de commande

nikoEH Messages postés 66 Date d'inscription   Statut Membre Dernière intervention   -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,
Voici le code d'une macro qui sert à remplir un bon de commande en cliquant sur la référence voulue puis sur "Ajouter au panier"

Private Sub ajouter_Click()
Dim MonClasseur As Workbook
Set MonClasseur = ActiveWorkbook
Selection.Copy
Windows("panier.xls").Activate
Sheets("Feuil1").Activate
Range("A12").Select
Do While ActiveCell <> ""
    ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
MonClasseur.Activate
Set MonClasseur = Nothing
End Sub 


Ce code marche, cependant je voudrais que la copie ne se fasse que jusqu'à la ligne 31. Ensuite avant de remplir la 32 je voudrais qu'un message s'affiche pour indiquer que le panier est plein.

Je suppose qu'il faut déclarer une variable pour compter le nombre de copier et coller. Mais je bloque la dessus.

Quelqu'un saurait-il m'éclairer sur la démarche à suivre? Merci d'avance

4 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    a essayer, je n'ai pas testé:

    Private Sub ajouter_Click()
    Dim lig As Long
    'Dim MonClasseur As Workbook
    'Set MonClasseur = ActiveWorkbook inutile puisque tu es déjà sur le classeur
    Selection.Copy
    Windows("panier.xls").Activate
    With Sheets("Feuil1")
    .activate
    lig = .Range("65536").End(xlUp).Row
    If lig > 31 Then
    MsgBox "panier plein"
    Else
    'on suppose qu'il y a une donnée en A12
    .Cells(lig, 1).Select
    .Paste
    End If
    End With
    MonClasseur.Activate
    'Set MonClasseur = Nothing
    End Sub
    0
  2. nikoEH Messages postés 66 Date d'inscription   Statut Membre Dernière intervention   7
     
    Merci pour ta réponse.

    Je viens d'essayer mais il y a quelque chose qui marche pas... Je me penche la dessus...
    0
  3. nikoEH Messages postés 66 Date d'inscription   Statut Membre Dernière intervention   7
     
    C'est apparemment sur cette ligne qui a un soucis ...

    lig = .Range("65536").End(xlUp).Row

    Je ne comprend pas très bien a quoi elle sert d'ailleurs...
    0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Oups!
    Excuses moi

    lig = .Range("A65536").End(xlUp).Row

    Cette instruction te donne le numéro de la dernière ligne utilisée dans la colonne A

    N'hésites pas au cas où, comme je n'ai pas testé...

    Michel
    0