Comment sauvegarder des donnée a chaque changement de ma macro

Résolu
arnaud.az -  
arnaud.az Messages postés 9 Statut Membre -
Bonjour,

Je dois faire des moyennes mobiles, mes cellules sont prêtes, la macro est la, mais il faudrait qu'à chaque variations de la macro la donnée précédente sois enregistré dans la cellule suivante, et je dois faire la même chose avec un intervalle de 5 min. Quelqu'un peut pourrait m'aider ? J'avoue que je désespère un peu.

Merci d'avance.

12 réponses

  1. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Eh bien si tout est prêt, c'est quoi qui ne fonctionne pas ?
    Est-il possible de voir ce qui est prêt ?
    0
  2. arnaud.az Messages postés 9 Statut Membre
     
    je n'arrive pas à mettre une photo mais je vais essayer de schématiser mon problème de façon claire.

    (N-4) <- (N-3) <- (N-2) <- (N-1) <- (N)

    En (N) j'ai une macro qui me donne des données en temps réelle. Je voudrais que toutes les 5 minutes, la donnée (N) se sauvegarde en (N-1), puis que 5 minutes plus tard la donnée (N) passe en (N-1), et que la donnée (N-1), passe en (N-2)... ainsi de suite.

    J'espère que mon schémas est claire.

    Salutation
    0
  3. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Vous pouvez mettre votre photo et la macro sur un document Word et mettre ce dernier sur https://www.cjoint.com/ et poster le lien.
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Merci, mais ou est votre macro... !

    0
    1. arnaud.az Messages postés 9 Statut Membre
       
      Dans ce cas dsl, je viens de débuter sur ce sujet, la personne qui a fait le lien avec le logiciel externe que j'utilise m'a dit que c'était une macro, ou peut être est-ce moi qui ai confondu
      0
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir à tous,

    utiliser OnTime, il y a un exemple dans l'aide excel.

    eric
    0
    1. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
       
      Merci eriiic,
      Pour moi c'est OK.
      Salutations
      0
    2. arnaud.az Messages postés 9 Statut Membre
       
      bonjour,

      J'ai un peu bosser hier soir après notre discutions, histoire de ne plus passer pour un ignorant.
      Désormais je sais ce qu'est vraiment une macro, ce qui je pence pourrais faire avancer les choses.

      Donc j'ai créer ma première macro.

      Sub Copier_coller_01()
      '
      ' Copier_coller_01 Macro
      '

      Range("G5").Select
      ActiveCell.FormulaR1C1 = "=IT|Price!'SMI.SWI,Last'"
      Range("G5").Select
      Selection.Copy
      Range("F5").Select
      ActiveSheet.Paste
      End Sub

      Je tombe déjà sur un problème quand je l'exécute, il me copie la cellule donc =IT|Price!'SMI.SWI,Last , et non le nombre qui s'affiche dans la cellule.

      Pouvez-vous m'aider. Merci.

      Salutation.
      0
    3. arnaud.az Messages postés 9 Statut Membre
       
      J'ai finis par trouver.
      Merci
      0
  7. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Alors c'est parfait et félicitation.

    0
  8. foo
     
    Bonjour

    trop de code

    ex:

    Sub Copier_coller_01()
    Range("G5").FormulaLocal = "=code_produits!B7"
    Range("G5").Copy
    Range("F5").PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    End Sub

    A+

    Maurice
    0
  9. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Donc j'ai créer ma première macro.
    Ca se voit que c'est la première ;-)
    Il faut nettoyer le code créé par l'enregistreur. Les .select sont inutiles dans 99% des cas et très chronophages.

    Tu peux raccourcir ta macro en :
    Sub Copier_coller_01()
    [F5] = [G5].Value
    End Sub

    Mais si tu veux qu(elle se lance toutes les 5 min regarde l'aide sur la méthode OnTime

    eric
    0
    1. arnaud.az Messages postés 9 Statut Membre
       
      Ah oui magnifique merci beaucoup

      arnaud
      0
  10. llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
     
    merci ca ma ete utile
    0
  11. arnaud.az Messages postés 9 Statut Membre
     
    Finalement j'ai changé pour ta solution qui m'a l'air plus simple, et aussi car, ce que je viens d'apprendre a mes dépend, qu'il faut que tout sois rassembler sous la même macro alors que j'avais tout fais séparément (même pour les copier-coller) donc j'ai tout supprimer et j'ai recommencé à zéro

    Sub M_Mobile_per_5()
    Application.OnTime
    [D5] = [C5].Value
    Application.OnTime
    [E5] = [D5].Value
    Application.OnTime
    [F5] = [E5].Value
    Aplication.OnTime
    [G5] = [F5].Value
    End Sub

    Mais je bloque ici

    Salutation

    Arnaud
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Tu as vraiment regardé l'aide excel ??????
      L'exemple donné c'est :
      Notes
      Utilisez Now + TimeValue(time) pour programmer une procédure à exécuter après un certain délai (à partir de maintenant). Utilisez TimeValue(time) pour programmer une procédure à exécuter à un moment précis.

      Exemples
      Cet exemple montre comment exécuter my_Procedure dans 15 secondes.

      Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"


      eric
      0
    2. arnaud.az Messages postés 9 Statut Membre
       
      Maintenant j'en suis la

      Sub m_mobile_per_5()
      Application.OnTime TimeValue("00:05:00")
      [D5] = [C5].Value
      Application.OnTime TimeValue("00:05:00")
      [E5] = [D5].Value
      Application.OnTime TimeValue("00:05:00")
      [F5] = [E5].Value
      Aplication.OnTime TimeValue("00:05:00")
      [G5] = [F5].Value
      End Sub

      il me dit : "erreur de compilation
      argument non facultatif"

      En me surlignant en jaune la première ligne.
      0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Oui, ça fait ça quand on n'en met que la moitié...
      Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"

      Et tu n'as pas à la relancer 4 fois, une fois suffit
      Essaie avec :
      Sub m_mobile_per_5()
         [D5] = [C5].Value
         [E5] = [D5].Value
         [F5] = [E5].Value
         [G5] = [F5].Value
         Application.OnTime  Now + TimeValue("00:05:00"), "m_mobile_per_5" ' relancer dans 5'
      End Sub

      Mais je croyais que tu voulais propager ta sauvegarde de la droite vers la gauche ? Là tu fais l'inverse. Il faudrait sans doute démarrer par [F5] = [G5].Value non ?

      eric
      0
  12. arnaud.az Messages postés 9 Statut Membre
     
    Bonjour,

    Désormais tout marche correctement. Je vous remercie de votre aide si précieuse et merci Eric pour la solution sa marche nickel chrome ta remarque juste en dessous était pertinente.

    Merci beaucoup.

    Arnaud
    0