Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Non ce n'est pas la colonne B qui est vide mais la colonne J

Si ma colonne J (Cpte de charge) correspondà une cellule vide alors je récupère la valeur se trouvant en colonne B la base
 
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:
 
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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…