le 09-27-2021 08:10 AM
Bonjour à tous,
Je ne suis pas programmeur d'origine, mais je me débrouille avec Labview depuis quelques années, sur les bases d'anciens programmes.
Initialement en 8.2, je les ai fait passer progressivement en 2016 sans trop de problèmes. Mais depuis un passage simultané Win7/Win10 et LV2016/LV2020, il y a un problème que je n'arrive pas à résoudre. Evidemment, le mieux serait d'essayer Win10+LV2016 ou Win7+LV2020 pour connaître l'origine, mais ce n'est pas possible...
La majorité de mes programmes consiste en l'acquisition de mesures, écrites au fur et à mesure dans un fichier.
A la fin de la session, le programme ouvre le fichier sous Excel, ainsi qu'une macro, et exécute cette dernière.
Hors, depuis la migration, le format des cellules dans lesquelles il y a une formule (moyenne, écart-type, etc...) est en "Personnalisé", avec un "." au lieu de la "," habituelle (en format Standard).
Le plus étrange, c'est que si j'exécute la macro indépendamment de LV sur mon fichier brut, cela fonctionne très bien !
Pour avancer, j'ai donc voulu moderniser un de ces programmes.
Mais le VI "Ecrire dans un fichier" n'est plus supporté, et le VI de remplacement ne fonctionne pas de la même manière.
L'ancien VI possédait une entrée "ajouter au fichier", pas le nouveau (qui possède une entrée Refnum).
Evidemment, à chaque fois que le nouveau VI est activé, il écrit au début du fichier.
Et il est impossible de câbler la sortie Refnum d'une structure à l'autre.
Ce n'est pas l'origine de mon problème de macro puisque, même s'il n'y a qu'une ligne dans mon fichier, les cellules avec formule se retrouvent quand même avec ce fichu format "Personnalisé". Néanmoins, j'aimerais savoir comment faire.
Je pense donc que le problème vient de cette partie :
VI "Macro" :
VI "Ouvre Excel" :
Désolé si le vocabulaire n'est pas assez technique... J'ai appris tout ce que je sais en étudiant les programmes d'origine, j'ai donc quelques (un paquet de) lacunes...
Et merci par avance pour votre aide !
Résolu ! Accéder à la solution.
09-27-2021 08:16 AM - modifié 09-27-2021 08:21 AM
Je joins les fichiers.
Malheureusement il est impossible de charger un .xlsm sur le forum.
le 09-30-2021 05:37 AM
Et si c'était bêtement un problème de séparateur décimal de Windows 10 :
le 09-30-2021 07:22 AM
le 09-30-2021 08:11 AM
Bonjour et merci pour votre retour.
Concernant le séparateur, W10 et LV sont bien configurés, je viens de vérifier.
Voici le fichier brut écrit par LV :
Voici le fichier après que le programme LV ait lancé et appliqué la macro (en orange, les cases avec une formule) :
Voici le fichier si j'applique la même macro au fichier brut, mais avec Excel :
C'est bien le format de ces cellules qui est modifié. Mais comment est-ce possible ? Ca commence à me rendre fou 😕
le 09-30-2021 08:30 AM
le 09-30-2021 08:41 AM
Non, elles sont en "Standard"
le 09-30-2021 09:00 AM
Je crois que VBA utilise toujours le . comme séparateur décimal. Il est très possible que la cause soit dans la macro (lorsque qu'appelé via LabVIEW ça passe par une méthode ActiveX, c'est donc différent que lorsque c'est appelé directemet par Excel). Il est possible qu'il suffit d'ajouter .value à une (ou plusieurs) ligne de la macro pour forcer le format nombre.
Ben64
le 09-30-2021 09:57 AM
Intéressant, merci.
Pouvez-vous me donner un exemple où insérer .value ?
Voici une de mes macros :
Sub Macro_test()
'
' Macro_test Macro
'
'
Range("A1").Select
ActiveCell.FormulaR1C1 = "Températures et heures de référence obtenues avec :"
Range("A1").Select
Selection.Font.Bold = True
Range("A16:D36").Select
Selection.Cut Destination:=Range("A19:D39")
Range("A18").Select
ActiveCell.FormulaR1C1 = "Tambiante"
Range("B18").Select
ActiveCell.FormulaR1C1 = "Tref"
Range("C18").Select
ActiveCell.FormulaR1C1 = "fref"
Range("D18").Select
ActiveCell.FormulaR1C1 = "Heure d'acquisition"
Range("A18:D18").Select
Selection.Font.Bold = True
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D18").Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D19").Select
ActiveWindow.SmallScroll Down:=15
Range("D42").Select
ActiveCell.FormulaR1C1 = "Moyenne"
Range("D43").Select
ActiveCell.FormulaR1C1 = "Ecart-type"
Range("D44").Select
ActiveCell.FormulaR1C1 = "9/1/2021"
Range("A44").Select
ActiveCell.FormulaR1C1 = "Sonde de référence SBE35 n°111"
Range("A44").Select
ActiveCell.FormulaR1C1 = "Sonde de référence SBE35 n° 111 corrigée le"
Range("A44").Select
Selection.Font.Bold = True
Range("A45").Select
ActiveCell.FormulaR1C1 = "Offset :"
Range("A46").Select
ActiveCell.FormulaR1C1 = "Pente :"
Range("C45").Select
ActiveCell.FormulaR1C1 = "0.00007"
Range("C46").Select
ActiveCell.FormulaR1C1 = "1.0000043"
Range("C42").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(R[-23]C:R[-3]C)"
Range("C43").Select
ActiveCell.FormulaR1C1 = "=STDEV.S(R[-24]C:R[-4]C)"
Range("C43").Select
Selection.NumberFormat = "0.00"
Range("C42").Select
Selection.NumberFormat = "0.0"
Range("B42").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(R[-23]C:R[-3]C)"
Range("B42").Select
Selection.NumberFormat = "0.0000"
Range("B43").Select
ActiveCell.FormulaR1C1 = "=STDEV.S(R[-24]C:R[-4]C)"
Range("B43").Select
Selection.NumberFormat = "0.0000"
Range("A42").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(R[-23]C:R[-3]C)"
Range("A43").Select
ActiveCell.FormulaR1C1 = "=STDEV.S(R[-24]C:R[-4]C)"
Range("A43").Select
Selection.NumberFormat = "0.000"
Range("A42").Select
Selection.NumberFormat = "0.000"
Range("A43").Select
ActiveWindow.SmallScroll Down:=-6
Range("A42:C43").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("A47").Select
ActiveCell.FormulaR1C1 = "Tref cor"
Range("B47").Select
ActiveCell.FormulaR1C1 = "Ecart-type"
Range("C47").Select
ActiveCell.FormulaR1C1 = "Heure de déb."
Range("D47").Select
ActiveCell.FormulaR1C1 = "Heure de fin"
Range("D48").Select
ActiveWindow.SmallScroll Down:=-24
Range("A19:D40").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("F26").Select
ActiveWindow.SmallScroll Down:=-18
Range("A47:D47").Select
Selection.Font.Bold = True
Range("F43").Select
ActiveWindow.SmallScroll Down:=0
Range("A48").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[-3]C[2]+R[-2]C[2]*R[-6]C[1]"
Range("A48").Select
Selection.NumberFormat = "0.0000"
Range("A48:D48").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("B48").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[-6]C"
Range("C48").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[-29]C[1]"
Range("D48").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=R[-9]C"
Range("D49").Select
ActiveWindow.SmallScroll Down:=-42
End Sub
le 09-30-2021 10:17 AM