Excel calcul sur cellule active

Résolu/Fermé
touroul - 8 mai 2012 à 10:01
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 - 15 mai 2012 à 21:08
Bonjour à tous.

Dans Excel, je souhaite créer une cellule contenant un calcul dépendant de la cellule active.
Je m'explique :
En A3 par exemple, je voudrais afficher le résultat du calcul A1+A2 si je suis dans la cellule A2.
En gros, si je suis en A2, la cellule A3 doit afficher le résultat de =SOMME("cellule active"-DECALE("cellule active"-1 cellule")
Ouf, comme ça, c'est pas gagné ...
Un coup de main SVP? Je mouline ...


A voir également:

17 réponses

ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
8 mai 2012 à 10:33
bonjour

si j'ai bien compris, avec une macro à mettre dans le module de la feuille (modifier la constante plage)

Const plage = "A1:A10"

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range(plage)) Is Nothing Then
  If Target.Row = 1 Then
    Exit Sub
  Else
    Target.Offset(1, 0).Value = Target.Value + Target.Offset(-1, 0)
  End If
End If
End Sub

bonne suite
0
Ouf ! Merci pour ce début de réponse.
C'est le moment pour moi de plonger dans les macros.
J'ai donc créé cette macro (onglet développeur>Macro)
J'ai donné le nom "KM" à cette macro, j'ai recopié ton code.
J'ai fermé pour revenir sur mon tableau.
Puis j'ai cliqué sur "Macros", et KM a disparu ...
D'autre part, à quoi correspond "A1:A10" ?

Merci de donner suite !
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
8 mai 2012 à 11:03
re

1. il faudrait d'abord voir si j'ai bien compris ta question, la sélection d'une cellule de la plage provoque l'addition de la cellule active et de celle qui est au dessus et met le résultat dans la cellule en dessous (de la cellule active)
https://www.cjoint.com/?0Eik5r6oIYo

2. si oui
2.1. la macro doit être copiée telle que dans le module de la feuille où elle doit s'appliquer (clic-droit sur l'onglet/visualiser le code)
2.2. la macro s'appliquera ici, uniquement sur la plage "A1:A10", à toi de modifier cette plage selon tes besoins

bonne suite
0
D'accord d'accord ...
Merci ccm81

Pour plus de simplicité, je joins une partie de mon fichier :

http://cjoint.com/?BEilr5NJzAT

Lorsque je clique sur E3, je voudrais qu'en A1 s'affiche le résultat du calcul E3-C3
Lorsque je clique sur E4, je voudrais qu'en A1 s'affiche le résultat du calcul E4-C4

Voilà plus concrètement le résultat à obtenir.
C'est certainement plus simple avec un exemple
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 8/05/2012 à 11:31
re

1. je ne peux pas lire ton fichier, si tu dois l'envoyer, mets le au format excel 2003
2. ta demande n'est plus tout à fait la même !
3. le code est encore plus simple (appliqué à la plage E1:E10)

Const plage = "E1:E10" 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
If Not Intersect(Target, Range(plage)) Is Nothing Then 
  Range("A1").Value = Target.Value - Target.Offset(0, -2) 
End If 
End Sub


bonne suite
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
8 mai 2012 à 12:06
Bonjour tout le monde,

pourquoi tout cela en vba pour la question 1 ?
=SOMME($A$1:A2)
à recopier vers le bas ne suffit pas ?

eric
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
8 mai 2012 à 12:15
bonjour eric

apparemment, #4, touroul veut le résultat de sa soustraction en A1 quelle que soit la cellule cliquée en colonne E

bon appétit
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 8/05/2012 à 13:23
je parlais de la 1ère question, qcq chose m'échappe mais pas grave...
0
Me revoilou, désolé j'étais parti baquer mes filles ...
Effectivement, c'est bien le fait d'introduire la variabilité de la cellule active qui rend le problème complexe.
Voici mon fichier simplifié en version Excel 2003 :
http://cjoint.com/?BEimv4vhxJb
C'est vrai, j'avais bêtement rendu le problème plus compliqué qu'il ne l'est en réalité !

Bon, je bute sur un problème simple :
Je ne sais pas enregistrer une macro :
J'ai affiché l'onglet Développeur, je clique sur Macros, je nomme en "KM", je modifie son contenu avec le code fourni, j'enregistre le fichier, je ferme VBA, et une fois dans ma feuille, ma macro est introuvable.
OK, j'ai des progrès à faire, mais là je déprime.
J'aimerais pouvoir créer Victoire (surtout un 8 mai ...)
Help !
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 8/05/2012 à 13:14
re

1. tu n'as pas bien lu mon post 3 (2.1.) à propos du module de feuille
2. ton fichier mise à jour (clic-droit sur l'onglet de la feuille/visualiser le code et modifier la plage)
https://www.cjoint.com/?0EinbojDpjD
3. on peut aussi nommer la plage E3:Exx de façon dynamique pour éviter d'avoir à modifier la constante (un ajour de ligne est pris en compte automatiquement)
https://www.cjoint.com/?0EinlHEvwXK
4. pas de quoi déprimer
5. bon courage pour la "création" de la Victoire

bonne suite
0
OUAOUHHH ! Ca fonctionne !
J'ai choisi le second code.
Il me reste à l'adapter à ma feuille.
J'y travaille et vous fait un reply ce soir.
Je n'ai pas grand chose à vous apporter en retour de votre aide, si ce n'est ma gratitude pour ce coup de main gratuit et désintéressé.
Je promets de dire où j'en suis.
Vous ne pouvez pas vous imaginer ce que m'apporte le plaisir de progresser dans Excel.
0
Bon, je viens d'y passer 2 heures, sans succès.
J'ai eu la naïveté de penser qu'en proposant un tableau simplifié, je parviendrais à adapter le code au tableau d'origine ... erreur !
Je ne m'en sors pas.
Cette fois, je joins le fichier complet, avec quelques explications sur le but à atteindre :
Version Excel 2003 : http://cjoint.com/?BEiqDs5VXNR
Version Excel 2010 avec macros : http://cjoint.com/?BEiqEQMVVFj

Donc voici le but précis de la manip, qui devrait me simplifier la vie.
Première chose : je ne souhaite pas alourdir mon tableau avec trois colonnes contenant le calcul précité, sachant que je manuscrits dessus lorsque je suis en voiture. C'est la raison de la présence en A1 de ce calcul "flottant" :
- Au clic sur une cellule de la colonne F3 à F5000, afficher en A1 le calcul F3-C3 (F4-C4, etc ...)
- Au clic sur une cellule de la colonne L3 à L5000, afficher en A1 le calcul L3-F3 (L4-F4, etc ...)
- Au clic sur une cellule de la colonne P3 à P5000, afficher en A1 le calcul P3-L3 (P4-L4, etc ...).

Voilà !
Si ce bout de code n'est pas trop difficile à écrire, voici de quoi vous casser la tête ! D'avance un grand merci.

Ma config : Windows 7 64bits, Excel 2010.
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 8/05/2012 à 18:18
re

le code est du même type pour chacune des 3 plages concernées

V1. avec des plages fixes (lignes 3 ou 5 à 5000 - un clic après la dernière cellule remplie produit 0)
https://www.cjoint.com/?0EirWQyvEmh

V2. avec des plages dynamiques (un clic après la dernière cellule remplie ne produit rien)
https://www.cjoint.com/?0EiseeSABUg

Reste bien sûr à contrôler ....

bonne suite
0
Formidable, c'est à peu de choses près le résultat à obtenir ! Un grand merci à vous. Deux remarques cependant :

1- Le calcul ne fonctionne pas en colonne P s'il n'y a pas de deuxième étape, c'est-à-dire si la colonne L est vide.
Peut-on ajouter une condition pour demander, en colonne P, de calculer Px-Fx si Lx est vide ?

2- Dans la V2, lorsque je sélectionne une colonne contenant des Km (F,L,P), j'obtiens le message d'erreur suivant :
-------------
Erreur d'exécution '13'
Incompatibilité de type
-------------
Peut-être est-ce parce que le code n'est pas défini jusqu'à la dernière cellule de la colonne ? (celle de la ligne 1 048 576)

Promis après cela, je cesse de vous demander de l'aide, vous en avez déjà fait beaucoup !
Voici la nouvelle version du fichier : http://cjoint.com/?BEitmnI9dg6
Marc
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 8/05/2012 à 19:31
comme ça ?

https://www.cjoint.com/?0EitxXA7kDr

RQ. j'ai vu que tu as mis toutes les lignes de début à 5, c'est bien ce que tu veux?

bon appétit
0
Cher CCM81

Bon appétit à toi aussi, chez nous c'est traiteur chinois, mmmmh !
Si les calculs commencent à la ligne 5 cela n'a aucune importance (ce sont mes débuts à ce poste ...)

Bonne nouvelle : il n'y a plus aucun problème, c'est ce que je visais à 100%

Je ne peux que remercier et m'incliner devant le talent !

Si je peux te rendre service à mon tour (HTML, Windows, recherche d'emploi en biologie, ...) n'hésite pas.

A bientôt ! Je ferai un dernier reply après quelques jours d'utilisation.

Bonne soirée
Marc
0
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
15 mai 2012 à 19:31
J'ai encore une doléance ...
Dans le fichier : https://www.cjoint.com/?BEptCHJTkdi
en cas d'absence de donnée en colonnes F et L, peux-tu mettre en place en A1 le calcul : (Px-Cx)/2 ?
Merci d'avance !

Marc
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
15 mai 2012 à 21:03
voila ... en principe
https://www.cjoint.com/?0Epvct9XRIx

bonne soirée
0
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
15 mai 2012 à 21:08
Une fois de plus, c'est parfait.

Service rapide en plus.

Bonne soirée à toi, moi je vais lâcher mes 3 PC qui me bouffent mon temps et aller regarder un film ...

Bonne soirée à toi et aux tiens et encore merci.

Marc
0