Probléme d'adaptation Formule excel en VBA

  • Initiateur de la discussion Initiateur de la discussion Fab61
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

Fab61

Guest
Bonjour,

dans ma petite application quand j'inserte une ligne je voudrai que la cellule B de la ligne inseré est une formule (c'est ici le probleme) je l'arrive pas a l'ecrire comme il faut ! Pour l'instant ma macro est celle ci :

Code:
ActiveCell.EntireRow.Offset(0, 0).Range('B1').Select
ActiveCell.FormulaR1C1 = '=RC[6]&RC[1]'

Mais je voudrai inserer un ' / ' entre mes 2 cellules ...
Ou alors celle formule la ...
=SI(ESTVIDE(H8);'';H8&' / '&C8)

Ceux qui me donne un resutalt de ce genre :
Reference / Indice

Bref tous marche mais le probleme c le ' / '

Merci de votre aide.
Fabien
 
bonjourFab61
Salut Eric

voila ce que j'obtiens avec l'enregistreur de macro

ActiveCell.FormulaR1C1 = '=IF(ISBLANK(R[5]C[3]),'''',R[5]C[3] /R[5]C[-2])'

indication:l'activecell est E3, il faut donc adapter

Message édité par: pierrejean, à: 07/04/2006 09:50
 
Merci piere jean,

mais sa n'as pas l'air de marcher

j'obtien qlq chose comme ceci :

=SI(ESTVIDE(H21);'';H21 / C21)

avec ce code

Code:
ActiveCell.EntireRow.Offset(0, 0).Range('B1').Select
ActiveCell.FormulaR1C1 = '=IF(ISBLANK(RC[6]),'''',RC[6] / RC[1])'

et il faudrai qlq chose comme ceci

=SI(ESTVIDE(H21);'';H21&'/'&C21)
 
Bonjour à tous

un code comme ceci devrait passer
Code:
Range('B' & ActiveCell.Row).FormulaR1C1 = '=IF(ISBLANK(RC[6]),'''',RC[6]&'' / ''&RC[1])'
il place la formule dans la cellule colonne B de la ligne de la cellule active ce que j'ai traduit de ton code.

A+
 
Merci pour vos réponses sa marche nikel 🙂

voici le code final sa pourra peu etre servir a qlq 🙂

Code:
ActiveCell.EntireRow.Offset(0, 0).Range('B1').Select
ActiveCell.FormulaR1C1 = '=IF(ISBLANK(RC[6]),'''',RC[6]&'' / ''&RC[1])'
 
re

effectivement apres recherche j'ais detecté dans ce que tu m'as transmis un espace en trop

je confirme que cette expression est correcte

ActiveCell.FormulaR1C1 = '=IF(ISBLANK(RC[6]),'''',RC[6] /RC[1])'

a ceci pres qu'elle donne H11 et C11 e non H21 C21

tu avais ecrit:

ActiveCell.FormulaR1C1 = '=IF(ISBLANK(RC[6]),'''',RC[6] / RC[1])'

note: sur le forum les espaces ne sont pas faciles a voir

Message édité par: pierrejean, à: 07/04/2006 10:30
 
re

pour etre vraiment complet

pour placer en B1 la formule

=SI(ESTVIDE(H8);'';H8 /C8)

le code est

ActiveCell.EntireRow.Offset(0, 0).Range('B1').Select
ActiveCell.FormulaR1C1 = '=IF(ISBLANK(R[7]C[6]),'''',R[7]C[6] /R[7]C[1])'

edit:

entre nous la 1ere ligne peur s'abreger en

Range('B1').Select

Message édité par: pierrejean, à: 07/04/2006 10:52
 
Re

entre nous, pierre jean, tu as tort, la première ligne ne peut s'abréger ainsi.
l'instruction en fait sélectionne la cellule colonne B de la ligne de la cellule active et peut s'abréger en fait en
Code:
Range('B' & ActiveCell.Row).select
le offset en l'occurence ne sert à rien positionné à 0,0
en exemple l'instruction
Code:
Range('B1').Range('B1').Select
selectionne en fait la cellule C1 (la cellule B1 en référence à B1)
de toute façon la sélection ne sert à rien dans ce code sauf à le ralentir, les deux lignes d'instruction pouvant s'écrire
Code:
Range('B' & ActiveCell.Row).FormulaR1C1 = '=IF(ISBLANK(RC[6]),'''',RC[6]&'' / ''&RC[1])'

Cordialement, A+
 
hello Yeahou

merci de ta precision

peu habitué aux codes tarabiscotés j'ignorais cette façon de s'exprimer

a l'avenir je ferais un test plus complet avant de dire une connerie

mes excuses a tous

il n'en reste pas moins que de reference relative en reference relative ta ligne de code ne garantit nullement H8/C8

en plus au temps pour moi j'ais cru jusqu'au bout qu'il s'agissait d'une division alors que fab desirait un string

nul de chez nul !!!!!!!!!

Message édité par: pierrejean, à: 07/04/2006 13:13
 
Re coucou

En faite je voulai savoir si ct possible d'appliquer cette formule-ci a toute la colonne mais en cherchant la premiere a la denriere cellule rempli ? (afin de ne pas appliquer la formule sur les 65000 lignes.


Ca doit etre avec la fonction End(xlDown) mais je sais pas trops aprés.

Merci
Fabien
 
Re

une instruction tableau, c'est le plus rapide, tu changes B1 par la cellule de début, tu changes A65536 par la colonne de référence

A+

Code:
Range('B1:B' & Range('A65536').End(xlUp).Row).FormulaR1C1 = '=IF(ISBLANK(RC[6]),'''',RC[6]&'' / ''&RC[1])'
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

N
Réponses
1
Affichages
764
A
Réponses
11
Affichages
2 K
Anamiya
A
K
Réponses
0
Affichages
3 K
K
M
Réponses
7
Affichages
2 K
melie23
M
T
Réponses
4
Affichages
2 K
Titi91
T
Retour