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

concatener données dans formule

6 réponses
Avatar
Michel
Bonjour à tous,

Dans une macro, je cherche à intégrer une formule dans une cellule en
fonction d'une variable.

dim q as variant ' variable numérique
dim varia as String

q=ActiveCell.Value
If q > 0 Then varia = "=" & q & "/r1c6" Else varia = 0
ActiveCell.FormulaR1C1 = varia

Sur un poste en Excel 2000, tout fonctionne mais par contre en Excel 2003,
j'ai un message d'erreur 1004.

Quelqu'un a-t-il une idée sur ce qui ne va pas ?

D'avance merci

Michel

6 réponses

Avatar
Pounet95
Bonsoir,
Je pense que r1c6 n'est pas compris, remplacer par F6

If q > 0 Then varia = "=" & q & "/F6" Else varia = 0


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Michel" a écrit dans le message de news:
%
Bonjour à tous,

Dans une macro, je cherche à intégrer une formule dans une cellule en
fonction d'une variable.

dim q as variant ' variable numérique
dim varia as String

q¬tiveCell.Value
If q > 0 Then varia = "=" & q & "/r1c6" Else varia = 0
ActiveCell.FormulaR1C1 = varia

Sur un poste en Excel 2000, tout fonctionne mais par contre en Excel 2003,
j'ai un message d'erreur 1004.

Quelqu'un a-t-il une idée sur ce qui ne va pas ?

D'avance merci

Michel


Avatar
Michel
Merci pour cette idée mais j'ai déjà essayé sans succès.

en fait, j'ai essayé
varia= "=" & q
pour être sur que ce n'était pas la suite de ma chaine de caractère qui
débloquait mais sans succès..

Une autre idée serait la bienvenue...


"Pounet95" a écrit dans le message de news:

Bonsoir,
Je pense que r1c6 n'est pas compris, remplacer par F6

If q > 0 Then varia = "=" & q & "/F6" Else varia = 0


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Michel" a écrit dans le message de news:
%
Bonjour à tous,

Dans une macro, je cherche à intégrer une formule dans une cellule en
fonction d'une variable.

dim q as variant ' variable numérique
dim varia as String

q¬tiveCell.Value
If q > 0 Then varia = "=" & q & "/r1c6" Else varia = 0
ActiveCell.FormulaR1C1 = varia

Sur un poste en Excel 2000, tout fonctionne mais par contre en Excel
2003, j'ai un message d'erreur 1004.

Quelqu'un a-t-il une idée sur ce qui ne va pas ?

D'avance merci

Michel





Avatar
Pounet95
Re,

Peux-tu expliciter d'avanatage ?
Où se trouve ce code ( module ) ? Quelle valeur dans F6 ( R1C6 ) ?
Le résultat doit-il être un nombre ou la concaténation de la valeur de la
variable q avec /R1C6
ou la concaténation de <valeur de q> / <valeur en F6 > ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Michel" a écrit dans le message de news:

Merci pour cette idée mais j'ai déjà essayé sans succès.

en fait, j'ai essayé
varia= "=" & q
pour être sur que ce n'était pas la suite de ma chaine de caractère qui
débloquait mais sans succès..

Une autre idée serait la bienvenue...


"Pounet95" a écrit dans le message de news:

Bonsoir,
Je pense que r1c6 n'est pas compris, remplacer par F6

If q > 0 Then varia = "=" & q & "/F6" Else varia = 0


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Michel" a écrit dans le message de news:
%
Bonjour à tous,

Dans une macro, je cherche à intégrer une formule dans une cellule en
fonction d'une variable.

dim q as variant ' variable numérique
dim varia as String

q¬tiveCell.Value
If q > 0 Then varia = "=" & q & "/r1c6" Else varia = 0
ActiveCell.FormulaR1C1 = varia

Sur un poste en Excel 2000, tout fonctionne mais par contre en Excel
2003, j'ai un message d'erreur 1004.

Quelqu'un a-t-il une idée sur ce qui ne va pas ?

D'avance merci

Michel








Avatar
Michel Gaboly
Bonsoir Michel,

Testé sans problème sur Excel 2004 (Mac).

Excel 2003 affiche des tas de messages liés aux erreurs. Est-il possibl e que l'erreur 2004* corresponde à la gestion
d'erreur d'Excel ? Essaie dans les Préférences (Mac) ou Options (PC) de désactiver la vérification des erreurs.

Est-ce que tu fais les tests avec le même fichier sur les 2 versions d' Excel ?

Je ne sais pas ce que tu veux faire mais c'est en général une TRES ma uvaise idée d'avoir une valeur numérique dans une
formule : si pour une raison quelconque une MAJ est nécessaire (erreur de conception, évolution du projet, paramètre qui
change, ...), il est beaucoup + facile de s'y retrouver si les élémen ts non calculés apparaissent explicitement dans des
cellules ou sont associés à des noms ; voici un exemple :

http://www.gaboly.com/Excel/Horreur.html


S'il s'agit de ne pas surcharger le document, utilise une colonne que tu masques ensuuite

Si tu veux absolument continuer dans cette voie, simplifie :

ActiveCell.Value équivaut en l'occurrence à ActiveCell (Value est la propriété par défaut de Range

Iif équivaut à la fonxtion SI() de la feuille de calcul :

ActiveCell.FormulaR1C1 = IIf(ActiveCell > 0, "=" & ActiveCell & " / r1c6", 0)

Plus besoin de variable.


Mais je te conseille très vivement une autre approche.


* C'est-à-dire une erreur qui se passe dans Excel (par exemple une form ule qui aboutit à #DIV/0! si F1 est vide), qui
transmet le code 2004 à VBA, et non une erreur interne à VBA, comme l es erreurs 9 ou 13 par exemple)


Bonjour à tous,

Dans une macro, je cherche à intégrer une formule dans une cellule en
fonction d'une variable.

dim q as variant ' variable numérique
dim varia as String

qtiveCell.Value
If q > 0 Then varia = "=" & q & "/r1c6" Else varia = 0
ActiveCell.FormulaR1C1 = varia

Sur un poste en Excel 2000, tout fonctionne mais par contre en Excel
2003, j'ai un message d'erreur 1004.

Quelqu'un a-t-il une idée sur ce qui ne va pas ?

D'avance merci

Michel



--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
Michel Gaboly
Salut Pounet ;-)

Avec 6 dans la cellule active, cela aboutit à :

=6 / $F$1

D'apès moi, ce n'est pas une bonne idée d'avoir directement une valeu r à l'intérieur d'une formule, car cela rend
la correction d'éventuelles erreurs de conception ou une future mise à jour bien + difficile.

http://www.gaboly.com/Excel/Horreur.html

Re,

Peux-tu expliciter d'avanatage ?
Où se trouve ce code ( module ) ? Quelle valeur dans F6 ( R1C6 ) ?
Le résultat doit-il être un nombre ou la concaténation de la vale ur de
la variable q avec /R1C6
ou la concaténation de <valeur de q> / <valeur en F6 > ?




--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
Michel
Bonjour à tous,

Merci Michel de m'avoir mis en garde sur le fait d'avoir une valeur
numérique dans une formule mais c'est indipensable dans mon tableau.
En fait, le but de ce tableau est de valoriser des nomenclatures et des
gammes que je récupére de notre logiciel d'ERP sur des feuilles Excel.
La macro que j'ai dévelloppé me recopie et m'ordonne et calcule les données
dans un tableau de synthèse et visuellement, je souhaitais avoir pour une
pièce fabriquée sa gamme et sa nomenclature même si au final, je suis obligé
d'additionner des choux et des carottes ! Enfin, avec la fonction somme.si,
je m'en suis sorti.

Bref, j'ai trouvé une solution à mon problème : le bug vient des options
régionales et linguistiques. En fait, sur mon poste, j'ai choisi le . comme
séparateur décimal tandis que la plupart des autres postes quelquesoit la
version d'Excel sont restés en , comme séparateur ! Visiblement
ActiveCell.FormulaR1C1 ne supporte pas de fonctionner avec des virgules.

Merci encore au forum de sa vivacité de réponse !

Michel


"Michel Gaboly" a écrit dans le message de news:

Bonsoir Michel,

Testé sans problème sur Excel 2004 (Mac).

Excel 2003 affiche des tas de messages liés aux erreurs. Est-il possible que
l'erreur 2004* corresponde à la gestion
d'erreur d'Excel ? Essaie dans les Préférences (Mac) ou Options (PC) de
désactiver la vérification des erreurs.

Est-ce que tu fais les tests avec le même fichier sur les 2 versions d'Excel
?

Je ne sais pas ce que tu veux faire mais c'est en général une TRES mauvaise
idée d'avoir une valeur numérique dans une
formule : si pour une raison quelconque une MAJ est nécessaire (erreur de
conception, évolution du projet, paramètre qui
change, ...), il est beaucoup + facile de s'y retrouver si les éléments non
calculés apparaissent explicitement dans des
cellules ou sont associés à des noms ; voici un exemple :

http://www.gaboly.com/Excel/Horreur.html


S'il s'agit de ne pas surcharger le document, utilise une colonne que tu
masques ensuuite

Si tu veux absolument continuer dans cette voie, simplifie :

ActiveCell.Value équivaut en l'occurrence à ActiveCell (Value est la
propriété par défaut de Range

Iif équivaut à la fonxtion SI() de la feuille de calcul :

ActiveCell.FormulaR1C1 = IIf(ActiveCell > 0, "=" & ActiveCell & " /
r1c6", 0)

Plus besoin de variable.


Mais je te conseille très vivement une autre approche.


* C'est-à-dire une erreur qui se passe dans Excel (par exemple une formule
qui aboutit à #DIV/0! si F1 est vide), qui
transmet le code 2004 à VBA, et non une erreur interne à VBA, comme les
erreurs 9 ou 13 par exemple)


Bonjour à tous,

Dans une macro, je cherche à intégrer une formule dans une cellule en
fonction d'une variable.

dim q as variant ' variable numérique
dim varia as String

q¬tiveCell.Value
If q > 0 Then varia = "=" & q & "/r1c6" Else varia = 0
ActiveCell.FormulaR1C1 = varia

Sur un poste en Excel 2000, tout fonctionne mais par contre en Excel 2003,
j'ai un message d'erreur 1004.

Quelqu'un a-t-il une idée sur ce qui ne va pas ?

D'avance merci

Michel



--
Cordialement,

Michel Gaboly
www.gaboly.com