Fonction VBA pour une opération selon plusieur critères

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 !

Merlin258413

XLDnaute Occasionnel
Bonjour à tous
N'étant pas très doué avec les fonctions vba. Je désire créer une fonction qui permet de calculer une différence selon plusieurs critères (ci-joint mon fichier Excel)
Je désire que dans ma colonne K Mt Charge,
Si j'ai en colonne J, 645100 ou 645300,645400,645800,633300,ou 633500 il réalise Colonne E - Colonne D
Si j'obtiens un vide alors il prend la cellulle en B
Sinon pour tous les autres cas il réalise E -D
En vous remerciant à tous pour votre aide
Bonne journée
 

Pièces jointes

Re : Fonction VBA pour une opération selon plusieur critères

Bonjour Merlin258413 et bienvenue à toi,

Je ne sais pas trop pourquoi tu évoques les fonctions VBA ... si on peut faire avec les fonctions "standard" 😕

D'autre part, il faudrait que tu précises l'un ou l'autre aspect:
- la formule que tu as utilisée en K2 n'a pas grand chose en commun avec les explications que tu donnes dans ton message ... de quoi faut-il tenir compte?
- quand tu écris "Si j'obtiens un vide alors il prend la cellulle en B" ... que veut dire "Si j'obtiens un vide"?
 
Re : Fonction VBA pour une opération selon plusieur critères

Bonjour.
C'est vrai, je me suis aussi posé ces questions. J'ai l'impression que d'un coté des cas ça devrait être D - E et non E - D.
Mais comme il à mis E - D des deux cotés:
VB:
Function EMoinsD(ByVal E, ByVal D, ByVal J, ByVal B) As Variant
Dim N As Long
On Error Resume Next
EMoinsD = E - D
If Err = 0 Then Exit Function
For N = 0 To 5
   If J = Array(645100, 645300, 645400, 645800, 633300, 633500)(N) Then Exit Function
   Next N
EMoinsD = B
End Function
Code:
=EMoinsD($E2;$D2;$J2;$B2)
 
Re : Fonction VBA pour une opération selon plusieur critères

Merci pour Vos reponses
QUand je dis un vide je faire référence à la colonne intituté base (colonne B) c'est à dire si je n'ai rien (la cellule est vide je prend la valeur se trouvant en base)
Concernant les fonctions standard je ne voyais pas trop comment m'y prendre.
 
Re : Fonction VBA pour une opération selon plusieur critères

Bonjour, je suis tellement nul que je n'arrive même à lancer cette fonction sur mon fichier excel.
J'ai peut être pas été trop clair dans mes explications désolé.
Si ma colonne J (Cpte de charge) correspond soit à 645100,645300,645400,645800,633300,ou 633500 alors je réalise l'opération
Montant à retenir (col E) - Montant à Payer (col D)
Si ma colonne J (Cpte de charge) correspond soit une cellule vide alors je récupère la valeur se trouvant en colonne B la base

Pour toutes les autres valeurs je réalise l'opération suivant Montant à payer (col D) - Montant à retenir (col E)
Encore merci pour toute votre aide

De plus je ne sais pas à quoi correspond dans votre encadré "=EMoinsD($E2;$D2;$J2;$B2)"

Encore désolé pour ce manque de connaissance
 
Re : Fonction VBA pour une opération selon plusieur critères

De plus je ne sais pas à quoi correspond dans votre encadré "=EMoinsD($E2;$D2;$J2;$B2)"
Ben… que voulez vous que ce soit d'autre que la formule permettant d'utiliser la fonction personnalisée dans une cellule de la ligne 2 ?
L'énoncé a complètement changé, alors lequel est le bon en fin de compte ?
 
Dernière édition:
Re : Fonction VBA pour une opération selon plusieur critères

Selon le dernier énoncé :
VB:
Function EMoinsD(ByVal E, ByVal D, ByVal J, ByVal B) As Variant
Dim N As Long
If J = "" Then EMoinsD = B: Exit Function
For N = 0 To 5
   If J = Array(645100, 645300, 645400, 645800, 633300, 633500)(N) Then EMoinsD = E - D: Exit Function
   Next N
EMoinsD = D - E
End Function

Tout compte fait l'énoncé n'a pas complètement changé, sous-endendu en rouge:
Si j'ai en colonne J, 645100 ou 645300,645400,645800,633300,ou 633500 il réalise Colonne E - Colonne D
Si j'obtiens un vide , toujours encore en J et non dans ce résultat, alors il prend la cellulle en B
Sinon pour tous les autres cas il réalise E -D mais de signe contraire
 
Dernière édition:
Re : Fonction VBA pour une opération selon plusieur critères

Bonjour Modeste.
Je n'ai pas regardé ta solution, mais c'est vrai que je n'estimai la complexité qu'à 25% du seuil où j'aurais décidé d'écrire une fonction personnalisée
 
- 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

Discussions similaires

Réponses
5
Affichages
749
A
Réponses
1
Affichages
1 K
A
C
Réponses
3
Affichages
2 K
claivier_58
C
M
Réponses
2
Affichages
1 K
Marcelo Brazzer
M
B
Réponses
26
Affichages
3 K
Retour