Fonction: programmer division de cellules

matthieumagl -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. Melycea
     
    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
  2. Melycea
     
    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
    0
    1. matthieumagl
       
      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.
      0
  3. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    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) ...
    0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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"

    0