Mise a jour Sheet (macro Excel) [Résolu/Fermé]

Signaler
Messages postés
9
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
14 janvier 2009
-
Messages postés
9
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
14 janvier 2009
-
Bonjour, Je me lance en ce moment à la découverte des macros sur Excel, et après avoir surfé (à de très nombreuses reprises !) sur différents sites d'aides, je fait face à un problème que je n'ai aps réussit à trouver ailleur :

Voici mon problème :

J'ai une Sheet 1 où je rentre des données une fois après avoir rentré les données, l'utilisateur clique sur une comboBox afin de mettre à jour une autre sheet (sheet 2) avec les données de la sheet 1
Le hic est que je voudrais que dans la sheet 2 figure la date du jour de la mise à jour pour chaque ligne qui viens d'être modifiée... (En gros une fonction qui détermine les cellules dont les valeurs ont été modifiées lors de la dernière mise à jour et donc change la date qui était présente en la date du jour de la mise à jour)

Arf c pas très évident à expliquer ! Si quelqu'un comprend mon problème, et surtout sais comment le résoudre... une aide me rendrai vriament un grand service.

Merci bien
Bonne journée

7 réponses

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 400
bonjour

Dans la cellule choisie dans ta ligne modifiée, il suffit de mettre :

cells(ligne,colonne).value = date (ou date + time si tu veux date et heure)
Messages postés
9
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
14 janvier 2009
6
ah merci pour cette réponse rapide ! je vais essayer ça tout de suite...
Messages postés
9
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
14 janvier 2009
6
Arf cela ne répond, qu'à une partie de mon problème, en fait ce que je voudrais c'est que la date ne s'affiche uniquement si l'une des valeur des cellules de la ligne a été modifiée depuis la dernière mise à jour. En gros une fonction qui capte que dans la ligne une cellule a changé de valeur...
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 400
bonjour

Dans ce cas il faut faire le test avant de mettre la date.
l = la_ligne_traitée
For c = 1 To Rows(l).SpecialCells(xlCellTypeLastCell).Column
    If Cells(l, c).Value <> combo(l, c).Value _
        And c <> colonne Then
        Cells(l, colonne) = Date + Time
    End If      ' colonne étant la colonne de mise à jour
Next c

en adaptant combo(l, c).Value à la façon dont tu fais les mises à jour
Messages postés
9
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
14 janvier 2009
6
Je ne savais pas que vous m'aviez répondu ! je pensais que je recevrais un mail du site mais ça n'a pas été le cas... désolé de le voir si tardivement

Donc au début je met :
l = ActiveCell.Row


J'ai compri tout le programme mis à part ce qu'est le combo(l, c) et ce que je dois faire avec, et forcément ça fait planter le programme du coup ("Sub or Fonction not defined"). En fait le combo(l,c).Value doit représenter la valeur que possèdait la cellule modifiée avant d'être modifiée? c'est bien ça?

Sinon moi du coup depuis le tps je me suis débrouillé d'une autre façon mais qui prend plus de tps au programme, à chaque fois qu'une valeur est insérée(ou donc modifiée) dans dans la sheet1 dans une ligne du tableau, la date du jour s'inscrit dans une cellule de cette meme ligne se trouvant dans une collone ("date de mise à jour") et lorsque que je fait une mise à jour de l'autre sheet (sheet2) je copie la collone ("date de mise à jour") et la colle dans la sheet mise à jour. le problème est que du coup un sablier apparait a chaque fois qu'on modifie une cellule de la ligne...

Pouvez vous malgré tout me repondre à ma question à propos de votre proposition on ne sais jamais...

Merci pour l'aide en tout cas
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 400
bonjour

En fait le combo(l,c).Value doit représenter la valeur que possèdait la cellule modifiée avant d'être modifiée?

Non c'est la valeur de modification de la cellule et comme je ne connait pas la méthode de mise à jour employée...

le problème est que du coup un sablier apparait a chaque fois qu'on modifie une cellule de la ligne...

C'est sans doute que la méthode employée n'est pas performante.

sheets("feuil1").rows(ligne).copy destination:=sheets("feuil2").rows(ligne)
Messages postés
9
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
14 janvier 2009
6
Bonjour

(Non c'est la valeur de modification de la cellule et comme je ne connait pas la méthode de mise à jour employée...)
En fait l'utilisateur rentre une nouvelle valeure manuellement en écrasant la précédente et c'est à ce moment la que la date doit s'afficher dans une autre cellule, enfin bon je me suis débrouiller un peu comme j'ai décrit ci dessus (système D lol) et sa marche...

Je connaissais pas ce mode de copier coller c'est bien sa marche mieux !

merci pour ton aide !