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

2 réponses

1 2
Avatar
Jac
… je testerai plus tard.

isabelle vient de nous annoncer :
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




















Avatar
isabelle
essai celle-ci à la place

[A2:A20] = Evaluate("transpose(upper(transpose(b2:b20)))")
[d2:e20].NumberFormat = "@"
[d2:e20] =
Application.Transpose(Application.Text(Application.Transpose([f2:g20]),
"hh:mm"))

isabelle

Jac a écrit :
… je testerai plus tard.

isabelle vient de nous annoncer :
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