catalogue avec systeme de panier

nikoEH

XLDnaute Nouveau
Bonjour à tous,

Je crée toujours un catalogue dans excel.
J'ai donc fait une macro qui permet de copier le contenu d'une cellule selectionnée vers un tableau sur un autre fichier qui sert de bon de commande.
Cependant pour que la copie se fasse il faut impérativement que le fichier "bon de commande" soit ouvert.
Partant du principe que mes clients ne sont pas forcement des passionés d'informatique, je voudrais qu'en cliquant sur le bouton "ajouter a la commande", le fichier "bon de commande" s'ouvre.

J'ai donc fait cette macro, cependant l'inconvenient c'est que là pour le coup il me l'ouvre à chaque clic sur le bouton, or quand on a cliqué une première fois le bon est déjà ouvert...
Peut-on mettre une boucle avec condition? C'est à dire que si le fichier est deja ouvert il ne fait que le copié-collé.
J'ai aussi un problème pour l'adresse du fichier car ce catalogue sera sur CDrom et pour l'instant l'adresse est celle de mon ordi...
Merci pour votre aide...

Voici la macro :

Sub Macro2()

Workbooks.Open Filename:= _
"Z:\\conception catalogue \Base de données\bon commande.xls" _
, UpdateLinks:=0
Windows("famille 01.xls").Activate

Dim MonClasseur As Workbook

Set MonClasseur = ActiveWorkbook

Selection.Copy
Windows("bon commande.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
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : catalogue avec systeme de panier

Bonjour Niko, le Forum

Je peux te proposer une approche comme ceci :

Code:
Option Explicit
Option Compare Text

Const BonDeCommande As String = "bon commande.xls"
Const FeuilleCible As String = "LAFEUILLECIBLE"
Const FeuilleSource As String = "LAFEUILLESOURCE"

Sub Open_Copy_Paste()
Dim MonClasseurSource As Workbook, MonClasseurCible As Workbook
Dim WB As Workbook
Dim LastCellCible As Range
Dim MonChemin As String
Dim Ouvert As Boolean
For Each WB In Workbooks
    If WB.Name = BonDeCommande Then Ouvert = True
Next
Set MonClasseurSource = ThisWorkbook
MonChemin = MonClasseurSource.Path & "\"
If Ouvert = False Then
    Set MonClasseurCible = Workbooks.Open(Filename:=MonChemin & BonDeCommande, UpdateLinks:=0)
Else
    Set MonClasseurCible = Workbooks(BonDeCommande)
End If
Set LastCellCible = MonClasseurCible.Worksheets(FeuilleCible).Range("A65536").End(xlUp).Offset(1, 0)
MonClasseurSource.Worksheets(FeuilleSource).Activate
Selection.Copy LastCellCible

End Sub

Bonne Journée

Et je profite de l'occasion pour fair un coucou à tous les Forumeurs et Forumeuses que je connais !

@+Thierry
 

nikoEH

XLDnaute Nouveau
Re : catalogue avec systeme de panier

Merci beaucoup pour le fichier...

Je l'ai "betement" copié-collé et ca ne marche pas.

Que dois-je modifier?

L'erreur d'apres lui se trouve sur cette ligne
Set LastCellCible = MonClasseurCible.Worksheets(FeuilleCible).Range("A65536").End(xlUp).Offset(1, 0)
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : catalogue avec systeme de panier

Re bonjour Niko, le Forum

En fait j'ai imaginé des noms de Feuilles dans mes constantes

Const FeuilleCible As String = "LAFEUILLECIBLE"
Const FeuilleSource As String = "LAFEUILLESOURCE"

Que tu dois bien entendu ajuster aux vrais noms de tes feuilles...

Pour les Fichiers c'est Idem, pour moi j'ai compris que ton fichier Source est "famille 01.xls" (Variable Objet MonClasseurSource)

Et ton fichier Cible est ""bon commande.xls" (Variable Objet MonClasseurCible)

Bon Courage

@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 467
Messages
2 088 670
Membres
103 914
dernier inscrit
VAL965698