Fonction: programmer division de cellules

Fermé
matthieumagl - 27 mai 2011 à 10:22
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 30 mai 2011 à 10:50
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.







A voir également:

4 réponses

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
0
matthieumagl
27 mai 2011 à 11:06
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
Raymond PENTIER Messages postés 58439 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 17 mai 2024 17 111
30 mai 2011 à 04:14
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
30 mai 2011 à 10:50
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