Fonction: programmer division de cellules

Bonjour,

je souhaite mettre en place une fonction excel de ce type:

D6 = D5/C5

mais je voudrais l'appliquer a toute cellule : des que je rentre la fonction dans une cellule X ij, excel divise la cellule "au dessus (Xij-1) par celle en haut a gauche (Xi-1j-1)"

comment faire?

merci d'avance.

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. Donc ce que je t'avais répondu est une macro que tu dois copier dans toutes les feuilles où tu as cette division à faire. Elle se déclenchera à chaque fois qu'un valeur de la zone (que tu auras définie) sera modifiée.
    Je te rajoute quelques commentaires pour que tu comprennes mieux

    Sub Worksheet_Change(ByVal Target As Range)  
    ' Target représente la cellule où se fera le calcul
    
    If Not Intersect(Target, Range("D2:D10")) Is Nothing Then 
    ' si cette cellule se trouve dans la zone D2:D10 ( à redéfinir en fonction de ton fichier) 
      Col = Target.Column   'numero de la colonne de cette cellule
      Lig = Target.Row  'numero de la ligne de cete cellule
      Target.Value = Cells(Lig - 1, Col).Value / Cells(Lig - 1, Col - 1).Value 
      ' ta cellule = à celle du dessus / celle au dessus à gauche 
    End If  
    
    End Sub


    Après, si tu veux absoluement passer par une formule, tu peux taper
    =D5/C5
    dans ta cellule D6 puis incrémenter cette formule sur la colonne.
    1. J'ai pas tout compris ce que tu voulais mais ça pourra t'aider à commencer :

      Sub Worksheet_Change(ByVal Target As Range)  
      
      If Not Intersect(Target, Range("D2:D10")) Is Nothing Then  
        Col = Target.Column  
        Lig = Target.Row  
        Target.Value = Cells(Lig - 1, Col).Value / Cells(Lig - 1, Col - 1).Value  
      End If  
      
      End Sub
      1. je ne comprends pas tres bien ce que tu viens de m'envoyer.

        Pour t'expliquer mon probleme simplement
        1/j'ai des feuilles excel avec plein de donnees
        2/ je dois faire de nombreuses operations avec ces donnees
        3/ et une fonction qui permetterait d'etre plus rapide serait de m'afficher dans une cellule le resultat de la cellule du dessus diviser par la cellule en haut a gauche.
        Par exemple, en D6, je voudrais avoir le resultat de D5/C5.
    2. Contributeur
      Bonjour matthieumagl.

      "1/j'ai des feuilles excel avec plein de donnees
      2/ je dois faire de nombreuses operations avec ces donnees
      "

      Il faudrait au moins savoir où sont les cellules avec des données et celles où il faut mettre de formules, non ?
      Sinon une procédure consiste simplement à donner un nom à ta formule !
      Tu procèdes comme pour définir un nom de plage, mais en te plaçant dans la cellule contenant la formule =D5/C5
      Il me faudra tester sur Excel 2007, car je constate que ça ne fonctionne pas sous Excel 2011 (Mac) ...
      1. Contributeur
        Bonjour

        une fonction personnalisée comme tu sembles le demander

        Function diviser_sp(cellule As Range) As Double
        Application.Volatile
        With cellule
             diviser_sp = .Offset(-1, 0) / .Offset(-1, -1)
        End With
        End Function


        si le dénominateur = 0 ou rien la fonction retourne "#VALEUR"