Automatiser la copie de données actualisées

Résolu/Fermé
papedu44 Messages postés 27 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 15 août 2016 - Modifié par papedu44 le 3/06/2013 à 16:59
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 - 4 juin 2013 à 18:42
Bonjour,

J'ai extrait des données de production d'un intranet à partir d'une connexion de données actualisée chaque minute.

Mon souhait est d'afficher ces données sous forme de graphique. Pour l'instant, je suis bloqué car les valeurs sont écrasées à chaque actualisation.

Comment faire pour automatiser le "copier-coller" de mes valeurs dans une nouvelle case d'un tableau à chaque actualisation ? Ou est-il possible de réaliser un graphique qui récupère les données automatiquement et qui s'enrichit chaque minute ?

D'avance merci pour votre aide.

6 réponses

ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
Modifié par ccm81 le 4/06/2013 à 16:43
Bonjour

peut être quelque chose comme ceci (1 top toutes les 10 s - à adapter)
https://www.cjoint.com/?3FeqJie8cgC

RQ. je ne sais pas comment ça va se comporter avec l'importation

Bonne suite
1
papedu44 Messages postés 27 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 15 août 2016 2
4 juin 2013 à 17:09
C'est parfait, un grand merci. Il est temps que je me mette sérieusement à VBA, ça peut faire des merveilles.
Je l'ai calé sur une minute et ajouté l'importation de données, ça marche parfaitement.
Bravo !
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
4 juin 2013 à 17:28
Peux tu mettre le problème à Résolu (en haut à gauche de ton premier message)

Bonne fin de journée
0
papedu44 Messages postés 27 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 15 août 2016 2
4 juin 2013 à 18:33
Je vais mettre le problème à résolu, je veux juste poser une dernière question.
Je veux suivre 5 valeurs dans le temps. J'ai modifié le code VBA mais j'ai sans doute fait une erreur de débutant.
A t = 1 j'ai 1 ligne
A t = 2 j'ai 5 lignes
A t = 3 j'ai 25 lignes ...

Je n'ai pas fermé quelquechose, c'est certain. Peux-tu me dire quoi ajouter pour résoudre ce problème STP ? Voilà le code VBA :

Public Sub TopChrono()
Dim li As Long
Dim li2 As Long
Dim li3 As Long
Dim li4 As Long
Dim li5 As Long
With Sheets(NF)
li = .Range(co & Rows.Count).End(xlUp).Row + 1
Temps = Now + TimeValue("00:01:00")
Application.OnTime Temps, "TopChrono"
.Range(co & li).Value = .Range(c).Value
li2 = .Range(co2 & Rows.Count).End(xlUp).Row + 1
Temps = Now + TimeValue("00:01:00")
Application.OnTime Temps, "TopChrono"
.Range(co2 & li2).Value = .Range(c2).Value
li3 = .Range(co3 & Rows.Count).End(xlUp).Row + 1
Temps = Now + TimeValue("00:01:00")
Application.OnTime Temps, "TopChrono"
.Range(co3 & li3).Value = .Range(c3).Value
li4 = .Range(co4 & Rows.Count).End(xlUp).Row + 1
Temps = Now + TimeValue("00:01:00")
Application.OnTime Temps, "TopChrono"
.Range(co4 & li4).Value = .Range(c4).Value
li5 = .Range(co5 & Rows.Count).End(xlUp).Row + 1
Temps = Now + TimeValue("00:01:00")
Application.OnTime Temps, "TopChrono"
.Range(co5 & li5).Value = .Range(c5).Value
End With
End Sub

Public Sub StopChrono()
On Error Resume Next
Application.OnTime Temps, "TopChrono", , False
End Sub
0
papedu44 Messages postés 27 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 15 août 2016 2
4 juin 2013 à 18:39
J'ai résolu mon problème tout seul en simplifiant le code :

Public Sub TopChrono()
Dim li As Long
Dim li2 As Long
Dim li3 As Long
Dim li4 As Long
Dim li5 As Long
With Sheets(NF)
li = .Range(co & Rows.Count).End(xlUp).Row + 1
li2 = .Range(co2 & Rows.Count).End(xlUp).Row + 1
li3 = .Range(co3 & Rows.Count).End(xlUp).Row + 1
li4 = .Range(co4 & Rows.Count).End(xlUp).Row + 1
li5 = .Range(co5 & Rows.Count).End(xlUp).Row + 1
Temps = Now + TimeValue("00:01:00")
Application.OnTime Temps, "TopChrono"
.Range(co & li).Value = .Range(c).Value
.Range(co2 & li2).Value = .Range(c2).Value
.Range(co3 & li3).Value = .Range(c3).Value
.Range(co4 & li4).Value = .Range(c4).Value
.Range(co5 & li5).Value = .Range(c5).Value
End With
End Sub

Merci encore pour ton aide ccm81. Je marque le sujet comme résolu.
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
4 juin 2013 à 18:42
Il n'y a pas de raison de relancer le timer pour chaque report, les 5 copies se feront au top en cours

With Sheets(NF)
li = .Range(co & Rows.Count).End(xlUp).Row + 1
Temps = Now + TimeValue("00:01:00")
Application.OnTime Temps, "TopChrono"
.Range(co & li).Value = .Range(c).Value
li2 = .Range(co2 & Rows.Count).End(xlUp).Row + 1

.Range(co2 & li2).Value = .Range(c2).Value
li3 = .Range(co3 & Rows.Count).End(xlUp).Row + 1

.Range(co3 & li3).Value = .Range(c3).Value
li4 = .Range(co4 & Rows.Count).End(xlUp).Row + 1

.Range(co4 & li4).Value = .Range(c4).Value
li5 = .Range(co5 & Rows.Count).End(xlUp).Row + 1

.Range(co5 & li5).Value = .Range(c5).Value
End With

RQ. et si les lignes de report sont identiques tu peux supprimer li2= ... , li3 = ... etc.
0
papedu44 Messages postés 27 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 15 août 2016 2
3 juin 2013 à 16:52
Pour précision, ma connexion de données avec actualisation est bien sûr faite sous Excel.
0
papedu44 Messages postés 27 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 15 août 2016 2
3 juin 2013 à 18:15
Je reste bloqué sur mon problème. J'essaie de trouver quelque chose comme :

Si "le contenu de ma cellule" est différent "du contenu de ma cellule précédemment"
Alors "je copie ma cellule

Mais évidemment ça ne fonctionne pas, car ma cellule en question s'actualise chaque minute par connexion de données.

J'ai donc créé une deuxième connexion de données, identique en valeur, mais avec une actualisation par heure (au lieu d'une par minute). Comme cela ça pourrait marcher, mais encore faut-il pouvoir automatiser la copie de ma cellule chaque minute...
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
3 juin 2013 à 18:45
Bonjour

Peux tu nous donner le code de la macro qui réalise l'importation des données
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
papedu44 Messages postés 27 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 15 août 2016 2
3 juin 2013 à 18:52
Bonsoir,

Il ne s'agit pas d'une macro, mais d'une connexion de données (dans l'onglet Données, Données externes, A partir du web. Et là je donne l'adresse de l'intranet et je récupère le tableau de données.

Dans mon tableau de données, j'ai 4 informations de production (débits) et la date/heure/min/sec de la mesure.
0
papedu44 Messages postés 27 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 15 août 2016 2
4 juin 2013 à 07:25
Personne n'a d'idée pour mon problème ? Je me pose toujours des questions, sans trouver les réponses...
0
papedu44 Messages postés 27 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 15 août 2016 2
4 juin 2013 à 08:45
Peut-être que la description de mon problème est insuffisante ? Si tel est le cas, je peux donner des détails !

Je cherche à :
à t=0, copier A1 dans B1
à t=1mn, copier A1 dans B2
à t=2mn, copier A1 dans B3
à t=3mn, copier A1 dans B4
...
0
papedu44 Messages postés 27 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 15 août 2016 2
4 juin 2013 à 11:46
Je peux également arriver à mes fins si je réussi à faire :

si(A1<>"0"), copier A1 en B1
si(et(A1<>"0";A1<>B1)), copier A1 en B2
si(et(A1<>"0";A1<>B2)), copier A1 en B3
...

en considérant que ma case A1 est actualisée chaque minute.

Le problème, c'est de faire une copie de valeurs périodique pour faire un historique des valeurs de A1.
0