Reporter 'une formule dans une cellule par macro

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 !

Webperegrino

XLDnaute Accro
Supporter XLD
Bonjour Le Forum,
Je bloque sur la conception d'une ligne de macro pour l'intégretion d'une formule dans une cellule de ma feuille ARCHIVE (la prochaine saisie reproduisant aussi cette formuleà la suite en colonne J).

Voici ce que j'ai entré :

VB:
...
.Range("J" & lv).Formula = SI(ET("H" & lv = """", "I" & lv = """"), """", "J" & lv - "H" & lv + "I" & lv)
...

J'ai un message d'erreur sur l'expression ET.
Pouvez-vous m'aider pour que cette ligne de macro soit acceptée ?
Tout le reste de la programmantion fonctionne.
Merci d'avance
Webperegrino
 
Re : Reporter 'une formule dans une cellule par macro

Bonjour Webperegrino, bonjour le forum,

En metant J dans le resultat de la condition tu vas avoir un référence circulaire puisque ta formule est en J. Sinon essaie comme ça :
Code:
Cells(lv, 10).Formula = "=If(And(" & Cells(lv, 8).Address & "=""""," & Cells(lv, 9).Address & "=""""),""""," _
   & Cells(lv, 8).Address & "+" & Cells(lv, 9).Address & ")"
 
Re : Reporter 'une formule dans une cellule par macro

Salut Webperegrino et Robert,
.
Je te propose ta formule vba en français.
Code:
.Range("J" & lv).FormulaLocal = "=SI(ET(H" & lv & "= """"; I" & lv & " = """"); """";J" & lv & "- H" & lv & "+ I" & lv & ")"
.
Sinon même remarque que Robert sur la référence circulaire.
 
Re : Reporter 'une formule dans une cellule par macro

Le Forum,
Bonsoir Robert et bonsoir Nairolf,
Merci pour vos propositions.
Ma colonne J4 à J1000 ne sera occupée que pour les lignes ... occupées, seul endroit de la feuille ayant des formules (gain de quelques Ko).
Je viens juste de rentrer et c'est trop tard pour passer dans l'application.

J'ai dû mal vous indiquer ma formule dans mon message ci-avant car, par exemple...
j'ai en cellule J9
=SI(ET(H9="";I9="");"";J8-H9+I9)
Je ne pense pas y avoir de formulation circulaire dans ce que j'ai réussi entre-temps à créer.
Il me faudra peut-être tenir compte aussi des vides et des 0 dans H9 et J9
=SI(OU(ET(H9="";I9=0);ET(H9=0;I9=0);ET(H9="";I9=""));"";J8-H9+I9), mais la courte ci-avant semble fonctionner.
Objectif : Reste en stock = stock précédent - sortie de stock + retour en stock
Je reviens vers vous pour vous signaler le résultat obtenu avec vos deux solutions.
Cordialement,
Webperegrino
 
Re : Reporter 'une formule dans une cellule par macro

Salut webperegrino,

Tu obtiendras le même résultat avec nos propositions (la différence est juste une question d'écriture et d'utilisation de propriétés Vba qui sont multiples lorsqu'on travail avec des plages de cellules et des formules).

Il y a bien une référence circulaire dans ta première formule qui dis: J9=...J9-...
Par contre la dernière dis: J9=...J8-...

D'après ta première formule j'avais écris ça:
Code:
.Range("J" & lv).FormulaLocal = "=SI(ET(H" & lv & "= """"; I" & lv & " = """"); """";J" & lv & "- H" & lv & "+ I" & lv & ")"
Mais en utilisant ta dernière formule, j'écrirais ça:
Code:
.Range("J" & lv).FormulaLocal = "=SI(OU(ET(H" & lv & "= """"; I" & lv & " = 0);ET(H" & lv & "= 0; I" & lv & " = 0);ET(H" & lv & "= """"; I" & lv & " = """")); """";J" & (lv-1) & "- H" & lv & "+ I" & lv & ")"
En espérant n'avoir oublié aucune parenthèse.
 
Re : Reporter 'une formule dans une cellule par macro

Le Forum,
Bonsoir (bonjour) Nairolf et Robert,
J'ai expérimenté vos propositions, avec les corrections nécessaires avant la réception du message complémentaire transmis #5.
Le résultat est correct, la formule ne donne pas d'anomalie.
Il me reste toutefois à étudier tous les cas de figures pour vérifier le bon fonctionnement de la formulation :
- lignes avec sortie, retour : reste
- ligne sans sortie, avec approvisionnement du stock : nouveau reste en stock
- ligne avec sortie et retour complet : reste en stock.
L'application tournera parfaitement pour l'année prochaine car elle finit une période d'utilisation dimanche soir (à Lorient, pour le Festival). Je suis bénévole et j'attends de trouver mes heures de sommeil normales pour éplucher tout cela : 3 h 10 pour repartir à 7 h 30 depuis une semaine, en plus de mon travail ce n'est pas sérieux pour vagabonder dans la VBA sans buguer!
Encore merci à vous deux.
Webperegrino
 
- 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

Discussions similaires

Réponses
7
Affichages
279
Réponses
8
Affichages
614
Réponses
5
Affichages
157
Retour