Question à propos d'une macro excel avec copie de données à intervalles de temps régulier
Dernière réponse : dans Programmation
Bonjour,
je suis chimiste et j'ai un problème avec une macro excel qui gère un analyseur.
En effet, cette macro contrôle mon appareil (un analyseur) à distance et devrait inscrire dans un tableau mes valeurs en temps réel, sauf qu'elle note mes valeurs que lorsque ma concentration dépasse 1000 ppb ( j’espère que c'est pas trop du chinois pour vous ... ).
Mais bon l'essentiel n'est pas la, sur ce tableau il est aussi noté dans les cases D3 à D5 les valeurs que je souhaiterai enregistrer, et ces valeurs varient en temps réel.
Donc pour enregistrer ces valeurs, je me suis dit que je pourrais faire une seconde macro dans le but de copier mes valeurs dans une autre fenêtre excel et cela à intervalle de temps régulier, genre toutes les 5 secondes.
Si j'ai decidé d'en faire une seconde, c'est parce que la premiere est beaucoup trop complexe ( 8000 lignes ... ) pour moi en tout cas et en plus creer par des allemands, bref le casse tete .
Donc mes questions, est il possible d'avoir une macro qui transefere des données d'une fenetre excel vers une autre et si oui avec la variable temps. ( Parce que je me vois pas faire des copier coller pendant 3h ou plus toutes les 5 secondes .... )
Merci d'avance pour vos réponses
Je suis dispo pour les éventuelles questions si c'est pas très clair .
je suis chimiste et j'ai un problème avec une macro excel qui gère un analyseur.
En effet, cette macro contrôle mon appareil (un analyseur) à distance et devrait inscrire dans un tableau mes valeurs en temps réel, sauf qu'elle note mes valeurs que lorsque ma concentration dépasse 1000 ppb ( j’espère que c'est pas trop du chinois pour vous ... ).
Mais bon l'essentiel n'est pas la, sur ce tableau il est aussi noté dans les cases D3 à D5 les valeurs que je souhaiterai enregistrer, et ces valeurs varient en temps réel.
Donc pour enregistrer ces valeurs, je me suis dit que je pourrais faire une seconde macro dans le but de copier mes valeurs dans une autre fenêtre excel et cela à intervalle de temps régulier, genre toutes les 5 secondes.
Si j'ai decidé d'en faire une seconde, c'est parce que la premiere est beaucoup trop complexe ( 8000 lignes ... ) pour moi en tout cas et en plus creer par des allemands, bref le casse tete .
Donc mes questions, est il possible d'avoir une macro qui transefere des données d'une fenetre excel vers une autre et si oui avec la variable temps. ( Parce que je me vois pas faire des copier coller pendant 3h ou plus toutes les 5 secondes .... )
Merci d'avance pour vos réponses
Je suis dispo pour les éventuelles questions si c'est pas très clair .
Autres pages sur : question propos macro excel copie donnees intervalles temps regulier
Lassé par la pub ? Créez un compte
Salut,
J'ai rien compris... jusqu'à : "est il possible d'avoir une macro qui transefere des données d'une fenetre excel vers une autre et si oui avec la variable temps."
Oui, c'est possible.
----------------------
Concernant la périodicité de tes actions, renseigne-toi sur Application.OnTime du VBA/Excel ou carrément sur l'API Windows que tu peux utiliser dans VBA.
Pour ce qui est de la copie d'une feuille vers une autre, relis 80% de mes contributions sur ce site.
(Si tout ceci ne te suffit pas, je peux t'aider plus directement.)
J'ai rien compris... jusqu'à : "est il possible d'avoir une macro qui transefere des données d'une fenetre excel vers une autre et si oui avec la variable temps."
Oui, c'est possible.
----------------------
Concernant la périodicité de tes actions, renseigne-toi sur Application.OnTime du VBA/Excel ou carrément sur l'API Windows que tu peux utiliser dans VBA.
Pour ce qui est de la copie d'une feuille vers une autre, relis 80% de mes contributions sur ce site.
(Si tout ceci ne te suffit pas, je peux t'aider plus directement.)
re bonjour, ( j'opte pour l'aide plus direct
)
Arf, je me doutais que c'était pas très clair ce que je racontais ...
Bon jvais essayer de faire simple,
J'ai une macro qui est sensé m'afficher sous excel des données importées d'un appareil.
Sauf que dans le tableau excel qui apparait que je lance ma macro, il ne s'inscrit aucune valeur.
Les valeurs s'affichent seulement si l'appareil mesure des valeurs supérieurs à 1000, hors je souhaite travailler dans une gamme de 0 à 200.
J'ai essayé de chercher dans VBA mais le code est très long et je ne m'y connais pas vraiment
Donc deux choix pour moi en fait :
-Donc plus de lien ou je balance n'importe quoi sur le forum .....
-Ou, il me faudrait un bout de code que j’insère je ne sais pas trop où, qui puisse copier les cases D3, D4, D5 vers un autre classeur toute les x secondes en décalant d'une ligne a chaque intervalle de temps.
C'est plus clair ...?
Merci d'avance, pour toute question je suis la
Bonne chance
)Arf, je me doutais que c'était pas très clair ce que je racontais ...
Bon jvais essayer de faire simple,
J'ai une macro qui est sensé m'afficher sous excel des données importées d'un appareil.
Sauf que dans le tableau excel qui apparait que je lance ma macro, il ne s'inscrit aucune valeur.
Les valeurs s'affichent seulement si l'appareil mesure des valeurs supérieurs à 1000, hors je souhaite travailler dans une gamme de 0 à 200.
J'ai essayé de chercher dans VBA mais le code est très long et je ne m'y connais pas vraiment
Donc deux choix pour moi en fait :
-Donc plus de lien ou je balance n'importe quoi sur le forum .....
-Ou, il me faudrait un bout de code que j’insère je ne sais pas trop où, qui puisse copier les cases D3, D4, D5 vers un autre classeur toute les x secondes en décalant d'une ligne a chaque intervalle de temps.
C'est plus clair ...?
Merci d'avance, pour toute question je suis la
Bonne chance
vincent le laborantin a édité ce message
Modérateur : Méfiance, le lien proposé n'est pas une feuille Excel mais un SETUP.EXE !
-----------------------------------------------
Moi, je veux bien relire le code de tes amis allemands, mais c'est du boulot à plein temps, ça ! T'as un budget de combien pour mon salaire ?
Pis c'est quoi la licence d'utilisation de leur code ?
Bon, par contre, s'il s'agit de t'expliquer comment copier une cellule, ça devrait aller.
Sauf que tu vas le faire toi-même, que tu vas publier ton résultat ici, et que je vais t'expliquer que ce n'est pas bon et que je vais te montrer ce qu'il aurait fallu écrire (
- eh, sans rire, je vais vraiment le faire)
Or donc : copier une cellule d'un classeur à l'autre.
Tu vas donc ouvrir deux classeurs vides.
Dans une cellule d'une feuille de l'un, tu vas mettre une valeur.
Ensuite, tu vas démarrer l'enregistreur de macro.
Puis tu vas copier cette valeur et la mettre dans la cellule D3 d'une feuille de l'autre classeur.
Enfin, tu vas arrêter l'enregistreur de macro.
Et voilà. Il te reste à publier (*) ici le résultat de ta macro.
Et à attendre les commentaires et critiques désobligeantes qui ne manqueront pas de fuser.
Et à l'issue, tu sauras correctement copier une cellule.
Ensuite seulement, on verra pour le faire tous les x temps.
Remarque que je t'ai déjà donné une piste.
____________
(*) Attention, relire le règlement pour ne pas oublier la balise [code]
-----------------------------------------------
Moi, je veux bien relire le code de tes amis allemands, mais c'est du boulot à plein temps, ça ! T'as un budget de combien pour mon salaire ?
Pis c'est quoi la licence d'utilisation de leur code ?
Bon, par contre, s'il s'agit de t'expliquer comment copier une cellule, ça devrait aller.
Sauf que tu vas le faire toi-même, que tu vas publier ton résultat ici, et que je vais t'expliquer que ce n'est pas bon et que je vais te montrer ce qu'il aurait fallu écrire (
- eh, sans rire, je vais vraiment le faire)Or donc : copier une cellule d'un classeur à l'autre.
Tu vas donc ouvrir deux classeurs vides.
Dans une cellule d'une feuille de l'un, tu vas mettre une valeur.
Ensuite, tu vas démarrer l'enregistreur de macro.
Puis tu vas copier cette valeur et la mettre dans la cellule D3 d'une feuille de l'autre classeur.
Enfin, tu vas arrêter l'enregistreur de macro.
Et voilà. Il te reste à publier (*) ici le résultat de ta macro.
Et à attendre les commentaires et critiques désobligeantes qui ne manqueront pas de fuser.
Et à l'issue, tu sauras correctement copier une cellule.
Ensuite seulement, on verra pour le faire tous les x temps.
Remarque que je t'ai déjà donné une piste.
____________
(*) Attention, relire le règlement pour ne pas oublier la balise [code]
Bon ouai c'est vrai que c'était beaucoup demander, donc macro copier coller avec la condition de temps
Voila le code de ma macro copier coller ( je le fais pour les cellules qu'il faudra que je copie )
J'espere que c'est correct ...
Donc maintenant il me faudrait seulement ajouter le décalage d'une ligne plus la condition temps
J'ai trouvé un bout de code ressemblant sur le net, mais je ne le comprends pas et je peux donc pas le modifier :
PS : j'ai supprimé ma boulette de mon fichier .exe
Merci d'avance
Edit 05/01/2012 : En fait cette macro fonctionne assez bien mais elle me copie mes valeurs les une au dessus des autres genre en A1,A2,A3 il se passe quelques secondes puis me les copie en A4,A5,A6 etc ... alors que je souhaiterai avoir un changement de colonne à chaque intervalle.
Ou bien m'inscrire les résultats dans 3 colonnes en A1,B1,C1 et descendre d'une ligne à chaque intervalle
Je pense que c'est lié à A65536 mais déjà je comprends pas son effet donc je ne sais par quoi le remplacer...
Une idée ??
Voila le code de ma macro copier coller ( je le fais pour les cellules qu'il faudra que je copie )
Sub copiercoller() ' ' copiercoller Macro ' Macro enregistrée le 04/01/2012 par Vincent ' ' Range("D3,D4,D5").Select Range("D5").Activate Selection.Copy Windows("Classeur2").Activate ActiveSheet.Paste End Sub
J'espere que c'est correct ...
Donc maintenant il me faudrait seulement ajouter le décalage d'une ligne plus la condition temps
J'ai trouvé un bout de code ressemblant sur le net, mais je ne le comprends pas et je peux donc pas le modifier :
Sub Tempo() 'Programmation de l'évènement toutes les secondes Tps = Now + TimeValue("00:00:05") Application.OnTime Tps, "Tempo" 'Traitement Range("ligne").Copy With Sheets("Feuil2") .Range("A65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues End With Application.CutCopyMode = False End Sub Sub StopTempo() On Error Resume Next 'Stopper la gestion de l'évènement OnTime en cours Application.OnTime Tps, "Tempo", , False End Sub
PS : j'ai supprimé ma boulette de mon fichier .exe
Merci d'avance
Edit 05/01/2012 : En fait cette macro fonctionne assez bien mais elle me copie mes valeurs les une au dessus des autres genre en A1,A2,A3 il se passe quelques secondes puis me les copie en A4,A5,A6 etc ... alors que je souhaiterai avoir un changement de colonne à chaque intervalle.
Ou bien m'inscrire les résultats dans 3 colonnes en A1,B1,C1 et descendre d'une ligne à chaque intervalle
Je pense que c'est lié à A65536 mais déjà je comprends pas son effet donc je ne sais par quoi le remplacer...
Une idée ??
vincent le laborantin a édité ce message
Oups désolé, mon message n'est jamais parti :confus:
Voilà à quoi il ressemblait
D'abord, concentrons-nous sur la copie.
Voilà donc un condensé de tout ce qu'il ne faut pas faire :
- Sélectionner et/ou activer des objects
- Se baser sur cequi est sélectionné et/ou activé au lieu de considérer directement les objets
- Utiliser le presse-papier comme zone de données temporaire
- Cibler une zone "en dur".
Evidemment, tous tes problèmes résident justement là.
C'était bien la peine de te demander de le faire
A bas en fait il n'a pas été fini (je t'écrivais quand le boss a convoqué une réunion surprise.....)
Voilà à quoi il ressemblait
Citation :
Mais ne sois pas si impatient.D'abord, concentrons-nous sur la copie.
Voilà donc un condensé de tout ce qu'il ne faut pas faire :
- Sélectionner et/ou activer des objects
- Se baser sur cequi est sélectionné et/ou activé au lieu de considérer directement les objets
- Utiliser le presse-papier comme zone de données temporaire
- Cibler une zone "en dur".
Sub copiercoller() Range("D3,D4,D5").Select Range("D5").Activate Selection.Copy Windows("Classeur2").Activate ActiveSheet.Paste End Sub
Evidemment, tous tes problèmes résident justement là.
C'était bien la peine de te demander de le faire
A bas en fait il n'a pas été fini (je t'écrivais quand le boss a convoqué une réunion surprise.....)
Donc, dès qu'il s'agit de jongler avec les feuilles et les classeurs, il faut les préciser.
Range(..), ça n'existe pas. C'est : Application.Workbooks(..).Worksheets(..).Range(..)....
Dans la plupart des cas, laisser Excel se débrouiller avec les objets par défaut est suffisant.
Pas là.
Donc on va définir le classeur source, la feuille source et les cellules sources.
Puis le classeur cible, la feuille cible et les cellules cibles.
Ensuite, on ne va surtout pas faire un copier/coller presse-papier, mais une copie de cellules.
Il y a juste un problème. Ca ne marche qu'une fois
Parce qu'on réinitialise tout à chaque fois.
Sortons donc l'initialisation :
Allez, un peu de condensation :
Bon, ben maintenant, on cadence tout ça :
Les points d'interrogation représentent un mystère que je te laisse découvrir.
Il y a là des choses à écrire. Qu'en dit l'aide de la fonction OnTime ?
Range(..), ça n'existe pas. C'est : Application.Workbooks(..).Worksheets(..).Range(..)....
Dans la plupart des cas, laisser Excel se débrouiller avec les objets par défaut est suffisant.
Pas là.
Donc on va définir le classeur source, la feuille source et les cellules sources.
Puis le classeur cible, la feuille cible et les cellules cibles.
Ensuite, on ne va surtout pas faire un copier/coller presse-papier, mais une copie de cellules.
Sub copie_pascoller() Dim clas_source As Workbook Dim clas_cible As Workbook Dim cell_source As Range Dim cell_cible As Range ' // On considère que la macro est enregistré dans le classeur source Set clas_source = ThisWorkbook Set cell_source = clas_source.Worksheets(1).Range("D3;D5") Set clas_cible = Workbooks("Classeur2") set cell_cible = clas_cible.Worksheets(1).Range("D5") ' // Et on copie ! cell_source.Copy Destination:=cell_cible ' // Et on cible une case plus bas Set cell_cible = cell_cible.Offset(1) End Sub
Il y a juste un problème. Ca ne marche qu'une fois
Parce qu'on réinitialise tout à chaque fois.
Sortons donc l'initialisation :
' // Variables connues de plusieurs fonctions Dim cell_source As Range Dim cell_cible As Range Sub copie_ini() Dim clas_source As Workbook Dim clas_cible As Workbook Set clas_source = ThisWorkbook Set cell_source = clas_source.Worksheets(1).Range("D3;D5") Set clas_cible = Workbooks("Classeur2") set cell_cible = clas_cible.Worksheets(1).Range("D5") End Sub Sub copie() cell_source.Copy Destination:=cell_cible Set cell_cible = cell_cible.Offset(1) End Sub
Allez, un peu de condensation :
' // Variables connues de plusieurs fonctions Dim cell_source As Range Dim cell_cible As Range Sub copie_ini() Set cell_source = ThisWorkbook.Worksheets(1).Range("D3;D5") set cell_cible = Workbooks("Classeur2").Worksheets(1).Range("D5") End Sub Sub copie() cell_source.Copy Destination:=cell_cible Set cell_cible = cell_cible.Offset(1) End Sub
Bon, ben maintenant, on cadence tout ça :
Sub AllezHopCestparti copie_initialisation Application.OnTime Now + TimeValue("00:00:05"), "copie"), ???????? End Sub
Les points d'interrogation représentent un mystère que je te laisse découvrir.
Il y a là des choses à écrire. Qu'en dit l'aide de la fonction OnTime ?
zeb a édité ce message
Euh je dirais qu'il manque la fin d'instruction ....
Et c'est normal la parenthèse à la ligne trois de la fonction allezhopcestparti A la fin de : "copie") ??
Sinon je ne vois pas par quoi finir la condition, mais ce que je comprends pas c'est qu'il n'y a pas besoin de boucle ou un truc comme ca pour repeter la macro ?
Et aussi ligne 2 ce allezhopcestparti je suppose qu'il faut remplacer par copie_ini et pas copie_initialisation ?
Et pour finir j'ai un message d'erreur à la ligne 5 quand je lance copie :
Set cell_source = ThisWorkbook.Worksheets(1).Range("D3;D5")
Et je ne sais absolument pas pourquoi ...
Merci pour le temps passé sur mon cas désespéré ....
Et c'est normal la parenthèse à la ligne trois de la fonction allezhopcestparti A la fin de : "copie") ??
Sinon je ne vois pas par quoi finir la condition, mais ce que je comprends pas c'est qu'il n'y a pas besoin de boucle ou un truc comme ca pour repeter la macro ?
Et aussi ligne 2 ce allezhopcestparti je suppose qu'il faut remplacer par copie_ini et pas copie_initialisation ?
Et pour finir j'ai un message d'erreur à la ligne 5 quand je lance copie :
Set cell_source = ThisWorkbook.Worksheets(1).Range("D3;D5")
Et je ne sais absolument pas pourquoi ...
Merci pour le temps passé sur mon cas désespéré ....
vincent le laborantin a dit :
Euh je dirais qu'il manque la fin d'instruction .......
Demande à Excel
vincent le laborantin a dit :
Et c'est normal la parenthèse à la ligne trois de la fonction allezhopcestparti A la fin de : "copie") ??Non, retire-la. Merci.
vincent le laborantin a dit :
Sinon je ne vois pas par quoi finir la condition, mais ce que je comprends pas c'est qu'il n'y a pas besoin de boucle ou un truc comme ca pour repeter la macro ? C'est justement ce que je te demande de chercher : Demande à Excel.
La solution est à mettre à l'endroit des ?????
vincent le laborantin a dit :
Et aussi ligne 2 ce allezhopcestparti je suppose qu'il faut remplacer par copie_ini et pas copie_initialisation ?Oui, tu supposes bien. Merci.
vincent le laborantin a dit :
Et pour finir j'ai un message d'erreur à la ligne 5 quand je lance copie :Set cell_source = ThisWorkbook.Worksheets(1).Range("D3;D5")
Et je ne sais absolument pas pourquoi ...
Euh.... un grimlin est venu remplacer un point sur deux par une virgule dans la syntaxe
. Change ça aussi.
"D3:D5"
vincent le laborantin a dit :
Merci pour le temps passé sur mon cas désespéré .... Il n'y a rien de désespéré si tu acceptes d'aller me lire l'aide d'Excel/VBA sur la fonction OnTime pour savoir quoi mettre à la place de ces fichus points d'interrogation !
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumMacro excel copie ligne condition
- ForumMacro excel copie cellule dans autre feuille
- ForumMacro excel copie coller cellules
- ForumQuestion macro excel
- ForumMacro excel crã er une copie
- ForumQuestion a propos du phpbb
- ForumQuestion a propos de vista
- ForumQuestion a propos de la ram
- ForumQuestion a propos du pci
- ForumQuestion a propos des tft
- Voir plus