Automatiser la copie de données actualisées

Résolu/Fermé
Signaler
Messages postés
27
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
15 août 2016
-
Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
-
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

Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
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
Messages postés
27
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
15 août 2016
2
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
Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
Peux tu mettre le problème à Résolu (en haut à gauche de ton premier message)

Bonne fin de journée
0
Messages postés
27
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
15 août 2016
2
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
Messages postés
27
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
15 août 2016
2
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
Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
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
Messages postés
27
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
15 août 2016
2
Pour précision, ma connexion de données avec actualisation est bien sûr faite sous Excel.
0
Messages postés
27
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
15 août 2016
2
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
Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
Bonjour

Peux tu nous donner le code de la macro qui réalise l'importation des données
0
Messages postés
27
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
15 août 2016
2
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
Messages postés
27
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
15 août 2016
2
Personne n'a d'idée pour mon problème ? Je me pose toujours des questions, sans trouver les réponses...
0
Messages postés
27
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
15 août 2016
2
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
Messages postés
27
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
15 août 2016
2
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