Fonction Excel

Résolu
gabigabou Messages postés 16 Statut Membre -  
gabigabou Messages postés 16 Statut Membre -
Bonjour,
J'ai besoin d'effectuer un travail sur Excel, et il y'a un point que je n'arrive pas a résoudre.
En fait, j'aimerais afficher le résultat d'un produit de deux cases (ex: A1*B1) dans une troisième case (ex:C1), mais uniquement lorsque je clique simplement dans une quatrième case (ex:D1)
Il me semble que visual basic permet de faire ca, mais je ne sais pas du tout ce que c'est.
Merci d'avance pour votre aide.
+
A voir également:

18 réponses

konkombre Messages postés 1386 Statut Membre 468
 
Bonjour, tu peux le faire en créant un bouton et en lui affectant une macro qui affiche ce que tu demandes.
0
gabigabou Messages postés 16 Statut Membre 3
 
Quand tu dis un bouton, c'est ceux du type formulaire qui se superposent a la case???
De plus, je ne sais pas coment créer un macro, je débute dans excel...
0
konkombre Messages postés 1386 Statut Membre 468
 
Oui c'est ça. Pour les macros, pour commencer tu peux essayer d'enregistrer une macro en faisant outils->macro->nouvelle macro et tu effectues les actions que tu veux retrouver par la suite. A la fin tu arretes l'enregistrement et tu crées un bouton auquel tu affecte ta macro.
0
gabigabou Messages postés 16 Statut Membre 3
 
Le probleme, c'est que si je suis ton idée, je dois fabriquer une cinquantaine de boutons, les redimentionner, etc.
Je sais qu'il existe un truc pour transformer la case en bouton, et non pas ajouter un bouton par dessus la case.
0

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

Posez votre question
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour,

Sans faire de macro tu peux mettre dans C1:
=SI(D1="x";A1*B1;"") et recopier vers le bas.
Lorsque tu saisis x dans D1 le produit A1*B1 apparait dans C1

Si ça peut te convenir...
eric
0
néné
 
Bonjour,
voici la macro évémentiel

en cliquant sur le bouton droit de ta souris

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
[c1] = [a1] * [b1]
End Sub
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 448
 
Bonjour
A toutes fins utiles pour créer 50 boutons bien migons sans trop de peine
réserver un champ au nombre de lignes suffisant et sur deux colonnes (ou inverser colonne et ligne selon vos besoins).
Dimensionner les cellules de la colonne(disons de droite) qui recevra les boutons à la dimension que vous souhaitez pour ceux ci
Barre d'outil /Outil clic droit / Formulaire
Dans la boite qui apparait,sél.le bouton
Sél. votre1° cellule et dessinez le bouton en maintenant la touche Alt appuyée. Le bouton pend la dimension de la cellule
Vous pouvez dans le bouton suppimer le texte et mettre le titre de votre macro dans la cellule d'a cotè, c'est plus facile à remplir
Sélectionnez en même temps la cellule de gauche et celle de droite comportant le bouton
Prenez la poignée à droite
Tirez vers la bas
C'est magique, mais arrètez vous à 50!!
Si vous voulez espacer les boutons, prenez 4 cellules , voire plus,au lieu de 2 avant de les recopier
Pour compléter
Sélectionner le bouton / Clic droit / Affecter une macro / Choisir dans la boite / OK
Nota:Vous pouvez faire l'intégralité de cette manoeuvre avec n'importe quelle forme automatique que vous trouverez dans Outil _clic droit/ dessin. Les Macros titrées réalisées avec l'enregistreur s'affectent aussi bien à celles ci qu'au bouton.ce qui revient, physiquement avec un rectangle , à affecter une macro à une cellule.Sachant que le rectangle dessiné peut être transparent, vous pouvez mettre le titre dans la même cellule...ou sur celle où vous voulez obtenir le résultat.

BCRDLMNT
0
néné
 
ou aussi

une autre macro évémentiel

en cliquant sur le bouton droit de ta souris et en étant placé sur la cellule de droite par rapport a la somme

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
A = ActiveCell.Offset(0, -3).Value
B = ActiveCell.Offset(0, -2).Value

ActiveCell.Offset(0, -1).Value = A * B
End Sub
0
gabigabou Messages postés 16 Statut Membre 3
 
Merci a tous pour vos reponses, je viens de rentrer des cours.
J'aimerais bien essayer le 1ere macro evenementielle, mais en fait je ne me rappelle plus comment on fait les formulaires dans excel 2007, si qqn pouvait m'éclairer, ca serait simpa.
0
néné
 
Bonjour,
il n'y a pas de formulaire a faire

il suffit de faire un clic droit sur l'onglet de ta feuille puis "visualiser le code"

sélectionne "Worksheets" a la place de "général" et copie le code

Utilsfr
http://utilsfr.new.fr
Applications, Utilitaires, Macros, Fonctions, Formulaires, Graphiques Excel
0
gabigabou Messages postés 16 Statut Membre 3
 
Dsolé, mais je n'ai pas compris ton explication, de quel code parles-tu?
0
néné
 
celui ci

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
[c1] = [a1] * [b1]
End Sub

ou

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
A = ActiveCell.Offset(0, -3).Value
B = ActiveCell.Offset(0, -2).Value

ActiveCell.Offset(0, -1).Value = A * B
End Sub
0
gabigabou Messages postés 16 Statut Membre 3
 
Re, ta formule arche nikel, mais le probleme, c'est que je voudrais faire ca avec un clik gauche, et avec plusieurs foi ce types de calcul.
De plus, je ne voudrais pas faire cette opération en cliquant dans nimporte quelle case, mais dans une case bien précise.
Je suis peut-être un peu exigeant, mais je suis sur que c'est possible.
Merci quand même pour votre aide, et je reste a dispo pour de nouveaux conseils ;)
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonsoir,

Voici une macro qui réagit lorsqu'on sélectionne une cellule (clic gauche).
Change [C1:C10] pour la plage qui t'interesse.
Le résultat s'inscrit dans la cellule cliquée mais ça peut se modifier avec .offset()

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, [C1:C10]) Is Nothing Then Exit Sub 
    Target.Value = Target.Offset(0, -2).Value * Target.Offset(0, -1).Value
End Sub


eric
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Une petite modif pour que la macro ne réagisse que sur sélection d'une seule cellule.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, [C1:C10]) Is Nothing Then Exit Sub
    If Target.Cells.Count > 1 Then Exit Sub
    Target.Value = Target.Offset(0, -2).Value * Target.Offset(0, -1).Value
End Sub
0
gabigabou Messages postés 16 Statut Membre 3
 
Merci a tous pour vos conseils, mais en fin de compte, j'ai un prof qui a bien voulu me le faire.
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour,
n'oublie pas de mettre en résolu stp
merci
eric
0
gabigabou Messages postés 16 Statut Membre 3
 
Ok, dsl, javais pas pensé a ca ++
0