Attente récupération de données VBA Excel
gregt73
Messages postés
55
Statut
Membre
-
Patrice33740 Messages postés 8930 Statut Membre -
Patrice33740 Messages postés 8930 Statut Membre -
Bonjour à tous,
N'étant pas très doué en VBA Excel, je me permet de vous demander de l'aide après avoir chercher mes réponses sur les forum, sans résultats...
Dans une macro excel, je vais récupérer des valeurs (valeurs historiques d'un autre logiciel).
Ensuite, je veux faire des calculs et mettre en forme ces valeurs dans mon fichier excel. Ca parait simple...
A un moment je veux copier/coller les valeurs récupérés de l'autre logiciel, mais je pense que la recuperation n'est pas terminé, alors que la commande de copier/coller est déjà passé, donc, j'obtiens aucune valeur dans ma cellule de destination.
Comment je pourrais faire pour attendre (et être sur) que mes cellules de recuperation des historiques soit bien mise à jour, avant de faire le copier/coller J'ai essayé "DoEvents" ou "Calculate", mais ca ne fonctionne pas...
Si qq1 pouvait m'aider...
Merci d'avance..
Ci-dessous le code
N'étant pas très doué en VBA Excel, je me permet de vous demander de l'aide après avoir chercher mes réponses sur les forum, sans résultats...
Dans une macro excel, je vais récupérer des valeurs (valeurs historiques d'un autre logiciel).
Ensuite, je veux faire des calculs et mettre en forme ces valeurs dans mon fichier excel. Ca parait simple...
A un moment je veux copier/coller les valeurs récupérés de l'autre logiciel, mais je pense que la recuperation n'est pas terminé, alors que la commande de copier/coller est déjà passé, donc, j'obtiens aucune valeur dans ma cellule de destination.
Comment je pourrais faire pour attendre (et être sur) que mes cellules de recuperation des historiques soit bien mise à jour, avant de faire le copier/coller J'ai essayé "DoEvents" ou "Calculate", mais ca ne fonctionne pas...
Si qq1 pouvait m'aider...
Merci d'avance..
Ci-dessous le code
Sub Récupération_compteur_moteur()
'
'
' MACRO RECUPERANT LES VALEURS HISTORIQUE
'
'
'
' Déclaration des variables
Dim Derlig As Long
Dim Données As Worksheet
Set Données = Worksheets("DATA")
Dim i As Integer
Dim j As Integer
Dim text As String
Dim calc As Long
Application.ScreenUpdating = False
' Effacement colonnes B, C, D, E, F, G et H de "DATA"
Données.Range("B11:H65536").Delete
' Calcul du nombre de moteur
ActiveWorkbook.Worksheets("PARAMETRAGE").Select
Derlig = Range("C11").End(xlDown).Row
' Copie du tag des moteurs dans "DATA"
Range("B11:C" & Derlig).Copy
Données.Cells(11, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' Ecriture du chemin ExaQ
For i = 11 To Derlig
Données.Cells(i, 7).Value = """" & Données.Cells(3, 7).Value & "." & Données.Cells(i, 2).Value & "." & Données.Cells(i, 3).Value & "." & Données.Cells(3, 8).Value & ".Value:Value" & """"
' Récupération de la valeur du compteur moteur en s
text = Données.Cells(i, 7).Value
Données.Cells(i, 8).Formula = "=QDATA(" & text & " ,NOW,,,,0,0,0,1,,,,,,,,,0,,0)"
Next i
' Copie de la valeur du compteur moteur en s
'PROBLEME ICI
Données.Range("H11:H" & Derlig).Copy
Données.Cells(11, 6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' Récupération de la valeur du compteur moteur en hr
For i = 11 To Derlig
' calc = Val(Cells(i, 6).Value)
Données.Cells(i, 5).Value = (Val(Données.Cells(i, 6).Value)) / 3600
Next i
' Comparaison valeur compteur moteur par rapport aux seuils pour affichage icon set
For i = 11 To Derlig
If (Données.Cells(i, 5).Value < Worksheets("PARAMETRAGE").Cells(i, 9).Value) Then
Données.Cells(i, 4).Value = 0
End If
If (Données.Cells(i, 5).Value >= Worksheets("PARAMETRAGE").Cells(i, 9).Value And Données.Cells(i, 4).Value < Worksheets("PARAMETRAGE").Cells(i, 6).Value) Then
Données.Cells(i, 4).Value = 1
End If
If (Données.Cells(i, 5).Value >= Worksheets("PARAMETRAGE").Cells(i, 6).Value And Données.Cells(i, 4).Value < Worksheets("PARAMETRAGE").Cells(i, 7).Value) Then
Données.Cells(i, 4).Value = 2
End If
If (Données.Cells(i, 5).Value >= Worksheets("PARAMETRAGE").Cells(i, 7).Value And Données.Cells(i, 4).Value < Worksheets("PARAMETRAGE").Cells(i, 8).Value) Then
Données.Cells(i, 4).Value = 3
End If
If (Données.Cells(i, 5).Value >= Worksheets("PARAMETRAGE").Cells(i, 8).Value) Then
Données.Cells(i, 4).Value = 4
End If
Next i
' Copie de la valeur ONTM et icon set de "DATA" vers "PARAMETRAGE"
For i = 11 To Derlig
Données.Range("B11:E" & Derlig).Copy
Worksheets("PARAMETRAGE").Cells(11, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next i
j = Derlig + 1
On Error Resume Next
Worksheets("PARAMETRAGE").Range("B" & j & ":I65536").SpecialCells(xlCellTypeConstants, 23).ClearContents
' Ecriture date actuelle
Worksheets("PARAMETRAGE").Range("J2").FormulaR1C1 = "=NOW()"
ActiveWorkbook.Worksheets("PARAMETRAGE").Select
Application.ScreenUpdating = True
End Sub
A voir également:
- Attente récupération de données VBA Excel
- Liste déroulante excel - Guide
- Trier des données excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
1 réponse
Bonjour,
il faut préciser dans quel classeur se situent les feuilles :
https://vb.developpez.com/faqvba/?page=3.2#MultiBook
il faut préciser dans quel classeur se situent les feuilles :
https://vb.developpez.com/faqvba/?page=3.2#MultiBook