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

Vba : r

12 réponses
Avatar
Jac
Bonjour à tous,

je me souviens avoir vu passer une façon d'écrire en vba une formule de
calcul qui ne renvoie dans les cellules cibles que le résultat du
calcul et non la formule. Mais je ne me souviens pas de la syntaxe. A
moins que ce soit un rêve…
L'intérêt, c'est de ne plus avoir besoin de passer par copier et
collage spécial valeurs.

Si quelqu'un a une mémoire moins défaillante que la mienne ou une
meilleure façon d'archiver les trucs et astuces, je le remercie
d'avance d'appuyer sur l'icône "Refresh".

Jac

10 réponses

1 2
Avatar
isabelle
bonjour Jac,

sans connaitre la formule en question, voici un exemple :

Range("B1") = Evaluate("Sum(A1:A10)")

isabelle

Jac a écrit :
Bonjour à tous,

je me souviens avoir vu passer une façon d'écrire en vba une formule
de calcul qui ne renvoie dans les cellules cibles que le résultat du
calcul et non la formule. Mais je ne me souviens pas de la syntaxe. A
moins que ce soit un rêve…
L'intérêt, c'est de ne plus avoir besoin de passer par copier et
collage spécial valeurs.

Si quelqu'un a une mémoire moins défaillante que la mienne ou une
meilleure façon d'archiver les trucs et astuces, je le remercie
d'avance d'appuyer sur l'icône "Refresh".

Jac




Avatar
isabelle
hum ! j'ai peut être mal compris ta question, tu saura me le dire,

a+
isabelle

Jac a écrit :
Bonjour à tous,

je me souviens avoir vu passer une façon d'écrire en vba une formule
de calcul qui ne renvoie dans les cellules cibles que le résultat du
calcul et non la formule. Mais je ne me souviens pas de la syntaxe. A
moins que ce soit un rêve…
L'intérêt, c'est de ne plus avoir besoin de passer par copier et
collage spécial valeurs.

Si quelqu'un a une mémoire moins défaillante que la mienne ou une
meilleure façon d'archiver les trucs et astuces, je le remercie
d'avance d'appuyer sur l'icône "Refresh".

Jac




Avatar
Jac
Bonjour Isabelle,

tu as peut être mal compris, mais tu as bien répondu…
Dans mon souvenir, c'était une façon d'écrire la formule cible sans les
"" ou quelque chose du genre, mais que je n'ai pas encore retrouvé.

Voici deux formules que je voulais traiter de cette façon :
[D2:E20].FormulaR1C1 = "=TEXT(RC[2],""hh:mm"")"
[A2:A20].FormulaR1C1 = "=upper(RC[1])"

mais quand je transforme "=upper(RC[1])" en = Evaluate("upper(RC[1])")
j'obtiens des #VALEUR!

Y a-t'il moyen d'y remédier ?


isabelle a utilisé son clavier pour écrire :
hum ! j'ai peut être mal compris ta question, tu saura me le dire,

a+
isabelle

Jac a écrit :
Bonjour à tous,

je me souviens avoir vu passer une façon d'écrire en vba une formule de
calcul qui ne renvoie dans les cellules cibles que le résultat du calcul et
non la formule. Mais je ne me souviens pas de la syntaxe. A moins que ce
soit un rêve…
L'intérêt, c'est de ne plus avoir besoin de passer par copier et collage
spécial valeurs.

Si quelqu'un a une mémoire moins défaillante que la mienne ou une meilleure
façon d'archiver les trucs et astuces, je le remercie d'avance d'appuyer
sur l'icône "Refresh".

Jac




Avatar
isabelle
bonjour Jac,

essai comme ça,

[D2:E20] = Format([B2:B20], "hh:mm")
[A2:A20] = Application.Proper([A2:A20]) 'NomPropre
ou
[A2:A20] = Application.UCase([A2:A20]) 'MAJUSCULE

isabelle

Jac a écrit :
Bonjour Isabelle,

tu as peut être mal compris, mais tu as bien répondu…
Dans mon souvenir, c'était une façon d'écrire la formule cible sans
les "" ou quelque chose du genre, mais que je n'ai pas encore retrouvé.

Voici deux formules que je voulais traiter de cette façon :
[D2:E20].FormulaR1C1 = "=TEXT(RC[2],""hh:mm"")"
[A2:A20].FormulaR1C1 = "=upper(RC[1])"

mais quand je transforme "=upper(RC[1])" en = Evaluate("upper(RC[1])")
j'obtiens des #VALEUR!

Y a-t'il moyen d'y remédier ?


isabelle a utilisé son clavier pour écrire :
hum ! j'ai peut être mal compris ta question, tu saura me le dire,

a+
isabelle

Jac a écrit :
Bonjour à tous,

je me souviens avoir vu passer une façon d'écrire en vba une formule
de calcul qui ne renvoie dans les cellules cibles que le résultat du
calcul et non la formule. Mais je ne me souviens pas de la syntaxe.
A moins que ce soit un rêve…
L'intérêt, c'est de ne plus avoir besoin de passer par copier et
collage spécial valeurs.

Si quelqu'un a une mémoire moins défaillante que la mienne ou une
meilleure façon d'archiver les trucs et astuces, je le remercie
d'avance d'appuyer sur l'icône "Refresh".

Jac








Avatar
Jac
… sur la première formule j'obtiens une erreur 13 / incompabilité de
type et sur la deuxième une erreur 438 / propriété ou méthode non gérée
par cet objet.
J'ai fais quelques essais en réduisant le calcul à une seule cellule,
en redéfinissant les zones en range… à la place des [ mais ça n'a rien
changé.


isabelle a exposé le 02/07/2009 :
bonjour Jac,

essai comme ça,

[D2:E20] = Format([B2:B20], "hh:mm")
[A2:A20] = Application.Proper([A2:A20]) 'NomPropre
ou
[A2:A20] = Application.UCase([A2:A20]) 'MAJUSCULE

isabelle

Jac a écrit :
Bonjour Isabelle,

tu as peut être mal compris, mais tu as bien répondu…
Dans mon souvenir, c'était une façon d'écrire la formule cible sans les ""
ou quelque chose du genre, mais que je n'ai pas encore retrouvé.

Voici deux formules que je voulais traiter de cette façon :
[D2:E20].FormulaR1C1 = "=TEXT(RC[2],""hh:mm"")"
[A2:A20].FormulaR1C1 = "=upper(RC[1])"

mais quand je transforme "=upper(RC[1])" en = Evaluate("upper(RC[1])")
j'obtiens des #VALEUR!

Y a-t'il moyen d'y remédier ?


isabelle a utilisé son clavier pour écrire :
hum ! j'ai peut être mal compris ta question, tu saura me le dire,

a+
isabelle

Jac a écrit :
Bonjour à tous,

je me souviens avoir vu passer une façon d'écrire en vba une formule de
calcul qui ne renvoie dans les cellules cibles que le résultat du calcul
et non la formule. Mais je ne me souviens pas de la syntaxe. A moins que
ce soit un rêve…
L'intérêt, c'est de ne plus avoir besoin de passer par copier et collage
spécial valeurs.

Si quelqu'un a une mémoire moins défaillante que la mienne ou une
meilleure façon d'archiver les trucs et astuces, je le remercie d'avance
d'appuyer sur l'icône "Refresh".

Jac








Avatar
isabelle
bonjour Jac,

peut tu mettre un exemple de tes données en ligne sur ci-joint ?

isabelle

Jac a écrit :
… sur la première formule j'obtiens une erreur 13 / incompabilité de
type et sur la deuxième une erreur 438 / propriété ou méthode non
gérée par cet objet.
J'ai fais quelques essais en réduisant le calcul à une seule cellule,
en redéfinissant les zones en range… à la place des [ mais ça n'a rien
changé.


isabelle a exposé le 02/07/2009 :
bonjour Jac,

essai comme ça,

[D2:E20] = Format([B2:B20], "hh:mm")
[A2:A20] = Application.Proper([A2:A20]) 'NomPropre
ou
[A2:A20] = Application.UCase([A2:A20]) 'MAJUSCULE

isabelle

Jac a écrit :
Bonjour Isabelle,

tu as peut être mal compris, mais tu as bien répondu…
Dans mon souvenir, c'était une façon d'écrire la formule cible sans
les "" ou quelque chose du genre, mais que je n'ai pas encore retrouvé.

Voici deux formules que je voulais traiter de cette façon :
[D2:E20].FormulaR1C1 = "=TEXT(RC[2],""hh:mm"")"
[A2:A20].FormulaR1C1 = "=upper(RC[1])"

mais quand je transforme "=upper(RC[1])" en = Evaluate("upper(RC[1])")
j'obtiens des #VALEUR!

Y a-t'il moyen d'y remédier ?


isabelle a utilisé son clavier pour écrire :
hum ! j'ai peut être mal compris ta question, tu saura me le dire,

a+
isabelle

Jac a écrit :
Bonjour à tous,

je me souviens avoir vu passer une façon d'écrire en vba une
formule de calcul qui ne renvoie dans les cellules cibles que le
résultat du calcul et non la formule. Mais je ne me souviens pas
de la syntaxe. A moins que ce soit un rêve…
L'intérêt, c'est de ne plus avoir besoin de passer par copier et
collage spécial valeurs.

Si quelqu'un a une mémoire moins défaillante que la mienne ou une
meilleure façon d'archiver les trucs et astuces, je le remercie
d'avance d'appuyer sur l'icône "Refresh".

Jac












Avatar
Jac
… voici la "chose" : http://cjoint.com/?hcpYPqE70S

Dans son message précédent, isabelle a écrit :
bonjour Jac,

peut tu mettre un exemple de tes données en ligne sur ci-joint ?

isabelle

Jac a écrit :
… sur la première formule j'obtiens une erreur 13 / incompabilité de type
et sur la deuxième une erreur 438 / propriété ou méthode non gérée par cet
objet.
J'ai fais quelques essais en réduisant le calcul à une seule cellule, en
redéfinissant les zones en range… à la place des [ mais ça n'a rien changé.


isabelle a exposé le 02/07/2009 :
bonjour Jac,

essai comme ça,

[D2:E20] = Format([B2:B20], "hh:mm")
[A2:A20] = Application.Proper([A2:A20]) 'NomPropre
ou
[A2:A20] = Application.UCase([A2:A20]) 'MAJUSCULE

isabelle

Jac a écrit :
Bonjour Isabelle,

tu as peut être mal compris, mais tu as bien répondu…
Dans mon souvenir, c'était une façon d'écrire la formule cible sans les
"" ou quelque chose du genre, mais que je n'ai pas encore retrouvé.

Voici deux formules que je voulais traiter de cette façon :
[D2:E20].FormulaR1C1 = "=TEXT(RC[2],""hh:mm"")"
[A2:A20].FormulaR1C1 = "=upper(RC[1])"

mais quand je transforme "=upper(RC[1])" en = Evaluate("upper(RC[1])")
j'obtiens des #VALEUR!

Y a-t'il moyen d'y remédier ?


isabelle a utilisé son clavier pour écrire :
hum ! j'ai peut être mal compris ta question, tu saura me le dire,

a+
isabelle

Jac a écrit :
Bonjour à tous,

je me souviens avoir vu passer une façon d'écrire en vba une formule de
calcul qui ne renvoie dans les cellules cibles que le résultat du
calcul et non la formule. Mais je ne me souviens pas de la syntaxe. A
moins que ce soit un rêve…
L'intérêt, c'est de ne plus avoir besoin de passer par copier et
collage spécial valeurs.

Si quelqu'un a une mémoire moins défaillante que la mienne ou une
meilleure façon d'archiver les trucs et astuces, je le remercie
d'avance d'appuyer sur l'icône "Refresh".

Jac












Avatar
isabelle
bonjour Jac,

je crois bien qu'il n'y a pas d'autre solution que de passer par une boucle,

For i = 2 To 20
Range("A" & i) = UCase(Range("B" & i))
Range("D" & i) = "'" & Format(Range("F" & i), "hh:mm")
Range("E" & i) = "'" & Format(Range("G" & i), "hh:mm")
Next

isabelle

Jac a écrit :
… voici la "chose" : http://cjoint.com/?hcpYPqE70S

Dans son message précédent, isabelle a écrit :
bonjour Jac,

peut tu mettre un exemple de tes données en ligne sur ci-joint ?

isabelle

Jac a écrit :
… sur la première formule j'obtiens une erreur 13 / incompabilité de
type et sur la deuxième une erreur 438 / propriété ou méthode non
gérée par cet objet.
J'ai fais quelques essais en réduisant le calcul à une seule
cellule, en redéfinissant les zones en range… à la place des [ mais
ça n'a rien changé.


isabelle a exposé le 02/07/2009 :
bonjour Jac,

essai comme ça,

[D2:E20] = Format([B2:B20], "hh:mm")
[A2:A20] = Application.Proper([A2:A20]) 'NomPropre
ou
[A2:A20] = Application.UCase([A2:A20]) 'MAJUSCULE

isabelle

Jac a écrit :
Bonjour Isabelle,

tu as peut être mal compris, mais tu as bien répondu…
Dans mon souvenir, c'était une façon d'écrire la formule cible
sans les "" ou quelque chose du genre, mais que je n'ai pas encore
retrouvé.

Voici deux formules que je voulais traiter de cette façon :
[D2:E20].FormulaR1C1 = "=TEXT(RC[2],""hh:mm"")"
[A2:A20].FormulaR1C1 = "=upper(RC[1])"

mais quand je transforme "=upper(RC[1])" en =
Evaluate("upper(RC[1])")
j'obtiens des #VALEUR!

Y a-t'il moyen d'y remédier ?


isabelle a utilisé son clavier pour écrire :
hum ! j'ai peut être mal compris ta question, tu saura me le dire,

a+
isabelle

Jac a écrit :
Bonjour à tous,

je me souviens avoir vu passer une façon d'écrire en vba une
formule de calcul qui ne renvoie dans les cellules cibles que le
résultat du calcul et non la formule. Mais je ne me souviens pas
de la syntaxe. A moins que ce soit un rêve…
L'intérêt, c'est de ne plus avoir besoin de passer par copier et
collage spécial valeurs.

Si quelqu'un a une mémoire moins défaillante que la mienne ou
une meilleure façon d'archiver les trucs et astuces, je le
remercie d'avance d'appuyer sur l'icône "Refresh".

Jac
















Avatar
Jac
… bon, la messe est dite… Si pour ne pas copier et coller les valeurs,
je dois faire une boucle, alors je ne suis pas sûr de vraiment y gagner
au change. Comme j'utilise souvent cette façon de faire, je pensais
réduire une peu les instructions. On finit par se créer tout seul des
problèmes. C'est comme ça les pinailleurs…

Merci encore de t'être intéressée à mon "problème".

Jac

isabelle avait écrit le 02/07/2009 :
bonjour Jac,

je crois bien qu'il n'y a pas d'autre solution que de passer par une boucle,

For i = 2 To 20
Range("A" & i) = UCase(Range("B" & i))
Range("D" & i) = "'" & Format(Range("F" & i), "hh:mm")
Range("E" & i) = "'" & Format(Range("G" & i), "hh:mm")
Next

isabelle

Jac a écrit :
… voici la "chose" : http://cjoint.com/?hcpYPqE70S

Dans son message précédent, isabelle a écrit :
bonjour Jac,

peut tu mettre un exemple de tes données en ligne sur ci-joint ?

isabelle

Jac a écrit :
… sur la première formule j'obtiens une erreur 13 / incompabilité de type
et sur la deuxième une erreur 438 / propriété ou méthode non gérée par
cet objet.
J'ai fais quelques essais en réduisant le calcul à une seule cellule, en
redéfinissant les zones en range… à la place des [ mais ça n'a rien
changé.


isabelle a exposé le 02/07/2009 :
bonjour Jac,

essai comme ça,

[D2:E20] = Format([B2:B20], "hh:mm")
[A2:A20] = Application.Proper([A2:A20]) 'NomPropre
ou
[A2:A20] = Application.UCase([A2:A20]) 'MAJUSCULE

isabelle

Jac a écrit :
Bonjour Isabelle,

tu as peut être mal compris, mais tu as bien répondu…
Dans mon souvenir, c'était une façon d'écrire la formule cible sans les
"" ou quelque chose du genre, mais que je n'ai pas encore retrouvé.

Voici deux formules que je voulais traiter de cette façon :
[D2:E20].FormulaR1C1 = "=TEXT(RC[2],""hh:mm"")"
[A2:A20].FormulaR1C1 = "=upper(RC[1])"

mais quand je transforme "=upper(RC[1])" en = Evaluate("upper(RC[1])")
j'obtiens des #VALEUR!

Y a-t'il moyen d'y remédier ?


isabelle a utilisé son clavier pour écrire :
hum ! j'ai peut être mal compris ta question, tu saura me le dire,

a+
isabelle

Jac a écrit :
Bonjour à tous,

je me souviens avoir vu passer une façon d'écrire en vba une formule
de calcul qui ne renvoie dans les cellules cibles que le résultat du
calcul et non la formule. Mais je ne me souviens pas de la syntaxe. A
moins que ce soit un rêve…
L'intérêt, c'est de ne plus avoir besoin de passer par copier et
collage spécial valeurs.

Si quelqu'un a une mémoire moins défaillante que la mienne ou une
meilleure façon d'archiver les trucs et astuces, je le remercie
d'avance d'appuyer sur l'icône "Refresh".

Jac
















Avatar
isabelle
oublie ce que je viens de dire Jac,
j'ai réussi avec Transpose :

[a2:a20] = Evaluate("transpose(upper(transpose(b2:b20)))")
[d2:d20] =
Application.Transpose(Application.Text(Application.Transpose([f2:f20]),
"hh:mm"))
[e2:e20] =
Application.Transpose(Application.Text(Application.Transpose([g2:g20]),
"hh:mm"))


isabelle

Jac a écrit :
… bon, la messe est dite… Si pour ne pas copier et coller les valeurs,
je dois faire une boucle, alors je ne suis pas sûr de vraiment y
gagner au change. Comme j'utilise souvent cette façon de faire, je
pensais réduire une peu les instructions. On finit par se créer tout
seul des problèmes. C'est comme ça les pinailleurs…

Merci encore de t'être intéressée à mon "problème".

Jac

isabelle avait écrit le 02/07/2009 :
bonjour Jac,

je crois bien qu'il n'y a pas d'autre solution que de passer par une
boucle,

For i = 2 To 20
Range("A" & i) = UCase(Range("B" & i))
Range("D" & i) = "'" & Format(Range("F" & i), "hh:mm")
Range("E" & i) = "'" & Format(Range("G" & i), "hh:mm")
Next

isabelle

Jac a écrit :
… voici la "chose" : http://cjoint.com/?hcpYPqE70S

Dans son message précédent, isabelle a écrit :
bonjour Jac,

peut tu mettre un exemple de tes données en ligne sur ci-joint ?

isabelle

Jac a écrit :
… sur la première formule j'obtiens une erreur 13 / incompabilité
de type et sur la deuxième une erreur 438 / propriété ou méthode
non gérée par cet objet.
J'ai fais quelques essais en réduisant le calcul à une seule
cellule, en redéfinissant les zones en range… à la place des [
mais ça n'a rien changé.


isabelle a exposé le 02/07/2009 :
bonjour Jac,

essai comme ça,

[D2:E20] = Format([B2:B20], "hh:mm")
[A2:A20] = Application.Proper([A2:A20]) 'NomPropre
ou
[A2:A20] = Application.UCase([A2:A20]) 'MAJUSCULE

isabelle

Jac a écrit :
Bonjour Isabelle,

tu as peut être mal compris, mais tu as bien répondu…
Dans mon souvenir, c'était une façon d'écrire la formule cible
sans les "" ou quelque chose du genre, mais que je n'ai pas
encore retrouvé.

Voici deux formules que je voulais traiter de cette façon :
[D2:E20].FormulaR1C1 = "=TEXT(RC[2],""hh:mm"")"
[A2:A20].FormulaR1C1 = "=upper(RC[1])"

mais quand je transforme "=upper(RC[1])" en =
Evaluate("upper(RC[1])")
j'obtiens des #VALEUR!

Y a-t'il moyen d'y remédier ?


isabelle a utilisé son clavier pour écrire :
hum ! j'ai peut être mal compris ta question, tu saura me le dire,

a+
isabelle

Jac a écrit :
Bonjour à tous,

je me souviens avoir vu passer une façon d'écrire en vba une
formule de calcul qui ne renvoie dans les cellules cibles que
le résultat du calcul et non la formule. Mais je ne me
souviens pas de la syntaxe. A moins que ce soit un rêve…
L'intérêt, c'est de ne plus avoir besoin de passer par copier
et collage spécial valeurs.

Si quelqu'un a une mémoire moins défaillante que la mienne ou
une meilleure façon d'archiver les trucs et astuces, je le
remercie d'avance d'appuyer sur l'icône "Refresh".

Jac




















1 2