Fonction Excel

Résolu
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.
+
Configuration: Windows Vista
Firefox 2.0.0.9

18 réponses

  1. Ok, dsl, javais pas pensé a ca ++
    0
    1. Contributeur
      Bonjour,
      n'oublie pas de mettre en résolu stp
      merci
      eric
      0
      1. Merci a tous pour vos conseils, mais en fin de compte, j'ai un prof qui a bien voulu me le faire.
        0
        1. Contributeur
          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
          1. Contributeur
            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
            1. 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
              1. 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
                1. Dsolé, mais je n'ai pas compris ton explication, de quel code parles-tu?
                  0
                  1. 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
                    1. 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
                      1. 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
                        1. Contributeur
                          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
                          1. 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
                            1. Contributeur
                              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
                              1. 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
                                1. 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
                                  1. 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
                                    1. Bonjour, tu peux le faire en créant un bouton et en lui affectant une macro qui affiche ce que tu demandes.
                                      0