Autres Macro, sous ThisWorkbook , qui ne fonctionne pas avec un "collé"...

Christian0258

XLDnaute Accro
Bonjour à tout le forum,

Je souhaiterais votre aide, car comme indiqué dans le titre de la discussion, je n'arrive pas à faire fonctionner la macro, dans le cas d'un "copier/coller"...?

voir fichier joint.

Merci pour le temps que vous voudrez bien vouloir m'accorder.

Bien amicalement,
Christian
 

Pièces jointes

  • EspionCelluleModifiees (1).xlsm
    25.4 KB · Affichages: 20

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Christian,
Un Workbook_SheetChange se met dans la sheet concernée et non dans Thisworkbook, ce qui d'ailleurs simplifie le code puisqu'il ne peut être activée que par la feuille concernée.
On met généralement dans les feuilles mes macro SheetChange et dans thisWorkbook les macros dont le périmètre est la classeur : Workbook_BeforeSave ou Workbook_Open par exemple.
Un ex en PJ. Le code se trouve dan la feuille BD. J'ai opté pour un Worksheet_Change.
 

Pièces jointes

  • EspionCelluleModifiees (1).xlsm
    27.6 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Christian,
Dans les deux cas la macro est correctement exécutée.
Cependant, lorsqu'on copie colle une plage, la ligne Sheets("HistoStock").Cells(temp, 4) = valsaisie ne copie évidemment que la première cellule.
Ce qui m'échappe, ce sont ces deux lignes :
VB:
Sheets("HistoStock").Cells(temp, 3) = Target    'ancienne valeur de la cellule
Sheets("HistoStock").Cells(temp, 4) = valsaisie    'nouvelle valeur
Puisqu'avant vous avez fait valsaisie = Target donc Valsaisie et Target ont la même valeur.

Quel était le but ?
 

Christian0258

XLDnaute Accro
Re, le forum, sylvanu

Est-ce que ce n'est pas "valsaisie" qui pose problème ???
Le but est justement d'historier les changements dans les cellules colonne B, les *changements dans cette colonne sont effectués par macro dans le cas d'une remise en stock (donc *collés) ou par saisies directes dans les cellules si c'est un réapprovisionnement...

Merci pour ton aide.
Christian
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
J'ai fait un truc en PJ. A voir.
Dans le cas présent le seul moyen de traiter tout un tableau est de faire une boucle.
( sinon on ne prends que la première valeur du tableau )
Donc au début si col2 ou col3 alors je mets tout le tableau A6:D19 dans un array, puis je récupère les anciennes dans un autre.
Puis je boucle sur chaque ligne non vide pour faire les opérations.
Idem boucle pour la col3 si concernée.
Donc tout se passe à travers les deux arrays, plus d'accès en lecture aux cellules après le transfert dans les tableaux.
Bien vérifié les affectations de valeurs pour voir s'il n'y a pas de bugs.
 

Pièces jointes

  • EspionCelluleModifiees (1) (3).xlsm
    30.3 KB · Affichages: 2

Discussions similaires

Réponses
7
Affichages
282

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 814
dernier inscrit
JLGalley