[VBA] Insérer une variable dans une formule Excel via une macro
Bonjour,
Je souhaite mettre une variable dans une formule Excel via une macro en VB.
Voici un bout du code et la ligne que j'utilise :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| Private Sub EcritureData(ByVal sFile As String)
Dim x As Long
Dim Data As String
Dim NumFichier As Integer
Dim cellule As Integer
x = 1
NumFichier = FreeFile
Open sFile For Input As #NumFichier
Do While Not EOF(NumFichier)
Line Input #NumFichier, Data
If x = 1 Then
Cells(x, 5) = Data
ElseIf x = 2 Then
Range("A2").Formula = "=GAUCHE("+Cstr(Data)+";CHERCHE(" ";"+Cstr(Data)+"))" // LA LIGNE EN QUESTION
End If
x = x + 1
Loop
Close #NumFichier
End Sub |
J'ai toujours cette erreur : "Erreur de Syntaxe". Je pense que cela provient du fait que j'utilise la fonction CHERCHE car je l'utilise pour trouver un espace dans ma chaine de caractère qui se présente comme tel : 115 "xxx.xxx.xxx.xxx". Comme vous l'aurez compris j'aimerais directement extraire de ma chaine le "115". En espérant vous avoir apporter assez d'info.
Sticks_678
[VBA] Insérer une variable dans une formule Excel via une macro
J'ai fais un deuxième essai en mettant l'espace dans une variable pour ne plus avoir le soucis des doubles quotes qui pourrait poser problème.
Code:
1 2 3 4
| Dim espace as String
espace = " "
//.........
Range("A2").Formula = "=GAUCHE(" + Data + ";CHERCHE(" + espace + ";" + Data + "))" |
L'erreur a maintenant changé : "Erreur définie par l'application ou par l'objet".
Si cela peut apporter d'autre piste pour une éventuelle résolution :)
Sticks_678
[VBA] Insérer une variable dans une formule Excel via une macro
Bonjour Kimy,
J'ai résolu mon problème. Enfaite ma chaine de caractère était comme ceci : 10 "xxx.xxx.xxx.xxx". Les guillemets à l'intérieur de cette chaine posait problème, je les ai donc supprimés ce qui m'a permis de résoudre mon problème.
Je poste mon code si jamais des personnes ce retrouve avec le même problème en sachant qu'il n'est pas optimisé à cause du niveau que j'ai dans ce langage !
Je te remercie donc pour ton aide qui m'a été très instructive et surtout utile !
Code:
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
| Private Sub EcritureData(ByVal sFile As String)
Dim x As Long
Dim Data As String
Dim NumFichier As Integer
Dim cellule As Integer
Dim espace As String
Dim oStr As String
x = 1
NumFichier = FreeFile
Open sFile For Input As #NumFichier
Do While Not EOF(NumFichier)
Line Input #NumFichier, Data
If x = 1 Then
Cells(x, 5) = Data
Data = Replace(Data, " """, " ") // Enleve le 1er guillement
Data = Replace(Data, """", "") // Enleve le guillemet en fin de chaine
Cells(x, 5).FormulaLocal = "=GAUCHE(""" & CStr(Data) & """;CHERCHE("" "";""" & CStr(Data) & """))"
ElseIf x >= 2 Then
Cells(x, 1) = Data
'Cells(x, 1).FormulaLocal = "=GAUCHE(""" & CStr(Data) & """;CHERCHE("" "";""" & CStr(Data) & """))"
End If
x = x + 1
Loop
Close #NumFichier
End Sub |