Bonjour a tous,
ça ne m'arrive pas souvent mais la je pète un boulon devant mon écran depuis hier soir....
J'ai besoin de votre aide sur une macro.
Voila le soucis :
-Input -> une cellule avec un nombre qui peut avoir des décimale
-je vais récupérer cette valeur que je met dans une variable "Double" que j'utilise ensuite dans une FormulaR1C1
-Avec cette façon de faire la plage résultante de cette formule me donne une valeur de type "42;32" alors que l'entré est "42,32".
-Le point-virgule n'a rien à faire la et je comprend (après 2 heure...) qu'il s'agit d'un problème de conversion du séparateur de décimale "," vers "."
Ok pas de soucis suffit donc de convertir la virgule dans ma variable en un points. La sa commence a coincé... Après un longue (très longue... trop longue...) séance de bidouillage j'arrive a obtenir ceci:
ou ma valeur d'entré a été mis dans la variable "Cloture" puis la "," remplacé par un "."
Code : Sélectionner tout - Visualiser dans une fenêtre à part ActiveCell.FormulaR1C1 = "=MAX(RC[-28]-RC[-27], " & Replace(Cloture, ",", ".") & ")"
Le truc c'est que cette formule est vachement simplifié et que la variable "Cloture" je vais l'utiliser 50 fois au moins. Pour éviter les erreur de frappe et une meilleur lisibilité j'ai voulu SORTIR de ma formule " & Replace(Cloture, ",", ".") & ")" pour faire plus propre et la pas moyen....
j'ai tester :
etc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Cloture.Value = Replace(Cloture, ",", ".") Cloture = 1 * " & Cloture & " Cloture = "(" & Replace(Cloture, ",", ".") & ")" Cloture= Replace(Cloture, ",", ".")
rien ne fonctionne . Quelqu'un saurait me dire la façon d'utiliser Replace() pour une variable ? Je ne peut pas modifier l'affichage de ma feuille donc je doit garder des virgule en entré et il me faudrais juste une façon de convertir definitivement (même en mode gros bourrin) une variable double avec une virgule en une variable double avec un point sans perdre les information (nombre de décimale dans la cellule pouvant varier).
merci mille fois de votre aide. Je part me pendre et je reviend.
PS le code au cas (qui marche sans problème)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Sub ADX() Dim DerniereLigne As Long 'va chercher la valeur de la periode Dim Periode As Double Dim F4 As Worksheet Set F4 = Worksheets("Download") Periode = F4.Range("P18").Value 'va chercher la valeur cloture Dim Cloture As Double Dim F6 As Worksheet Set F6 = Worksheets("Veille") Cloture = F6.Range("H65536").End(xlUp).Value 'recupere le nombre de ligne remplie DerniereLigne = Range("A1").End(xlDown).Row 'Aller à la dernière remplie [A65536].End(xlUp).Select 'Aller a la cellule 32 , c'est a dire colonne AF "TR" Cells(ActiveCell.Row, 32).Select If DerniereLigne < 2 Then ActiveCell.FormulaR1C1 = "" Else ActiveCell.FormulaR1C1 = "=MAX(RC[-28]-RC[-27], " & Replace(Cloture, ",", ".") & ")" End If End Sub
Partager