Fonction: programmer division de cellules
matthieumagl
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
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.
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
-
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. -
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-
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.
-
-
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) ...
-
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"