Bonjour
Afin de recuperer les donnees d'un fichier d'acquisition de manieere
automatique dans une macro, j'ai utilisé cette fonction:
Function F_extrait(F_EX_fich As String, F_EX_feui As String)
With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
F_extrait = .Worksheets(F_EX_feui).Range("a1:bh1000")
.Close False
End With
End Function
Si cela recupere convenablement les donnees au format texte, les donnees
numeriques ont un probleme de format. En effet, si le chiffre est composé
de
plus de 4 nombre (que ce soit avant ou apres la virgule), la fonction le
met
en integer et la virgule disparait:
276,10 devient 27610
C'est tres ennuyant car je veux faire une moyenne de temperature et
j'aimerai que les nombres soit en double. Comme j'ai du texte dans le
tableau, j'ai donc voulu utiliser le type variant.
Pour cela, j'ai essayé cette ecriture:
Function F_extrait(F_EX_fich As String, F_EX_feui As String)
dim F_EX() as variant
With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
F_EX = .Worksheets(F_EX_feui).Range("a1:bh1000")
.Close False
F_extrait=F_EX
End With
End Function
Mais il semble que le type de F_EX soit incompatible avec les données
recupere par "= .Worksheets(F_EX_feui).Range("a1:bh1000")"
Y a t'il une solution, ou bien peut t'on/doit t'on assigner le type de
données sur F_extrait? Ou bien dois-je définir le type de données de
chaque
cellule du tableau (si c'est possible).
Je vous remercie d'avance de vos eclaircissement.
Bonjour
Afin de recuperer les donnees d'un fichier d'acquisition de manieere
automatique dans une macro, j'ai utilisé cette fonction:
Function F_extrait(F_EX_fich As String, F_EX_feui As String)
With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
F_extrait = .Worksheets(F_EX_feui).Range("a1:bh1000")
.Close False
End With
End Function
Si cela recupere convenablement les donnees au format texte, les donnees
numeriques ont un probleme de format. En effet, si le chiffre est composé
de
plus de 4 nombre (que ce soit avant ou apres la virgule), la fonction le
met
en integer et la virgule disparait:
276,10 devient 27610
C'est tres ennuyant car je veux faire une moyenne de temperature et
j'aimerai que les nombres soit en double. Comme j'ai du texte dans le
tableau, j'ai donc voulu utiliser le type variant.
Pour cela, j'ai essayé cette ecriture:
Function F_extrait(F_EX_fich As String, F_EX_feui As String)
dim F_EX() as variant
With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
F_EX = .Worksheets(F_EX_feui).Range("a1:bh1000")
.Close False
F_extrait=F_EX
End With
End Function
Mais il semble que le type de F_EX soit incompatible avec les données
recupere par "= .Worksheets(F_EX_feui).Range("a1:bh1000")"
Y a t'il une solution, ou bien peut t'on/doit t'on assigner le type de
données sur F_extrait? Ou bien dois-je définir le type de données de
chaque
cellule du tableau (si c'est possible).
Je vous remercie d'avance de vos eclaircissement.
Bonjour
Afin de recuperer les donnees d'un fichier d'acquisition de manieere
automatique dans une macro, j'ai utilisé cette fonction:
Function F_extrait(F_EX_fich As String, F_EX_feui As String)
With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
F_extrait = .Worksheets(F_EX_feui).Range("a1:bh1000")
.Close False
End With
End Function
Si cela recupere convenablement les donnees au format texte, les donnees
numeriques ont un probleme de format. En effet, si le chiffre est composé
de
plus de 4 nombre (que ce soit avant ou apres la virgule), la fonction le
met
en integer et la virgule disparait:
276,10 devient 27610
C'est tres ennuyant car je veux faire une moyenne de temperature et
j'aimerai que les nombres soit en double. Comme j'ai du texte dans le
tableau, j'ai donc voulu utiliser le type variant.
Pour cela, j'ai essayé cette ecriture:
Function F_extrait(F_EX_fich As String, F_EX_feui As String)
dim F_EX() as variant
With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
F_EX = .Worksheets(F_EX_feui).Range("a1:bh1000")
.Close False
F_extrait=F_EX
End With
End Function
Mais il semble que le type de F_EX soit incompatible avec les données
recupere par "= .Worksheets(F_EX_feui).Range("a1:bh1000")"
Y a t'il une solution, ou bien peut t'on/doit t'on assigner le type de
données sur F_extrait? Ou bien dois-je définir le type de données de
chaque
cellule du tableau (si c'est possible).
Je vous remercie d'avance de vos eclaircissement.
la virgule au format américain sert à séparer les milliers. Dons il faut
remplacer les virgules par des points avec la fonction replace.
"B_M" a écrit dans le message de news:
> Bonjour
>
> Afin de recuperer les donnees d'un fichier d'acquisition de manieere
> automatique dans une macro, j'ai utilisé cette fonction:
>
> Function F_extrait(F_EX_fich As String, F_EX_feui As String)
> With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
> F_extrait = .Worksheets(F_EX_feui).Range("a1:bh1000")
> .Close False
> End With
> End Function
>
> Si cela recupere convenablement les donnees au format texte, les donnees
> numeriques ont un probleme de format. En effet, si le chiffre est composé
> de
> plus de 4 nombre (que ce soit avant ou apres la virgule), la fonction le
> met
> en integer et la virgule disparait:
> 276,10 devient 27610
>
> C'est tres ennuyant car je veux faire une moyenne de temperature et
> j'aimerai que les nombres soit en double. Comme j'ai du texte dans le
> tableau, j'ai donc voulu utiliser le type variant.
> Pour cela, j'ai essayé cette ecriture:
>
> Function F_extrait(F_EX_fich As String, F_EX_feui As String)
> dim F_EX() as variant
> With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
> F_EX = .Worksheets(F_EX_feui).Range("a1:bh1000")
> .Close False
> F_extrait=F_EX
> End With
> End Function
>
> Mais il semble que le type de F_EX soit incompatible avec les données
> recupere par "= .Worksheets(F_EX_feui).Range("a1:bh1000")"
>
> Y a t'il une solution, ou bien peut t'on/doit t'on assigner le type de
> données sur F_extrait? Ou bien dois-je définir le type de données de
> chaque
> cellule du tableau (si c'est possible).
>
> Je vous remercie d'avance de vos eclaircissement.
>
la virgule au format américain sert à séparer les milliers. Dons il faut
remplacer les virgules par des points avec la fonction replace.
"B_M" <BM@discussions.microsoft.com> a écrit dans le message de news:
C268722D-EE2C-434E-ADC3-4C215C8145F2@microsoft.com...
> Bonjour
>
> Afin de recuperer les donnees d'un fichier d'acquisition de manieere
> automatique dans une macro, j'ai utilisé cette fonction:
>
> Function F_extrait(F_EX_fich As String, F_EX_feui As String)
> With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
> F_extrait = .Worksheets(F_EX_feui).Range("a1:bh1000")
> .Close False
> End With
> End Function
>
> Si cela recupere convenablement les donnees au format texte, les donnees
> numeriques ont un probleme de format. En effet, si le chiffre est composé
> de
> plus de 4 nombre (que ce soit avant ou apres la virgule), la fonction le
> met
> en integer et la virgule disparait:
> 276,10 devient 27610
>
> C'est tres ennuyant car je veux faire une moyenne de temperature et
> j'aimerai que les nombres soit en double. Comme j'ai du texte dans le
> tableau, j'ai donc voulu utiliser le type variant.
> Pour cela, j'ai essayé cette ecriture:
>
> Function F_extrait(F_EX_fich As String, F_EX_feui As String)
> dim F_EX() as variant
> With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
> F_EX = .Worksheets(F_EX_feui).Range("a1:bh1000")
> .Close False
> F_extrait=F_EX
> End With
> End Function
>
> Mais il semble que le type de F_EX soit incompatible avec les données
> recupere par "= .Worksheets(F_EX_feui).Range("a1:bh1000")"
>
> Y a t'il une solution, ou bien peut t'on/doit t'on assigner le type de
> données sur F_extrait? Ou bien dois-je définir le type de données de
> chaque
> cellule du tableau (si c'est possible).
>
> Je vous remercie d'avance de vos eclaircissement.
>
la virgule au format américain sert à séparer les milliers. Dons il faut
remplacer les virgules par des points avec la fonction replace.
"B_M" a écrit dans le message de news:
> Bonjour
>
> Afin de recuperer les donnees d'un fichier d'acquisition de manieere
> automatique dans une macro, j'ai utilisé cette fonction:
>
> Function F_extrait(F_EX_fich As String, F_EX_feui As String)
> With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
> F_extrait = .Worksheets(F_EX_feui).Range("a1:bh1000")
> .Close False
> End With
> End Function
>
> Si cela recupere convenablement les donnees au format texte, les donnees
> numeriques ont un probleme de format. En effet, si le chiffre est composé
> de
> plus de 4 nombre (que ce soit avant ou apres la virgule), la fonction le
> met
> en integer et la virgule disparait:
> 276,10 devient 27610
>
> C'est tres ennuyant car je veux faire une moyenne de temperature et
> j'aimerai que les nombres soit en double. Comme j'ai du texte dans le
> tableau, j'ai donc voulu utiliser le type variant.
> Pour cela, j'ai essayé cette ecriture:
>
> Function F_extrait(F_EX_fich As String, F_EX_feui As String)
> dim F_EX() as variant
> With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
> F_EX = .Worksheets(F_EX_feui).Range("a1:bh1000")
> .Close False
> F_extrait=F_EX
> End With
> End Function
>
> Mais il semble que le type de F_EX soit incompatible avec les données
> recupere par "= .Worksheets(F_EX_feui).Range("a1:bh1000")"
>
> Y a t'il une solution, ou bien peut t'on/doit t'on assigner le type de
> données sur F_extrait? Ou bien dois-je définir le type de données de
> chaque
> cellule du tableau (si c'est possible).
>
> Je vous remercie d'avance de vos eclaircissement.
>
Ca semble etre la solution, j'ai remplace les virgule par des points dans
le
fichier lu... et ca marche! mais je ne connais pas la syntaxe à utiliser
pour replace dans VBA. j'ai testé dans le "with":
.Worksheets(F_EX_feui).Range("a1:bh1000").replace(....)
mais VBA n'en veut pas.
Merci d'avance de vos eclaircissement.
"Patrice Henrio" a écrit :la virgule au format américain sert à séparer les milliers. Dons il faut
remplacer les virgules par des points avec la fonction replace.
"B_M" a écrit dans le message de news:
> Bonjour
>
> Afin de recuperer les donnees d'un fichier d'acquisition de manieere
> automatique dans une macro, j'ai utilisé cette fonction:
>
> Function F_extrait(F_EX_fich As String, F_EX_feui As String)
> With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
> F_extrait = .Worksheets(F_EX_feui).Range("a1:bh1000")
> .Close False
> End With
> End Function
>
> Si cela recupere convenablement les donnees au format texte, les
> donnees
> numeriques ont un probleme de format. En effet, si le chiffre est
> composé
> de
> plus de 4 nombre (que ce soit avant ou apres la virgule), la fonction
> le
> met
> en integer et la virgule disparait:
> 276,10 devient 27610
>
> C'est tres ennuyant car je veux faire une moyenne de temperature et
> j'aimerai que les nombres soit en double. Comme j'ai du texte dans le
> tableau, j'ai donc voulu utiliser le type variant.
> Pour cela, j'ai essayé cette ecriture:
>
> Function F_extrait(F_EX_fich As String, F_EX_feui As String)
> dim F_EX() as variant
> With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
> F_EX = .Worksheets(F_EX_feui).Range("a1:bh1000")
> .Close False
> F_extrait=F_EX
> End With
> End Function
>
> Mais il semble que le type de F_EX soit incompatible avec les données
> recupere par "= .Worksheets(F_EX_feui).Range("a1:bh1000")"
>
> Y a t'il une solution, ou bien peut t'on/doit t'on assigner le type de
> données sur F_extrait? Ou bien dois-je définir le type de données de
> chaque
> cellule du tableau (si c'est possible).
>
> Je vous remercie d'avance de vos eclaircissement.
>
Ca semble etre la solution, j'ai remplace les virgule par des points dans
le
fichier lu... et ca marche! mais je ne connais pas la syntaxe à utiliser
pour replace dans VBA. j'ai testé dans le "with":
.Worksheets(F_EX_feui).Range("a1:bh1000").replace(....)
mais VBA n'en veut pas.
Merci d'avance de vos eclaircissement.
"Patrice Henrio" a écrit :
la virgule au format américain sert à séparer les milliers. Dons il faut
remplacer les virgules par des points avec la fonction replace.
"B_M" <BM@discussions.microsoft.com> a écrit dans le message de news:
C268722D-EE2C-434E-ADC3-4C215C8145F2@microsoft.com...
> Bonjour
>
> Afin de recuperer les donnees d'un fichier d'acquisition de manieere
> automatique dans une macro, j'ai utilisé cette fonction:
>
> Function F_extrait(F_EX_fich As String, F_EX_feui As String)
> With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
> F_extrait = .Worksheets(F_EX_feui).Range("a1:bh1000")
> .Close False
> End With
> End Function
>
> Si cela recupere convenablement les donnees au format texte, les
> donnees
> numeriques ont un probleme de format. En effet, si le chiffre est
> composé
> de
> plus de 4 nombre (que ce soit avant ou apres la virgule), la fonction
> le
> met
> en integer et la virgule disparait:
> 276,10 devient 27610
>
> C'est tres ennuyant car je veux faire une moyenne de temperature et
> j'aimerai que les nombres soit en double. Comme j'ai du texte dans le
> tableau, j'ai donc voulu utiliser le type variant.
> Pour cela, j'ai essayé cette ecriture:
>
> Function F_extrait(F_EX_fich As String, F_EX_feui As String)
> dim F_EX() as variant
> With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
> F_EX = .Worksheets(F_EX_feui).Range("a1:bh1000")
> .Close False
> F_extrait=F_EX
> End With
> End Function
>
> Mais il semble que le type de F_EX soit incompatible avec les données
> recupere par "= .Worksheets(F_EX_feui).Range("a1:bh1000")"
>
> Y a t'il une solution, ou bien peut t'on/doit t'on assigner le type de
> données sur F_extrait? Ou bien dois-je définir le type de données de
> chaque
> cellule du tableau (si c'est possible).
>
> Je vous remercie d'avance de vos eclaircissement.
>
Ca semble etre la solution, j'ai remplace les virgule par des points dans
le
fichier lu... et ca marche! mais je ne connais pas la syntaxe à utiliser
pour replace dans VBA. j'ai testé dans le "with":
.Worksheets(F_EX_feui).Range("a1:bh1000").replace(....)
mais VBA n'en veut pas.
Merci d'avance de vos eclaircissement.
"Patrice Henrio" a écrit :la virgule au format américain sert à séparer les milliers. Dons il faut
remplacer les virgules par des points avec la fonction replace.
"B_M" a écrit dans le message de news:
> Bonjour
>
> Afin de recuperer les donnees d'un fichier d'acquisition de manieere
> automatique dans une macro, j'ai utilisé cette fonction:
>
> Function F_extrait(F_EX_fich As String, F_EX_feui As String)
> With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
> F_extrait = .Worksheets(F_EX_feui).Range("a1:bh1000")
> .Close False
> End With
> End Function
>
> Si cela recupere convenablement les donnees au format texte, les
> donnees
> numeriques ont un probleme de format. En effet, si le chiffre est
> composé
> de
> plus de 4 nombre (que ce soit avant ou apres la virgule), la fonction
> le
> met
> en integer et la virgule disparait:
> 276,10 devient 27610
>
> C'est tres ennuyant car je veux faire une moyenne de temperature et
> j'aimerai que les nombres soit en double. Comme j'ai du texte dans le
> tableau, j'ai donc voulu utiliser le type variant.
> Pour cela, j'ai essayé cette ecriture:
>
> Function F_extrait(F_EX_fich As String, F_EX_feui As String)
> dim F_EX() as variant
> With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
> F_EX = .Worksheets(F_EX_feui).Range("a1:bh1000")
> .Close False
> F_extrait=F_EX
> End With
> End Function
>
> Mais il semble que le type de F_EX soit incompatible avec les données
> recupere par "= .Worksheets(F_EX_feui).Range("a1:bh1000")"
>
> Y a t'il une solution, ou bien peut t'on/doit t'on assigner le type de
> données sur F_extrait? Ou bien dois-je définir le type de données de
> chaque
> cellule du tableau (si c'est possible).
>
> Je vous remercie d'avance de vos eclaircissement.
>
replace s'applique à un texte et non à un objet range
donc il faut parcourir chaque cellule et faire la modif (avec CTxt par
exemple si les valeurs de départ sont des nombres ou replace si c'est du
texte)
for each C in .Worksheets(F_EX_feui).Range("a1:bh1000")
C=Ctxt(C.value,2,".")
next
ou encore
for each C in .Worksheets(F_EX_feui).Range("a1:bh1000")
if isNumeric(C.value) then C=Ctxt(C.value,2,".") else
C=replace(C.Value,",",".")
next
"B_M" a écrit dans le message de news:
> Ca semble etre la solution, j'ai remplace les virgule par des points dans
> le
> fichier lu... et ca marche! mais je ne connais pas la syntaxe à utiliser
> pour replace dans VBA. j'ai testé dans le "with":
>
> .Worksheets(F_EX_feui).Range("a1:bh1000").replace(....)
> mais VBA n'en veut pas.
> Merci d'avance de vos eclaircissement.
>
>
> "Patrice Henrio" a écrit :
>
>> la virgule au format américain sert à séparer les milliers. Dons il faut
>> remplacer les virgules par des points avec la fonction replace.
>>
>>
>> "B_M" a écrit dans le message de news:
>>
>> > Bonjour
>> >
>> > Afin de recuperer les donnees d'un fichier d'acquisition de manieere
>> > automatique dans une macro, j'ai utilisé cette fonction:
>> >
>> > Function F_extrait(F_EX_fich As String, F_EX_feui As String)
>> > With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
>> > F_extrait = .Worksheets(F_EX_feui).Range("a1:bh1000")
>> > .Close False
>> > End With
>> > End Function
>> >
>> > Si cela recupere convenablement les donnees au format texte, les
>> > donnees
>> > numeriques ont un probleme de format. En effet, si le chiffre est
>> > composé
>> > de
>> > plus de 4 nombre (que ce soit avant ou apres la virgule), la fonction
>> > le
>> > met
>> > en integer et la virgule disparait:
>> > 276,10 devient 27610
>> >
>> > C'est tres ennuyant car je veux faire une moyenne de temperature et
>> > j'aimerai que les nombres soit en double. Comme j'ai du texte dans le
>> > tableau, j'ai donc voulu utiliser le type variant.
>> > Pour cela, j'ai essayé cette ecriture:
>> >
>> > Function F_extrait(F_EX_fich As String, F_EX_feui As String)
>> > dim F_EX() as variant
>> > With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
>> > F_EX = .Worksheets(F_EX_feui).Range("a1:bh1000")
>> > .Close False
>> > F_extrait=F_EX
>> > End With
>> > End Function
>> >
>> > Mais il semble que le type de F_EX soit incompatible avec les données
>> > recupere par "= .Worksheets(F_EX_feui).Range("a1:bh1000")"
>> >
>> > Y a t'il une solution, ou bien peut t'on/doit t'on assigner le type de
>> > données sur F_extrait? Ou bien dois-je définir le type de données de
>> > chaque
>> > cellule du tableau (si c'est possible).
>> >
>> > Je vous remercie d'avance de vos eclaircissement.
>> >
>>
>>
>>
replace s'applique à un texte et non à un objet range
donc il faut parcourir chaque cellule et faire la modif (avec CTxt par
exemple si les valeurs de départ sont des nombres ou replace si c'est du
texte)
for each C in .Worksheets(F_EX_feui).Range("a1:bh1000")
C=Ctxt(C.value,2,".")
next
ou encore
for each C in .Worksheets(F_EX_feui).Range("a1:bh1000")
if isNumeric(C.value) then C=Ctxt(C.value,2,".") else
C=replace(C.Value,",",".")
next
"B_M" <BM@discussions.microsoft.com> a écrit dans le message de news:
94F95EE8-7AF8-4650-AF08-3B7B166F4733@microsoft.com...
> Ca semble etre la solution, j'ai remplace les virgule par des points dans
> le
> fichier lu... et ca marche! mais je ne connais pas la syntaxe à utiliser
> pour replace dans VBA. j'ai testé dans le "with":
>
> .Worksheets(F_EX_feui).Range("a1:bh1000").replace(....)
> mais VBA n'en veut pas.
> Merci d'avance de vos eclaircissement.
>
>
> "Patrice Henrio" a écrit :
>
>> la virgule au format américain sert à séparer les milliers. Dons il faut
>> remplacer les virgules par des points avec la fonction replace.
>>
>>
>> "B_M" <BM@discussions.microsoft.com> a écrit dans le message de news:
>> C268722D-EE2C-434E-ADC3-4C215C8145F2@microsoft.com...
>> > Bonjour
>> >
>> > Afin de recuperer les donnees d'un fichier d'acquisition de manieere
>> > automatique dans une macro, j'ai utilisé cette fonction:
>> >
>> > Function F_extrait(F_EX_fich As String, F_EX_feui As String)
>> > With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
>> > F_extrait = .Worksheets(F_EX_feui).Range("a1:bh1000")
>> > .Close False
>> > End With
>> > End Function
>> >
>> > Si cela recupere convenablement les donnees au format texte, les
>> > donnees
>> > numeriques ont un probleme de format. En effet, si le chiffre est
>> > composé
>> > de
>> > plus de 4 nombre (que ce soit avant ou apres la virgule), la fonction
>> > le
>> > met
>> > en integer et la virgule disparait:
>> > 276,10 devient 27610
>> >
>> > C'est tres ennuyant car je veux faire une moyenne de temperature et
>> > j'aimerai que les nombres soit en double. Comme j'ai du texte dans le
>> > tableau, j'ai donc voulu utiliser le type variant.
>> > Pour cela, j'ai essayé cette ecriture:
>> >
>> > Function F_extrait(F_EX_fich As String, F_EX_feui As String)
>> > dim F_EX() as variant
>> > With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
>> > F_EX = .Worksheets(F_EX_feui).Range("a1:bh1000")
>> > .Close False
>> > F_extrait=F_EX
>> > End With
>> > End Function
>> >
>> > Mais il semble que le type de F_EX soit incompatible avec les données
>> > recupere par "= .Worksheets(F_EX_feui).Range("a1:bh1000")"
>> >
>> > Y a t'il une solution, ou bien peut t'on/doit t'on assigner le type de
>> > données sur F_extrait? Ou bien dois-je définir le type de données de
>> > chaque
>> > cellule du tableau (si c'est possible).
>> >
>> > Je vous remercie d'avance de vos eclaircissement.
>> >
>>
>>
>>
replace s'applique à un texte et non à un objet range
donc il faut parcourir chaque cellule et faire la modif (avec CTxt par
exemple si les valeurs de départ sont des nombres ou replace si c'est du
texte)
for each C in .Worksheets(F_EX_feui).Range("a1:bh1000")
C=Ctxt(C.value,2,".")
next
ou encore
for each C in .Worksheets(F_EX_feui).Range("a1:bh1000")
if isNumeric(C.value) then C=Ctxt(C.value,2,".") else
C=replace(C.Value,",",".")
next
"B_M" a écrit dans le message de news:
> Ca semble etre la solution, j'ai remplace les virgule par des points dans
> le
> fichier lu... et ca marche! mais je ne connais pas la syntaxe à utiliser
> pour replace dans VBA. j'ai testé dans le "with":
>
> .Worksheets(F_EX_feui).Range("a1:bh1000").replace(....)
> mais VBA n'en veut pas.
> Merci d'avance de vos eclaircissement.
>
>
> "Patrice Henrio" a écrit :
>
>> la virgule au format américain sert à séparer les milliers. Dons il faut
>> remplacer les virgules par des points avec la fonction replace.
>>
>>
>> "B_M" a écrit dans le message de news:
>>
>> > Bonjour
>> >
>> > Afin de recuperer les donnees d'un fichier d'acquisition de manieere
>> > automatique dans une macro, j'ai utilisé cette fonction:
>> >
>> > Function F_extrait(F_EX_fich As String, F_EX_feui As String)
>> > With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
>> > F_extrait = .Worksheets(F_EX_feui).Range("a1:bh1000")
>> > .Close False
>> > End With
>> > End Function
>> >
>> > Si cela recupere convenablement les donnees au format texte, les
>> > donnees
>> > numeriques ont un probleme de format. En effet, si le chiffre est
>> > composé
>> > de
>> > plus de 4 nombre (que ce soit avant ou apres la virgule), la fonction
>> > le
>> > met
>> > en integer et la virgule disparait:
>> > 276,10 devient 27610
>> >
>> > C'est tres ennuyant car je veux faire une moyenne de temperature et
>> > j'aimerai que les nombres soit en double. Comme j'ai du texte dans le
>> > tableau, j'ai donc voulu utiliser le type variant.
>> > Pour cela, j'ai essayé cette ecriture:
>> >
>> > Function F_extrait(F_EX_fich As String, F_EX_feui As String)
>> > dim F_EX() as variant
>> > With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
>> > F_EX = .Worksheets(F_EX_feui).Range("a1:bh1000")
>> > .Close False
>> > F_extrait=F_EX
>> > End With
>> > End Function
>> >
>> > Mais il semble que le type de F_EX soit incompatible avec les données
>> > recupere par "= .Worksheets(F_EX_feui).Range("a1:bh1000")"
>> >
>> > Y a t'il une solution, ou bien peut t'on/doit t'on assigner le type de
>> > données sur F_extrait? Ou bien dois-je définir le type de données de
>> > chaque
>> > cellule du tableau (si c'est possible).
>> >
>> > Je vous remercie d'avance de vos eclaircissement.
>> >
>>
>>
>>
Je n'ai pas la fonction Ctxt, elle n'est pas reconnue par mon système VBA
6.3
ou puis je la trouver?
Merci beaucoup
"Patrice Henrio" a écrit :replace s'applique à un texte et non à un objet range
donc il faut parcourir chaque cellule et faire la modif (avec CTxt par
exemple si les valeurs de départ sont des nombres ou replace si c'est du
texte)
for each C in .Worksheets(F_EX_feui).Range("a1:bh1000")
C=Ctxt(C.value,2,".")
next
ou encore
for each C in .Worksheets(F_EX_feui).Range("a1:bh1000")
if isNumeric(C.value) then C=Ctxt(C.value,2,".") else
C=replace(C.Value,",",".")
next
"B_M" a écrit dans le message de news:
> Ca semble etre la solution, j'ai remplace les virgule par des points
> dans
> le
> fichier lu... et ca marche! mais je ne connais pas la syntaxe à
> utiliser
> pour replace dans VBA. j'ai testé dans le "with":
>
> .Worksheets(F_EX_feui).Range("a1:bh1000").replace(....)
> mais VBA n'en veut pas.
> Merci d'avance de vos eclaircissement.
>
>
> "Patrice Henrio" a écrit :
>
>> la virgule au format américain sert à séparer les milliers. Dons il
>> faut
>> remplacer les virgules par des points avec la fonction replace.
>>
>>
>> "B_M" a écrit dans le message de news:
>>
>> > Bonjour
>> >
>> > Afin de recuperer les donnees d'un fichier d'acquisition de manieere
>> > automatique dans une macro, j'ai utilisé cette fonction:
>> >
>> > Function F_extrait(F_EX_fich As String, F_EX_feui As String)
>> > With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
>> > F_extrait = .Worksheets(F_EX_feui).Range("a1:bh1000")
>> > .Close False
>> > End With
>> > End Function
>> >
>> > Si cela recupere convenablement les donnees au format texte, les
>> > donnees
>> > numeriques ont un probleme de format. En effet, si le chiffre est
>> > composé
>> > de
>> > plus de 4 nombre (que ce soit avant ou apres la virgule), la
>> > fonction
>> > le
>> > met
>> > en integer et la virgule disparait:
>> > 276,10 devient 27610
>> >
>> > C'est tres ennuyant car je veux faire une moyenne de temperature et
>> > j'aimerai que les nombres soit en double. Comme j'ai du texte dans
>> > le
>> > tableau, j'ai donc voulu utiliser le type variant.
>> > Pour cela, j'ai essayé cette ecriture:
>> >
>> > Function F_extrait(F_EX_fich As String, F_EX_feui As String)
>> > dim F_EX() as variant
>> > With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
>> > F_EX = .Worksheets(F_EX_feui).Range("a1:bh1000")
>> > .Close False
>> > F_extrait=F_EX
>> > End With
>> > End Function
>> >
>> > Mais il semble que le type de F_EX soit incompatible avec les
>> > données
>> > recupere par "= .Worksheets(F_EX_feui).Range("a1:bh1000")"
>> >
>> > Y a t'il une solution, ou bien peut t'on/doit t'on assigner le type
>> > de
>> > données sur F_extrait? Ou bien dois-je définir le type de données de
>> > chaque
>> > cellule du tableau (si c'est possible).
>> >
>> > Je vous remercie d'avance de vos eclaircissement.
>> >
>>
>>
>>
Je n'ai pas la fonction Ctxt, elle n'est pas reconnue par mon système VBA
6.3
ou puis je la trouver?
Merci beaucoup
"Patrice Henrio" a écrit :
replace s'applique à un texte et non à un objet range
donc il faut parcourir chaque cellule et faire la modif (avec CTxt par
exemple si les valeurs de départ sont des nombres ou replace si c'est du
texte)
for each C in .Worksheets(F_EX_feui).Range("a1:bh1000")
C=Ctxt(C.value,2,".")
next
ou encore
for each C in .Worksheets(F_EX_feui).Range("a1:bh1000")
if isNumeric(C.value) then C=Ctxt(C.value,2,".") else
C=replace(C.Value,",",".")
next
"B_M" <BM@discussions.microsoft.com> a écrit dans le message de news:
94F95EE8-7AF8-4650-AF08-3B7B166F4733@microsoft.com...
> Ca semble etre la solution, j'ai remplace les virgule par des points
> dans
> le
> fichier lu... et ca marche! mais je ne connais pas la syntaxe à
> utiliser
> pour replace dans VBA. j'ai testé dans le "with":
>
> .Worksheets(F_EX_feui).Range("a1:bh1000").replace(....)
> mais VBA n'en veut pas.
> Merci d'avance de vos eclaircissement.
>
>
> "Patrice Henrio" a écrit :
>
>> la virgule au format américain sert à séparer les milliers. Dons il
>> faut
>> remplacer les virgules par des points avec la fonction replace.
>>
>>
>> "B_M" <BM@discussions.microsoft.com> a écrit dans le message de news:
>> C268722D-EE2C-434E-ADC3-4C215C8145F2@microsoft.com...
>> > Bonjour
>> >
>> > Afin de recuperer les donnees d'un fichier d'acquisition de manieere
>> > automatique dans une macro, j'ai utilisé cette fonction:
>> >
>> > Function F_extrait(F_EX_fich As String, F_EX_feui As String)
>> > With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
>> > F_extrait = .Worksheets(F_EX_feui).Range("a1:bh1000")
>> > .Close False
>> > End With
>> > End Function
>> >
>> > Si cela recupere convenablement les donnees au format texte, les
>> > donnees
>> > numeriques ont un probleme de format. En effet, si le chiffre est
>> > composé
>> > de
>> > plus de 4 nombre (que ce soit avant ou apres la virgule), la
>> > fonction
>> > le
>> > met
>> > en integer et la virgule disparait:
>> > 276,10 devient 27610
>> >
>> > C'est tres ennuyant car je veux faire une moyenne de temperature et
>> > j'aimerai que les nombres soit en double. Comme j'ai du texte dans
>> > le
>> > tableau, j'ai donc voulu utiliser le type variant.
>> > Pour cela, j'ai essayé cette ecriture:
>> >
>> > Function F_extrait(F_EX_fich As String, F_EX_feui As String)
>> > dim F_EX() as variant
>> > With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
>> > F_EX = .Worksheets(F_EX_feui).Range("a1:bh1000")
>> > .Close False
>> > F_extrait=F_EX
>> > End With
>> > End Function
>> >
>> > Mais il semble que le type de F_EX soit incompatible avec les
>> > données
>> > recupere par "= .Worksheets(F_EX_feui).Range("a1:bh1000")"
>> >
>> > Y a t'il une solution, ou bien peut t'on/doit t'on assigner le type
>> > de
>> > données sur F_extrait? Ou bien dois-je définir le type de données de
>> > chaque
>> > cellule du tableau (si c'est possible).
>> >
>> > Je vous remercie d'avance de vos eclaircissement.
>> >
>>
>>
>>
Je n'ai pas la fonction Ctxt, elle n'est pas reconnue par mon système VBA
6.3
ou puis je la trouver?
Merci beaucoup
"Patrice Henrio" a écrit :replace s'applique à un texte et non à un objet range
donc il faut parcourir chaque cellule et faire la modif (avec CTxt par
exemple si les valeurs de départ sont des nombres ou replace si c'est du
texte)
for each C in .Worksheets(F_EX_feui).Range("a1:bh1000")
C=Ctxt(C.value,2,".")
next
ou encore
for each C in .Worksheets(F_EX_feui).Range("a1:bh1000")
if isNumeric(C.value) then C=Ctxt(C.value,2,".") else
C=replace(C.Value,",",".")
next
"B_M" a écrit dans le message de news:
> Ca semble etre la solution, j'ai remplace les virgule par des points
> dans
> le
> fichier lu... et ca marche! mais je ne connais pas la syntaxe à
> utiliser
> pour replace dans VBA. j'ai testé dans le "with":
>
> .Worksheets(F_EX_feui).Range("a1:bh1000").replace(....)
> mais VBA n'en veut pas.
> Merci d'avance de vos eclaircissement.
>
>
> "Patrice Henrio" a écrit :
>
>> la virgule au format américain sert à séparer les milliers. Dons il
>> faut
>> remplacer les virgules par des points avec la fonction replace.
>>
>>
>> "B_M" a écrit dans le message de news:
>>
>> > Bonjour
>> >
>> > Afin de recuperer les donnees d'un fichier d'acquisition de manieere
>> > automatique dans une macro, j'ai utilisé cette fonction:
>> >
>> > Function F_extrait(F_EX_fich As String, F_EX_feui As String)
>> > With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
>> > F_extrait = .Worksheets(F_EX_feui).Range("a1:bh1000")
>> > .Close False
>> > End With
>> > End Function
>> >
>> > Si cela recupere convenablement les donnees au format texte, les
>> > donnees
>> > numeriques ont un probleme de format. En effet, si le chiffre est
>> > composé
>> > de
>> > plus de 4 nombre (que ce soit avant ou apres la virgule), la
>> > fonction
>> > le
>> > met
>> > en integer et la virgule disparait:
>> > 276,10 devient 27610
>> >
>> > C'est tres ennuyant car je veux faire une moyenne de temperature et
>> > j'aimerai que les nombres soit en double. Comme j'ai du texte dans
>> > le
>> > tableau, j'ai donc voulu utiliser le type variant.
>> > Pour cela, j'ai essayé cette ecriture:
>> >
>> > Function F_extrait(F_EX_fich As String, F_EX_feui As String)
>> > dim F_EX() as variant
>> > With CreateObject("Excel.Application").Workbooks.Open(F_EX_fich)
>> > F_EX = .Worksheets(F_EX_feui).Range("a1:bh1000")
>> > .Close False
>> > F_extrait=F_EX
>> > End With
>> > End Function
>> >
>> > Mais il semble que le type de F_EX soit incompatible avec les
>> > données
>> > recupere par "= .Worksheets(F_EX_feui).Range("a1:bh1000")"
>> >
>> > Y a t'il une solution, ou bien peut t'on/doit t'on assigner le type
>> > de
>> > données sur F_extrait? Ou bien dois-je définir le type de données de
>> > chaque
>> > cellule du tableau (si c'est possible).
>> >
>> > Je vous remercie d'avance de vos eclaircissement.
>> >
>>
>>
>>