Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Multiplier Diviser plusieurs nombres avec fonctions personnalisées
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Re : Multiplier Diviser plusieurs nombres avec fonctions personnalisées
Bonjour loup solitaire
Pourquoi ne pas regrouper en une seule fonction avec paramètres ?
VB:
Function operation(Otype$, Plage As Variant, valeur As Double)
With Application
.Volatile
Select Case Otype
Case Is = "A"
operation = .Sum(Plage) + valeur
Case Is = "S"
operation = .Sum(Plage) - valeur
Case Is = "M"
operation = .Sum(Plage) * valeur
Case Is = "D"
operation = .Sum(Plage) / valeur
Case Else
End
End Select
End With
End Function
VB:
Sub Test()
[A1:A3] = 12
MsgBox operation("A", Range("A1:A3"), 3)
MsgBox operation("S", Range("A1:A3"), 4)
MsgBox operation("M", Range("A1:A3"), 5)
MsgBox operation("D", Range("A1:A3"), 6)
End Sub
Re : Multiplier Diviser plusieurs nombres avec fonctions personnalisées
Voilà, je viens de faire un test avec ce code
Code:
Option Explicit
Function DIVISION(valeur As Variant, Plage As Variant)
Dim Ligne As Long
Application.Volatile
Ligne = [G2] \ [G3] \ [G4] \ [G5]
Plage = Ligne
On Error Resume Next
DIVISION = Application.Sum(Ligne)
End Function
Et j'obtient la somme correcte. Maintenant, il faudrait pouvoir concenter les celulles sur une plage plus grande. Comment faire?
Re : Multiplier Diviser plusieurs nombres avec fonctions personnalisées
Bonjour Lone-wolf, salut Jean-Marie 🙂
On a du mal a sortir de ses schémas de pensée, pas vrai ?
Pourtant la suggestion de Staple d'utiliser une seule fonction est excellente !
Alors une autre du même genre qui va vous obliger à percuter un chouilla :
Code:
Function Operation(Otype$, Plage, valeur#)
Dim aux$, i As Byte
aux = "A+S-M*D/"
i = InStr(aux, UCase(Left(Otype, 1)))
Operation = Evaluate(Application.Sum(Plage) & Mid(aux, i + 1, 1) & valeur)
If IsError(Operation) Then Operation = "" 'facultatif
End Function
Votre fichier avec la fonction dans les cellules colorées.
Re : Multiplier Diviser plusieurs nombres avec fonctions personnalisées
Re,
Relisant le post #10 je crois comprendre ceci :
- vous voulez insérer le même opérateur entre les éléments de la plage
- donc dans la fonction l'argument valeur n'a plus lieu d'être.
Là je reconnais que le code n'est pas très facile à comprendre :
Code:
Function Operation(Otype$, Plage)
Dim aux$, i As Byte, operateur$
Plage = Plage
If UBound(Plage) > 1 Then Plage = Application.Transpose(Plage)
aux = "A+S-M*D/"
i = InStr(aux, UCase(Left(Otype, 1)))
operateur = Mid(aux, i + 1, 1)
Operation = Evaluate(Join(Plage, operateur))
If IsError(Operation) Then Operation = "" 'facultatif
End Function
Voir l'aide VBA pour la fonction Join.
Elle doit s'appliquer sur un tableau à une dimension (une ligne).
Fichier (2).
Nota : il y avait plein de formats personnalisés dans votre fichier... Je les ai virés.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD