> Tous les forums > Forum Bureautique
 Formule RésultatSujet résolu
Ajouter un message à la discussion
Pages : [1] 2 ... Fin
Page 1 sur 2 [Fin]
SmichelS
  Posté le 18/05/2011 @ 16:20 
Aller en bas de la page 
Petit astucien

Cela fait longtemps que je cherche:

Je souhaite encoder une note de calcul dans une cellule excel, elle doit rester visible (comme du texte), et je voudrait obtenir le résultat de la note de calcul dans une autre cellule.

Exemple: Cellule A1: (12*4/7)+82.05 cette note de calcul est variable, et le résultat en A2 (par exemple) ou ailleur: 88.907142

Et obtenir le résultat modifié en changeant la note en A1.

J'y suis déjà parvenu en travaillant en même temps sur 2 feuilles excel, la première avec visibilté des formules et l'autre avec le résultat obtenu par collage avec liaison, mais ce système est fastidieux. je possède la vesion 2010 d'excel.

Merci beaucoup à celui ou ceux qui trouveront la réponse.

Publicité
ferrand
 Posté le 18/05/2011 à 18:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

et bienvenue sur PCAstuces.

Tu ouvres le module de ta feuille de calcul (clic droit sur l'onglet et Visualiser le code) et ut colles la macro suivante sur ce module :

Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Target.Cells(1, 1)
If Target = Me.Range("A1") Then
If Target <> "" Then
Me.Range("A2").FormulaLocal = "=" & Target.Value
Else
Me.Range("A2").ClearContents
End If
End If
End Sub

[On peut modifier A1 et A2 à convenance ; les macros doivent bien sûr être autorisées ; cette procédure s'exécute chaque fois qu'un changement affecte A1.]

Bien sûr, si le contenu de A1 ne constitue pas une formule susceptible de fournir un résultat, A2 affichera une valeur d'erreur.

rj390111
 Posté le 18/05/2011 à 20:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir,

ferrand a été plus véloce mais j'ai l'habitude

Je propose quand même une solution par formule

=GAUCHE(A1;TROUVE("*";A1;1)-1)*1*STXT(A1;TROUVE("*";A1;1)+1;TROUVE("/";A1;1)-1-TROUVE("*";A1;1))*1/STXT(A1;TROUVE("/";A1;1)+1;TROUVE("+";A1;1)-1-TROUVE("/";A1;1))*1+DROITE(A1;NBCAR(A1)-TROUVE("+";A1;1))*1

C'est long mais cela fonctionne à condition que la formule soit toujours une * puis une / puis une +

Si nécessaire je peux expliquer.



Modifié par rj390111 le 18/05/2011 20:08
SmichelS
 Posté le 19/05/2011 à 09:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Merci Ferrand, je vais tester.

Merci RJ, mais la formule peut être n'importe quelle note de calcul (même avec des sinus ....)

rj390111
 Posté le 19/05/2011 à 14:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

Ok je ne l'avais ressenti comme ça.

De toute façon ferrand a donné la solution universelle.

Merci

SmichelS
 Posté le 20/05/2011 à 10:01 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Re bonjour Ferrand.

J'ai l'impression que vous êtes 2 à aimer relever des défits.

Une fois de plus je me rends compte que les bonnes questions donnent de bonnes réponses. La macro que tu m'as envoyée fonctionne suivant l'exemple fourni. Mais le but est de pouvoir utiliser dans un classeur, et différentes feuilles une note de calcul dans plusieurs cellules d'une même feuille et obtenir les résultat dans une cellule à déterminer.

Exemple dans la colonne C introduire par ex. en ligne 3, 7, 10,... une note de calcul pour obtenir les résultats correspondant en colonne X ou Y ou Z... et éventuellement les mêmes (ou différentes) lignes que les notes de calcul.

A mon avis une (LA) solution est une routine en visual basic à importer comme fonction dans les macros personnalisées

C'est dommage qu'on ne puisse pas joindre une application réelle (en excel) dans ces réponses

galopin01
 Posté le 20/05/2011 à 10:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

C'est dommage qu'on ne puisse pas joindre une application réelle (en excel) dans ces réponses

Messi ! Yaka passer par la case départ

ferrand
 Posté le 20/05/2011 à 11:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Pour banaliser l'utilisation, la transformer en macro normale (qui ne s'exécutera que sur demande) [ici il s'agissait d'une évènementielle s'exécutant automatiquement lorsque la valeur d'une cellule déterminée se modifiait].

Deux méthodes :

1) Tu sélectionnes la cellule contenant ta "note de calcul", tu lances la macro, elle transforme ta note en formule fournissant un résultat dans une cellule voisine (à côté, en dessous, ...) ou plus éloignée mais dans une position relative prédéfinie par rapport à la cellule source ;

2) Même chose mais la macro te demande de sélectionner la cellule cible, ce qui allonge un peu l'exécution mais donne plus de souplesse.

Rien n'empêche d'ailleurs de faire les deux ! Et au demeurant aussi, traiter en une seule fois une sélection non limitée à une seule cellule.

A suivre.

Je mets en réserve : la priorité du jour est de réapprovisionner mon frigo .

ferrand
 Posté le 20/05/2011 à 14:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Re,

Un premier jet (à améliorer) qui devrait fonctionner sur la même feuille.

Sub FormulerChaîne()
Dim s As Range, c As Range, dl%, dc%
Set s = Selection
Set c = Application.InputBox("Sélectionner cellule cible", "Sélection cible", , , , , , 8)
Set c = c.Cells(1, 1)
dl = c.Row - s.Cells(1, 1).Row
dc = c.Column - s.Cells(1, 1).Column
For Each c In s
c.Offset(dl, dc).FormulaLocal = "=" & c.Value
Next c
End Sub

Celle-ci est à mettre dans un module standard. La lancer après sélection de la source.

SmichelS
 Posté le 24/05/2011 à 15:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Le but est de pouvoir établir une colonne plus ou moins complète de note de calculs (sans devoir chaque fois coller la routine proposée) et une colonne plus ou moins contigue qui afficherait les résultats correspondant. De ce fait il y aurait lieu de créer une fonction placée dans les fonctions personalisées (importer des données en VB)

ferrand
 Posté le 25/05/2011 à 00:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

La dernière procédure s'applique à la sélection, elle peut aussi bien être dans un autre classeur...

Dans son état actuel, elle ne prend en compte la cible que sur la même feuille que la source. Elargir son champ d'action consisterait à faire en sorte que la source puisse aussi se situer sur une autre feuille. S'il ne s'agit que de mettre systématiquement le résultat dans la colonne à côté par exemple, on peut le lui faire faire en la simplifiant :

Sub FormulerChaîne()
Dim s As Range, c As Range
Set s = Selection
For Each c In s
c.Offset(0, 1).FormulaLocal = "=" & c.Value
Next c
End Sub

La sélection étant multicellulaire on peut faire la conversion de toutes les "notes de calcul" en une fois.

NB : la procédure (comme toute autre) n'est jamais à coller qu'une seule fois.



Modifié par ferrand le 25/05/2011 00:29
Yaloo
 Posté le 25/05/2011 à 08:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Salut Ferrand, SmichelS,

SmichelS, désolé d'interférer dans votre conversation, mais je voudrais demander quelque chose à Ferrand.

Dans la macro ci-dessus, pourquoi tu mets

Set s = Selection
For Each c In s

Alors que certaines fois, tu mets seulement

s = Selection (tu le mets ou pas)
For Each c In Selection

Bon excuse-moi encore de cette intrusion dans ton post.

A+

ferrand
 Posté le 25/05/2011 à 09:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonne observation . On aurait pu se limiter à : For Each c In Selection...

Par contre, dans la macro précédente (dont celle-ci est issue) il était indispensable d'affecter la sélection à une variable plage car la cible étant ensuite sélectionnées, la sélection n'aurait plus été la même au moment de l'exécution de la boucle.

ferrand
 Posté le 25/05/2011 à 13:05 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Au stade où nous en sommes, récapitulons :

On sélectionne la plage (plage source) dont on veut calculer les résultats des formules saisies sous forme de texte (la sélection peut être multizones).

1) Les résultats sont à afficher dans la cellule de la colonne voisine sur la même ligne :

Sub FormulerChaîneChoixPréfixé()
Dim c As Range
For Each c In Selection
c.Offset(0, 1).FormulaLocal = "=" & c.Value
Next c
End Sub

Pour un positionnement différent de la cible par rapport à la source, il suffit de modifier les valeurs du décalage en ligne et en colonne.

2) On choisit à la demande de la macro la première cellule de la plage cible sur la même feuille :

Voir la première macro donnée le 20/5.

3) On choisit à la demande de la macro le première cellule de la plage cible où l'on veut (on peut donc placer les résultats sur une autre feuille) :

Sub FormulerChaîneChoixGénéral()
Dim s As Range, c As Range, cc As Range, dl%, dc%
Set s = Selection
Set c = Application.InputBox("Sélectionner cellule cible", "Sélection cible", , , , , , 8)
Set c = c.Cells(1, 1)
For Each cc In s
dl = cc.Row - s.Cells(1, 1).Row
dc = cc.Column - s.Cells(1, 1).Column
c.Offset(dl, dc).FormulaLocal = "=" & cc.Value
Next cc
End Sub

SmichelS
 Posté le 25/05/2011 à 14:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Re, Re, Rebonjour...

Je te remercie beaucoup pour l'énergie depensée à mon sujet, j'espère que c'est la dernière fois sur ce sujet. CEPEDANT:

Je ne suis pas informaticien, mais simplement utilisateur de Excel.

COMMENT puis-je introduire la routine dans Excel (fonction Fx) pour pouvoir l'appeler quand j'en ai besoin ?

A titre indicatif, uniquement avec les instructions excel, j'ai réalisé un classeur qui permet de calculer certaines formes et aussi de donner le jour de Paques en fonction d'une année définie.

galopin01
 Posté le 25/05/2011 à 17:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

bonjour,

Tu as donné toi-même la réponse : YAKA la rentrer en fonction personnalisée...

Toutefois YA peut-être une solution encore plus souple : c'est l'appareil photo.

Dans cette démo qui commence à dater un peu... les vues ne sont pas déplaçables car la feuille est protégée mais tu peux jouer sur les propriétés de protection (ou ôter la protection) pour déplacer les vues.

Pas besoin de fonction spéciale : YA juste à rajouter l'appareil photo dans le ruban ou la barre d'accès rapide (car il n'est pas présent dans 2010) et hop tu ramênes toutes les vues que tu veux ou tu veux, tu les déplaces ou tu les supprimes à volonté.

Pour personnaliser la barre d'accès rapide ou le ruban : Options Excel / Personnaliser / Choisir le ruban ou la barre d'accès rapide puis sélectionner l'Appareil Photo dans les Commandes non présentes

A+



Modifié par galopin01 le 25/05/2011 18:04
usularrakis
 Posté le 26/05/2011 à 10:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

salut

je m'immisce / la dernière réponse de Galopin

dans excel 2007 je ne retrouve pas cette commande même en affichant "toutes les commandes" et pourtant j'ai des fichiers céés avec 2000 et utilisant l'appareil photo qui fonctionnent très bien sous 2007

si vous avez une idée du pourquoi...

rj390111
 Posté le 26/05/2011 à 11:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

Dans 2007 ce n'est plus Appareil photo mais Photo tout court.



Modifié par rj390111 le 26/05/2011 11:33
usularrakis
 Posté le 26/05/2011 à 13:01 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

OK

merci rj

SmichelS
 Posté le 27/05/2011 à 11:31 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Re bonjour à tous, je ne suis surement pas doué, mais je n'arrive pas à inclure la routine dans les fonctions.

Pouvez-vous me donner la procédure pas à pas?

Merci.

rj390111
 Posté le 27/05/2011 à 13:01 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

Pour pouvoir utiliser une procédure comme une fonction intégrée d'Excel il faut en faire une fonction, or ici on a des procédures Sub

ferrand va surement réagir et voir si on peut faire des fonctions avec ses procédures.

Salut ferrand et tous les autres

galopin01
 Posté le 27/05/2011 à 13:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Oui bien sur... c'est un lapsus de ma part (induit par la question) : Tu ne peux pas la rentrer en fonction personnalisée puisque c'est une Sub et non une Fonction.

Mais tu peux la rentrer en macro complémentaire, ce qui relève du même mode opératoire.

ferrand
 Posté le 27/05/2011 à 21:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

SmichelS
 Posté le 28/05/2011 à 14:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

J'abandonne.

J'en reviens à mon système à 2 feuilles au moins je sais ce que je fais.

Merci à tous....



Modifié par SmichelS le 29/05/2011 16:40
SmichelS
 Posté le 11/06/2011 à 15:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Re bonjour Ferrand, je reviens sur ce site pour ne pas encombrer EOLE25.

Je m'excuse mais je ne parviens pas à utiliser ta dernière macro (qui est la plus générale). J'explique comment je fais:

En VBA, je colle ta routine en macro perso, module1 est créé.

Sur la feuille Excel, j'encode une formule, j'exécute la macro, je sélectionne la cellule pour le résultat. Je remarque que la note de calcul est reprise dans la cellule cible précédée du signe = (vu dans la barre "formules"). Le résultat est OK.

Mais lorsque je modifie la cellule encodée, la cellule cible n'est pas modifiée. J'ai l'impression qu'il n'y a pas de liaison entre les 2 cellules.

Comme déjà dit, je ne suis pas doué, j'ai besoin de beaucoup d'explications.

A bientôt

ferrand
 Posté le 11/06/2011 à 17:54 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Je parlais de mon post du 7 juin... sur le sujet de Eole25.

C'est là que tu trouveras la macro automatique dont nous avons parlé sur le même sujet.

A plus.

nb: pour agir automatiquement (sur évènement), elle est dans le module de la feuille concernée.



Modifié par ferrand le 11/06/2011 17:55
Publicité
Pages : [1] 2 ... Fin
Page 1 sur 2 [Fin]

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
239 €Trottinette électrique AOVO ES80 / M365 Pro à 239 €
Valable jusqu'au 29 Mai

Geekbuying fait une promotion sur la trottinette électrique AOVO ES80 / M365 Pro qui passe à 239 € avec le code promo NNNGIZAOVO. Un bon rapport qualité / prix pour ce clone de la Xiaomi M365 Pro. On la trouve habituellement à 347 €. Elle offre une autonomie de 30/35 km et une vitesse max de 25 km/h.

La livraison se fait depuis un entrepôt européen. Vous êtes ainsi certains de ne pas avoir de frais de douane et d'être livré rapidement.


> Voir l'offre
57,10 €Boîtier PC Corsair Carbide Series 275R Airflow avec fenêtre à 57,10 €
Valable jusqu'au 28 Mai

Amazon propose actuellement le boîtier PC moyen tour avec fenêtre Corsair Carbide Series 275R à 57,10 €. On le trouve ailleurs à partir de 84 €. Le Corsair 275R Airflow est un boîtier ATX moyen-tour qui allie design moderne et flux d’air maximal grâce à un panneau avant lamellé et à une fenêtre en verre trempé. Trois ventilateurs de 120 mm inclus permettent un refroidissement efficace. Le boîtier peut accueillir jusqu’à six ventilateurs ou plusieurs radiateurs mesurant jusqu’à 360 mm. Installez jusqu’à deux disques durs 3,5” et quatre disques SSD 2,5” tandis que la disposition Direct Airflow Path garantit une circulation de l’air sans obstacle vers vos composants. Une fois l’assemblage terminé, le 275R Airflow vous permet de garder votre système propre et ordonné grâce à l’acheminement intuitif et simple des câbles et aux trois filtres à poussière amovibles.

La livraison est gratuite. 


> Voir l'offre
68,99 €SSD Crucial P5 Plus 500 Go (3D NAND, NVMe, PCIe 4.0, M.2, 6600 Mo/s) à 68,99 €
Valable jusqu'au 28 Mai

Amazon fait une promotion sur le SSD Crucial P5 Plus 500 Go (3D NAND, NVMe, PCIe 4.0, M.2) qui passe à 68,99 € livré gratuitement. On le trouve ailleurs à partir de 100 €. Ce SSD offre des vitesses de lecture/écriture séquentielle allant jusqu’à 6600/ 3 000 Mo/s. Il est garanti 5 ans.

Cette version Plus est compatible PCIe 4.0. Vous pouvez donc aussi l'utiliser avec la console de jeux PS5.


> Voir l'offre

Sujets relatifs
Report résultat formule Excel
Probleme de resultat de formule Excel
résultat de formule sur dates
Résultat conditionnel d'une formule
utiliser résultat formule dans réf. plage cellules
formule-texte en résultat
Excel 2007 résultat formule dans une autre cellule
récupérer résultat sans formule de calcul
formule modifiée dans excel donne pas résultat
Formule pour un résultat
Plus de sujets relatifs à Formule Résultat
 > Tous les forums > Forum Bureautique