Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Excel 2003 - VBA propriété Formula

10 réponses
Avatar
thomas
Bonjour,

j'ai un petit souci avec la propriété formula

si j'écris : Range("B1").Formula = "=" & File_id

ca marche avec File_id = "'C:\Agences\List_2008_02.xls'!Checked_By"

mais si File_id=
"SI(ESTERREUR('C:\Agences\List_2008_02.xls'!Checked_By)=FAUX;'C:\Agences\List_2008_02.xls'!Checked_By;"")"

ca ne marche plus. je ne trouve pas mon erreur

Merci

10 réponses

Avatar
michdenis
Tu dois doubler tes guillemets ici :

| Checked_By;"")"
Comme ceci :
Checked_By;"""")"


"thomas" <nomail> a écrit dans le message de news:
Bonjour,

j'ai un petit souci avec la propriété formula

si j'écris : Range("B1").Formula = "=" & File_id

ca marche avec File_id = "'C:AgencesList_2008_02.xls'!Checked_By"

mais si File_id=
"SI(ESTERREUR('C:AgencesList_2008_02.xls'!Checked_By)úUX;'C:AgencesList_2008_02.xls'!Checked_By;"")"

ca ne marche plus. je ne trouve pas mon erreur

Merci
Avatar
thomas
Autre souci : si le fichier n'existe pas, comment éviter que ne s'ouvre une
fenêtre pour le sélectionner?

merci

"thomas" <nomail> a écrit dans le message de groupe de discussion :

Bonjour,

j'ai un petit souci avec la propriété formula

si j'écris : Range("B1").Formula = "=" & File_id

ca marche avec File_id = "'C:AgencesList_2008_02.xls'!Checked_By"

mais si File_id "SI(ESTERREUR('C:AgencesList_2008_02.xls'!Checked_By)úUX;'C:AgencesList_2008_02.xls'!Checked_By;"")"

ca ne marche plus. je ne trouve pas mon erreur

Merci
Avatar
thomas
ils sont doublés quand je concatene les caractères de file_id

là c'est le résultat d'un debug.print


"michdenis" a écrit dans le message de groupe de
discussion : #
Tu dois doubler tes guillemets ici :

| Checked_By;"")"
Comme ceci :
Checked_By;"""")"


"thomas" <nomail> a écrit dans le message de news:

Bonjour,

j'ai un petit souci avec la propriété formula

si j'écris : Range("B1").Formula = "=" & File_id

ca marche avec File_id = "'C:AgencesList_2008_02.xls'!Checked_By"

mais si File_id "SI(ESTERREUR('C:AgencesList_2008_02.xls'!Checked_By)úUX;'C:AgencesList_2008_02.xls'!Checked_By;"")"

ca ne marche plus. je ne trouve pas mon erreur

Merci
Avatar
thomas
non je veux que la formule y soit bien. le fichier peut ne pas exister pour
l'instant mais sera créé plus tard

"michdenis" a écrit dans le message de groupe de
discussion : #
Avant d'écrire ta formule dans ta cellule, tu vérifies
la présence du fichier :

If dir("C:AgencesList_2008_02.xls")<>"" then
ta formule
else
Msgbox "Fichier inexistant"
end if



"thomas" <nomail> a écrit dans le message de news:

Autre souci : si le fichier n'existe pas, comment éviter que ne s'ouvre une
fenêtre pour le sélectionner?

merci

"thomas" <nomail> a écrit dans le message de groupe de discussion :

Bonjour,

j'ai un petit souci avec la propriété formula

si j'écris : Range("B1").Formula = "=" & File_id

ca marche avec File_id = "'C:AgencesList_2008_02.xls'!Checked_By"

mais si File_id "SI(ESTERREUR('C:AgencesList_2008_02.xls'!Checked_By)úUX;'C:AgencesList_2008_02.xls'!Checked_By;"")"

ca ne marche plus. je ne trouve pas mon erreur

Merci
Avatar
thomas
d'ailleurs si je mets n'importe quoi d'autre a la place des "" ca marche
pas non plus


"SI(ESTERREUR('C:AgencesList_2008_02.xls'!Checked_By)úUX;'C:AgencesList_2008_02.xls'!Checked_By;0)"

par exemple


"thomas" <nomail> a écrit dans le message de groupe de discussion :

ils sont doublés quand je concatene les caractères de file_id

là c'est le résultat d'un debug.print


"michdenis" a écrit dans le message de groupe de
discussion : #
Tu dois doubler tes guillemets ici :

| Checked_By;"")"
Comme ceci :
Checked_By;"""")"


"thomas" <nomail> a écrit dans le message de news:

Bonjour,

j'ai un petit souci avec la propriété formula

si j'écris : Range("B1").Formula = "=" & File_id

ca marche avec File_id = "'C:AgencesList_2008_02.xls'!Checked_By"

mais si File_id "SI(ESTERREUR('C:AgencesList_2008_02.xls'!Checked_By)úUX;'C:AgencesList_2008_02.xls'!Checked_By;"")"

ca ne marche plus. je ne trouve pas mon erreur

Merci
Avatar
thomas
je ne peux pas utiliser directement

"=if(exist(""C:AgencesList_2008_02.xls"")=true," & _
"'C:AgencesList_2008_02.xls'!Checked_By,"""")"

car 2008 et 02 sont variables

Month_Closing_id="02" et Year_id ="2008" dans le cas présent

General_Path_id = "C:Agences"
File_id = "'" & General_Path_id & "" & "List_" & Year_id & "_" &
Format(Month_Closing_id, "00") & ".xls'!Checked_By"
New_File_id = "SI(ESTERREUR(" & File_id & ")úUX;" & File_id & ";"""")"
Debug.Print New_File_id
Debug.Print File_id
Sh.Range("Base_Globale").Cells(1).Offset(i, Colonne - 1).Formula = "=" &
New_File_id

SI(ESTERREUR('C:AgencesList_2008_02.xls'!Checked_By)úUX;'C:AgencesList_2008_02.xls'!Checked_By;"")
'C:AgencesList_2008_02.xls'!Checked_By



"michdenis" a écrit dans le message de groupe de
discussion : #
Une proposition :

Dans un module standard, copie la fonction suivante :
'------------------------
Function Exist(Fichier As String) As Boolean
If Dir(Fichier) <> "" Then Exist = True
End Function
'------------------------

Et dans ta procédure, utilise ceci :

Application.DisplayAlerts = False
Range("C1").Formula = _
"=if(exist(""C:AgencesList_2008_02.xls"")=true," & _
"'C:AgencesList_2008_02.xls'!Checked_By,"""")"
End Sub
Application.DisplayAlerts = True






"thomas" <nomail> a écrit dans le message de news:

non je veux que la formule y soit bien. le fichier peut ne pas exister pour
l'instant mais sera créé plus tard

"michdenis" a écrit dans le message de groupe de
discussion : #
Avant d'écrire ta formule dans ta cellule, tu vérifies
la présence du fichier :

If dir("C:AgencesList_2008_02.xls")<>"" then
ta formule
else
Msgbox "Fichier inexistant"
end if



"thomas" <nomail> a écrit dans le message de news:

Autre souci : si le fichier n'existe pas, comment éviter que ne s'ouvre une
fenêtre pour le sélectionner?

merci

"thomas" <nomail> a écrit dans le message de groupe de discussion :

Bonjour,

j'ai un petit souci avec la propriété formula

si j'écris : Range("B1").Formula = "=" & File_id

ca marche avec File_id = "'C:AgencesList_2008_02.xls'!Checked_By"

mais si File_id "SI(ESTERREUR('C:AgencesList_2008_02.xls'!Checked_By)úUX;'C:AgencesList_2008_02.xls'!Checked_By;"")"

ca ne marche plus. je ne trouve pas mon erreur

Merci
Avatar
thomas
en dur selon ta formule ca marche. le souci vient de ma chaîne de caractères
pour rendre celle ci-variable en fonction de Month_Closing_id et Year_id

merci

"thomas" <nomail> a écrit dans le message de groupe de discussion :
undt#
je ne peux pas utiliser directement

"=if(exist(""C:AgencesList_2008_02.xls"")=true," & _
"'C:AgencesList_2008_02.xls'!Checked_By,"""")"

car 2008 et 02 sont variables

Month_Closing_id="02" et Year_id ="2008" dans le cas présent

General_Path_id = "C:Agences"
File_id = "'" & General_Path_id & "" & "List_" & Year_id & "_" &
Format(Month_Closing_id, "00") & ".xls'!Checked_By"
New_File_id = "SI(ESTERREUR(" & File_id & ")úUX;" & File_id & ";"""")"
Debug.Print New_File_id
Debug.Print File_id
Sh.Range("Base_Globale").Cells(1).Offset(i, Colonne - 1).Formula = "=" &
New_File_id

SI(ESTERREUR('C:AgencesList_2008_02.xls'!Checked_By)úUX;'C:AgencesList_2008_02.xls'!Checked_By;"")
'C:AgencesList_2008_02.xls'!Checked_By



"michdenis" a écrit dans le message de groupe de
discussion : #
Une proposition :

Dans un module standard, copie la fonction suivante :
'------------------------
Function Exist(Fichier As String) As Boolean
If Dir(Fichier) <> "" Then Exist = True
End Function
'------------------------

Et dans ta procédure, utilise ceci :

Application.DisplayAlerts = False
Range("C1").Formula = _
"=if(exist(""C:AgencesList_2008_02.xls"")=true," & _
"'C:AgencesList_2008_02.xls'!Checked_By,"""")"
End Sub
Application.DisplayAlerts = True






"thomas" <nomail> a écrit dans le message de news:

non je veux que la formule y soit bien. le fichier peut ne pas exister pour
l'instant mais sera créé plus tard

"michdenis" a écrit dans le message de groupe de
discussion : #
Avant d'écrire ta formule dans ta cellule, tu vérifies
la présence du fichier :

If dir("C:AgencesList_2008_02.xls")<>"" then
ta formule
else
Msgbox "Fichier inexistant"
end if



"thomas" <nomail> a écrit dans le message de news:

Autre souci : si le fichier n'existe pas, comment éviter que ne s'ouvre une
fenêtre pour le sélectionner?

merci

"thomas" <nomail> a écrit dans le message de groupe de discussion :

Bonjour,

j'ai un petit souci avec la propriété formula

si j'écris : Range("B1").Formula = "=" & File_id

ca marche avec File_id = "'C:AgencesList_2008_02.xls'!Checked_By"

mais si File_id "SI(ESTERREUR('C:AgencesList_2008_02.xls'!Checked_By)úUX;'C:AgencesList_2008_02.xls'!Checked_By;"")"

ca ne marche plus. je ne trouve pas mon erreur

Merci
Avatar
dunkelzahn
Bonjour,

De ma petite expérience de réutiliser les macros excel dans la partie
VBA, il y a trois règles au moins à respecter :
- le point virgule doit être remplacé par une virgule.
- les commandes en français doivent être mises dans le VBA en anglais.
- les guillemets doubles doivent être remplacés par des guillemets
simples.

donc, pour ta fonction, en VBA il faut écrire :
=IF(ISERROR('C:AgencesList_2008_02.xls'!Checked_By)úLSE,'C:Agences
Li­st_2008_02.xls'!Checked_By,0)

Avec des variables telles que tu as défini plus haut :
=IF(ISERROR(File_idúLSE,File_id,0)

J'espère que ca t'aidera.

On 17 juil, 07:45, "thomas" <nomail> wrote:
en dur selon ta formule ca marche. le souci vient de ma chaîne de carac tères
pour rendre celle ci-variable en fonction de Month_Closing_id et Year_id

merci

"thomas" <nomail> a écrit dans le message de groupe de discussion :
undt#
je ne peux pas utiliser directement

     "=if(exist(""C:AgencesList_2008_02.xls"")=true," & _
    "'C:AgencesList_2008_02.xls'!Checked_By,"""")"

car 2008 et 02 sont variables

Month_Closing_id="02" et Year_id ="2008" dans le cas présent

    General_Path_id = "C:Agences"
    File_id = "'" & General_Path_id & "" & "List_" & Year_id & "_" &
Format(Month_Closing_id, "00") & ".xls'!Checked_By"
    New_File_id = "SI(ESTERREUR(" & File_id & ")úUX;" & File_id & ";"""")"
    Debug.Print New_File_id
    Debug.Print File_id
    Sh.Range("Base_Globale").Cells(1).Offset(i, Colonne - 1).Formula = "=" &
New_File_id

SI(ESTERREUR('C:AgencesList_2008_02.xls'!Checked_By)úUX;'C:Agences Lis­t_2008_02.xls'!Checked_By;"")
'C:AgencesList_2008_02.xls'!Checked_By

"michdenis" a écrit dans le message de groupe d e
discussion : #
Une proposition :

Dans un module standard, copie la fonction suivante :
'------------------------
Function Exist(Fichier As String) As Boolean
    If Dir(Fichier) <> "" Then Exist = True
End Function
'------------------------

Et dans ta procédure, utilise ceci :

Application.DisplayAlerts = False
Range("C1").Formula = _
     "=if(exist(""C:AgencesList_2008_02.xls"")=true," & _
    "'C:AgencesList_2008_02.xls'!Checked_By,"""")"
End Sub
Application.DisplayAlerts = True

"thomas" <nomail> a écrit dans le message de news:

non je veux que la formule y soit bien. le fichier peut ne pas exister po ur
l'instant  mais sera créé plus tard

"michdenis" a écrit dans le message de groupe d e
discussion : #
Avant d'écrire ta formule dans ta cellule, tu vérifies
la présence du fichier :

If dir("C:AgencesList_2008_02.xls")<>"" then
    ta formule
else
    Msgbox "Fichier inexistant"
end if

"thomas" <nomail> a écrit dans le message de news:

Autre souci : si le fichier n'existe pas, comment éviter que ne s'ouvre une
fenêtre pour le sélectionner?

merci

"thomas" <nomail> a écrit dans le message de groupe de discussion :

Bonjour,

j'ai un petit souci avec la propriété formula

si j'écris :    Range("B1").Formula = "=" & File_id

ca marche avec File_id = "'C:AgencesList_2008_02.xls'!Checked_By"

mais si File_id=
"SI(ESTERREUR('C:AgencesList_2008_02.xls'!Checked_By)úUX;'C:Agence sLi­st_2008_02.xls'!Checked_By;"")"

ca ne marche plus. je ne trouve pas mon erreur

Merci


Avatar
thomas
Merci je vais essayer mais pourquoi les 4 guillemets de début dans Fichier
= """" & File & "" & Année & "_" & Mois & ".xls""" ?

du coup après le ' dans Fichier = """" & File & "" & Année & "_" & Mois &
".xls""" il y a des guillemets que l'on n'a pas dans la cellule Excel si on
saisit la formule manuellement '"C:Agences .....



"michdenis" a écrit dans le message de groupe de
discussion : OZb#fX$


| en dur selon ta formule ca marche. le souci vient de ma chaîne de
caractères
| pour rendre celle ci-variable en fonction de Month_Closing_id et Year_id

Tu peux obtenir ce que tu désires en utilisant des variables !

'--------------------------------
Sub test()

Dim Fichier As String
Dim AdrCell As String
Dim Année As String
Dim Mois As String
Dim File As String

'***VARIABLES À RENSEIGNER****
File = "C:AgencesList_"
Année = 2008
Mois = 2
'*********************************

Fichier = """" & File & "" & Année & _
"_" & Mois & ".xls"""
AdrCell = "'" & "" & File & "" & Année & _
"_" & Mois & "'!Checked_By"

Application.DisplayAlerts = False
Range("C1").Formula = _
"=if(exist(" & Fichier & ")=true," & _
AdrCell & ","""")"
Application.DisplayAlerts = True

End Sub
'--------------------------------

Function Exist(Fichier As String) As Boolean
If Dir(Fichier) <> "" Then Exist = True
End Function
'--------------------------------
Avatar
thomas
pour 2 je veux dire que si je fais un lien (pas en vba) vers une cellule
externe j'ai 'C:Agences ..... et pas '"C:Agences .....


"michdenis" a écrit dans le message de groupe de
discussion :
Question 1

| pourquoi les 4 guillemets de début dans Fichier
| = """" & File & "" & Année & "_" & Mois & ".xls""" ?

Fichier = """" & File & "" & Année & _
"_" & Mois & ".xls"""


Lorsqu'on veut transmettre une formule en vba de ce type,
"=if(exist(""C:AgencesList_2008_02.xls"")=true....
on doit dédoubler les guillemets situés à l'intérieuur de la chaîe
de càractères qui forme la formule. Cela explique une paire
de guillements avant la variable "file" jumélée à une paire de
guillmets après "xls" Comme ceci : "" & File .....xls"""

Un autre guillemet permet de cerner l'ensemble des variables
comme une seule et même chaîne ....
Fichier = """ & File ..Année.... mois....xls"""

Finalement, il y a 1 guillemet supplémentaire avant et après "file"
pour cerner seulement cette variable...comme il y a des guillemets
entourant chacune des variables...

Voilà ! C'est simple mais pas nécessairement évident !!!


Question II
Je n'ai rien compris à la question....Les guillemets dans la
procédure ne sont pas optionnels et ça n'a rien à voir ...
si j'aime ou j'aime pas les guillemets !







"thomas" <nomail> a écrit dans le message de news:

Merci je vais essayer mais pourquoi les 4 guillemets de début dans Fichier
= """" & File & "" & Année & "_" & Mois & ".xls""" ?

du coup après le ' dans Fichier = """" & File & "" & Année & "_" & Mois &
".xls""" il y a des guillemets que l'on n'a pas dans la cellule Excel si on
saisit la formule manuellement '"C:Agences .....



"michdenis" a écrit dans le message de groupe de
discussion : OZb#fX$


| en dur selon ta formule ca marche. le souci vient de ma chaîne de
caractères
| pour rendre celle ci-variable en fonction de Month_Closing_id et Year_id

Tu peux obtenir ce que tu désires en utilisant des variables !

'--------------------------------
Sub test()

Dim Fichier As String
Dim AdrCell As String
Dim Année As String
Dim Mois As String
Dim File As String

'***VARIABLES À RENSEIGNER****
File = "C:AgencesList_"
Année = 2008
Mois = 2
'*********************************

Fichier = """" & File & "" & Année & _
"_" & Mois & ".xls"""
AdrCell = "'" & "" & File & "" & Année & _
"_" & Mois & "'!Checked_By"

Application.DisplayAlerts = False
Range("C1").Formula = _
"=if(exist(" & Fichier & ")=true," & _
AdrCell & ","""")"
Application.DisplayAlerts = True

End Sub
'--------------------------------

Function Exist(Fichier As String) As Boolean
If Dir(Fichier) <> "" Then Exist = True
End Function
'--------------------------------