Attente récupération de données VBA Excel

Fermé
gregt73 Messages postés 52 Date d'inscription lundi 25 mai 2009 Statut Membre Dernière intervention 21 janvier 2019 - 9 août 2018 à 11:12
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 9 août 2018 à 17:15
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
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:

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
9 août 2018 à 17:15
Bonjour,

il faut préciser dans quel classeur se situent les feuilles :
https://vb.developpez.com/faqvba/?page=3.2#MultiBook
0