copie range

rcgozer

XLDnaute Nouveau
Bonjour tout le monde
voici mon probleme je voudrais savoir si il est possible de copier une plage de donnée (a1:h1) sur une autre rangée et cela sans utilisée copier coller.Les donnée (a1:h1) sont mis a jour a tout les secondes
donc elle doivent etre copier sur une rangée différente a chaque secondes.merci

Message édité par: rcgozer, à: 19/09/2005 23:57

Message édité par: rcgozer, à: 20/09/2005 00:56
 

rcgozer

XLDnaute Nouveau
Salue les donnée sont mis a jour a l'aide d'un serveur opc (kepserveur) les donnée provienne d,un automate programmable
je join le fichier (une feuille seulement) c'est la rangée 4 qui doit etre copié dans une autre feuille merci [file name=Classeur1_20050920012949.zip size=31441]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur1_20050920012949.zip[/file]
 

Pièces jointes

  • Classeur1_20050920012949.zip
    30.7 KB · Affichages: 36
M

Mytå

Guest
Salut le Forum

rcgozer tu veux enregistrer sur une plage de combien de secondes

car 18 hres donne déjà 64800 lignes

L'enregistrement est déclencher manuellement ou automatiquement

Myå

P.S. Je travaille aussi en acquisition des données mais via RSLink
automate Allen Bradley
 

rcgozer

XLDnaute Nouveau
présentement les donnée sont copiée a toute les deux minutes
je les copie avec une macro

Private Sub TextBox2_Change()
On Error Resume Next
' Macro2 Macro
' Macro enregistrée le 2004-09-23 par regie

'
Sheets('Feuil2').Select
Range('A9:S9').Select
Selection.Copy
Sheets('cumulatif').Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveCell.Offset(1, 0).Range('a1').Select
Sheets('Feuil2').Select
Range('A10').Select

End Sub
mais j'aimerais les copiée d'une autre facon
ex:( Range('e9:e16').Value = Range('b9:b16').Value)
merci
 

rcgozer

XLDnaute Nouveau
rcgozer écrit:
présentement les donnée sont copiée a toute les deux minutes
je les copie avec une macro

Private Sub TextBox2_Change()
On Error Resume Next
' Macro2 Macro
' Macro enregistrée le 2004-09-23 par regie

'
Sheets('Feuil2').Select
Range('A9:S9').Select
Selection.Copy
Sheets('cumulatif').Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveCell.Offset(1, 0).Range('a1').Select
Sheets('Feuil2').Select
Range('A10').Select

End Sub
mais j'aimerais les copiée d'une autre facon
ex:( Range('e9:e16').Value = Range('b9:b16').Value)
merci
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir rcgozer, Mytå,

Sans grande conviction rcgozer, tu trouveras ci-joint ton exemple avec une tentative de réponse à ton problème... Je t'avoue ne pas avoir tout compris et ne pas connaître le kepserveur dont tu parles... A tout hasard, comme j'ai l'impression que le refresh de tes données ne déclenchera pas l'évènement Change() de la feuille, j'ai inclus un simple timer qui provoque l'archivage des valeurs de la plage 'A4: S4' dans un autre onglet toutes les 2 secondes... (voir boutons 'Départ Archivage' et 'StopArchivage').

J'ai franchement un doute quant à l'efficacité d'une telle méthode ici (tout dépend en fait, de la méthode de rafraichissement de tes données)...

J'ai donc mis dans un module de code général (nommé 'ModHistoriser') :
Option Explicit
Dim
Temps As Variant

Public Sub Historiser()
Dim TabTemp As Variant
Dim
L As Long
      'Programmation de l'évènement toutes les 2 secondes
      Temps = Now + TimeValue('00:00:02')
      Application.OnTime Temps, 'Historiser'
      'Historise les données dans l'onglet 'Archive'
      TabTemp = Sheets('Feuil2').Range('A4:S4').Value
      With Sheets('Archive')
            L = .Range('A65536').End(xlUp).Row + 1
            .Range(.Cells(L, 1), .Cells(L, 19)).Value = TabTemp
      End With
End Sub


Public Sub StopHistorique()
      On Error Resume Next
      'Stoppe la gestion de l'évènement OnTime
      Application.OnTime Temps, 'Historiser', , False
      On Error GoTo 0
End Sub
Et dans le module de code de l'objet ThisWorkbook :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
      StopHistorique
End Sub
Cordialement, [file name=PourRcgozer.zip size=37636]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PourRcgozer.zip[/file]
 

Pièces jointes

  • PourRcgozer.zip
    36.8 KB · Affichages: 30

rcgozer

XLDnaute Nouveau
Re:copie range (solution ok)

merci beaucoup c'est exactement cela que je voulais

archivage est déclanché par un timer (kepdde|_ddedata!Channel1.Device1.log) dans L'automate qui envoie 1 ou 0 a la feuille excel se quidéclanchais la macro ( copié coller) merci
 

rcgozer

XLDnaute Nouveau
merci cela fonctionne bien

autre probleme

une fois par semaine le fichier excel est sauvegarder sur le disque dur avec comme nom la date ensuite ( la feuille archive est effacé et une autre semaine recommence ) comment faire pour que les donnée se log de nouveaux mais au début de la feuille archive.
 

rcgozer

XLDnaute Nouveau
Bonjour
ok j'ai trouver la solution pour que les donnée se log au début de la
feuille
mais a la place du timer ontime est til possible que la copie des donnée de (la feuil 2) vers la feuil (archivage ) démarre quand la valeur de la cellule a1 change de 0 a 1 . (a1 passe de 0 a 1 a tout les 2 minute.) merci
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir rcgozer,

...a la place du timer ontime est til possible que la copie des donnée de (la feuil 2) vers la feuil (archivage ) démarre quand la valeur de la cellule a1 change de 0 a 1 . (a1 passe de 0 a 1 a tout les 2 minute.)
Je te le disais dans mon post précédent 'j'ai l'impression que le refresh de tes données ne déclenchera pas l'évènement Change() de la feuille', et si j'ai raison, il ne sera malheureusement pas possible de répondre positivement à ta demande.

Pour que nous puissions en avoir le coeur net, faisons un test :

- Supprime d'abord les procédures Sub Historiser(), Sub StopHistorique() et Sub Workbook_BeforeClose() définies précédemment.
- Copie la procédure ci-dessous dans le module de code de l'objet 'Feuil2'.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim TabTemp As Variant
Dim
L As Long
      'Se déclenche seulement si A1 est modifiée et <> 0
      If Not Application.Intersect(Target, Range('A1')) Is Nothing Then
            If Target.Value Then
                  'Historise les données dans l'onglet 'Archive'
                  TabTemp = Sheets('Feuil2').Range('A4: S4').Value
                  With Sheets('Archive')
                          L = .Range('A65536').End(xlUp).Row + 1
                          .Range(.Cells(L, 1), .Cells(L, 19)).Value = TabTemp
                  End With
            End If
      End If
End Sub
Donc, dans la feuille 'Feuil2', si tu saisies manuellement dans la cellule A1 la valeur '1', l'archivage doit se faire.

Maintenant, tu peux tester en laissant l'automate agir et voir si l'archivage se déclenche ou non...

Cordialement,
 

rcgozer

XLDnaute Nouveau
salut
merci de ton aide
cela ne fonctionne pas
je crois que je vais utiliser la fonction ontime

mais il il ya un petit probleme si par erreur le bouron archivage est appuier plusieurs fois les donnée sont archiver plusieurs fois comme si plus d'un timer étais en fonction
merci

22/09/2005

j'ai supprimer le bouton départ archivage pour le renplacer par Private sub WORKBOOK_OPEN () DE CETTE FACON L'ARCHIVAGE DÉMARRE A L'OUVERTURE DU FICHER ET CELA FONCTIONNE TRES BIEN MERCI ENCORE DE TON AIDE.

Message édité par: rcgozer, à: 22/09/2005 16:51
 

Discussions similaires

Statistiques des forums

Discussions
312 236
Messages
2 086 481
Membres
103 232
dernier inscrit
logan035