Problème de transition en VBA

  • Initiateur de la discussion Initiateur de la discussion baptbapt
  • Date de début Date de début

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 !

baptbapt

XLDnaute Occasionnel
Bonjour

J'ai un petit problème de passage de mes formules excel en VBA

=SI(AE5>0;AB5+M4;M5)

Function ValeurMax(AE,M,AB)
If AE5 > 0 Then
ValeurMax = AB5 + M4
Else
ValeurMax = M5
End Function

J'ai des données en 5 et d'autre en 4, et le décalage se fait sur toute ma colonne.
Comment ecrire la fonction exacte en VBA

Merci
 
Dernière édition:
Re : Problème de transition en VBA

sous reserve d'avoir compris !!

Code:
Function ValeurMax(AE As Range, M As Range)
If AE.Value > 0 Then
ValeurMax = Range("AB" & AE.Row) + M.Value
Else
ValeurMax = M.Offset(-1, 0)
End If
End Function

si probleme ne pas hesiter à revenir
 
Re : Problème de transition en VBA

Salut baptbapt

je ne comprends pas ta question
tu veux adapter une formule Excel en Vba
tu veux dans une colonne EB coller le resultat du test ,si en colonne EA la valeur est supérieure à 0 alors on met dans la somme de AB et M sinon on met la valeur de M c'est ca Lol

si oui tu peux comme tu la fais créer une fonction et ensuite l'incrémenter dans ta colonne EB
sinon tu fais une boucle en colonne EA et tu colles le résultat en colonne EB exemple
For L= 1 to 100
If Cells(L,131)>0 then '131 colonne EA
Cells(L,132)=Cells(L,28)+Cells(L-1,13) '28 colonne AB et 13 colonne M
else
Cells(L,132)=Cells(L,13)
End if
Next
non testé
tiens nous au courant
New Edition Salut pierrejean ,Jam (effectivement Lol)
 
Dernière édition:
Re : Problème de transition en VBA

Salut Pierrejean, baptbapt,

Je rajouterai volontier un petit
Code:
Application.Volatile
afin de recalculer automatiquement la formule en cas de modification des données des cellules.

Enfin, je mettrais aussi un petit
Code:
On error Resume Next
afin d'éviter des blocages liés à des erreurs dans la gestions des valeurs transmises dans la fonction. Bien sur il est souhaitable de gérer un peu mieux les erreurs mais dans un premier temps cela peut être souhaitable.

Bon courage,
 
Re : Problème de transition en VBA

sa marche pas

Ne manque t-il des données dans la déclaration des variables?
pourquoi End if?

=SI(AE5>0;AB5+M4;M5)

Function ValeurMax(AE,M,AB)
If AE5 > 0 Then
ValeurMax = AB5 + M4
Else
ValeurMax = M5
End Function


Function ValeurMax(AE As Range, M As Range,.....)
If AE.Value > 0 Then
ValeurMax = Range("AB" & AE.Row) + M.Value "comprend pas, sa devrais pas etre AB value"
Else
ValeurMax = M.Offset(-1, 0)
End If "pourquoi"
End Function
 
Re : Problème de transition en VBA

re baptbapt
le fil
je pense que dans ton cas tu n'as pas besoin de passer l'ensemble des données dans ta fonction seule la cellule testée et necessaire
en C2 tu colles la fonction =ValeurMax(A2)
Function ValeurMax(I As Range) 'I représente la cellule testée ex A2
Application.Volatile ' Jam
On Error GoTo suite ' Jam
If I > 0 Then 'si la valeur de A2 est supérieure à 0
ValeurMax = I.Offset(0, 1) + I.Offset(-1, 2) ValeurMax = la somme de la cellule B2 I.Offset(0,1) et La Cellule C2 I.Offset(0,2)
Else
suite:
ValeurMax = I.Offset(0, 2) 'si non C2
End If
On Error GoTo 0
Err.Clear
End Function
pour ce qui et du End if il clos la condition If (If I > 0) If condition Then procédure si condition remplie Else procédure si condition non remplie End If fin condition(Voir aide)
j'ai reproduit la macro avec les colonnes A,B,C donc à adapter
tiens nous au courant
 
Dernière édition:
Re : Problème de transition en VBA

sa colle pas, du moins pas l'impression

___R_AE_AB_M
4___________0
5__0__0__0__0
6__1__0__1__1
7__2__0__1__2
8__3__0__1__3
9__4__0__1__4
10_5__0__1__5
11_7__0__2__7
12_9__0__2__9
13_9__0__0__9

la première colonne, c'est le numéro de mes lignes, ensuite les colonnes de données.

AE n'est pas toujours égales a 0 dans le reste de la page.
M4 est une constante

=SI(AE5>0;AB5+M4;M5)
=SI(AE6>0;AB6+M5;M6)
=SI(AE7>0;AB7+M6;M7)
....

Voila le système de base
Faut-il ecrire le système comme une macro
sub...end sub
 
Dernière édition:
Re : Problème de transition en VBA

re

voila la même fonction testée

Code:
Function ValeurMax(AE As Range)
If AE.Value > 0 Then
ValeurMax = Range("AB" & AE.Row).Value + Range("M" & AE.Row).Offset(-1, 0).Value
Else
ValeurMax = Range("M" & AE.Row)
End If
End Function

qui se definit comme:

si la valeur de la cellule nommée en argument est superieure à 0
alors la fonction vaut

la somme de (la valeur de la cellule de la colonne AB située sur la même ligne que la cellule argument ) et (la valeur de la cellule de la colonne M située sur la ligne precedant celle de la cellule en argument)
sinon la fonction vaut

la valeur de la cellule de la colonne M située sur la même ligne que la cellule argument

si ce texte ne convient pas
on pourra modifier en fonction d'un nouveau texte

ensuite si necessaire on pourra envisager de traiter les erreurs eventuelles
 
Re : Problème de transition en VBA

Je comprend pas, je vien de recopier ta fonction sur VBA, mais quand je met la fonction dans ma cellule sous excel, sa ne me donne aucune valeur
#valeur!
j'ai tapé
=ValeurMax(AE)
je me suis peut-etre trompé.

De plus les fonctions, on a pas besoin de les lancer comme des macros, pas besoin de mettre lecture et d'avoir enregistré la macro
 
Re : Problème de transition en VBA

=SI(R6>M6;SI(K6>0;1+M5;M5);M6)

Function NbMax(R As Range)
If R.Value > M.Value Then
If K.Value > 0 Then
NbMax = Range("M" & R.Row).Offset(-1, 0).Value + 1
Else
NbMax = Range("M" & R.Row).Offset(-1, 0).Value
End If
Else
NbMax = Range("M" & AE.Row).Value
End If
End Function


Sa devrais etre sa, si j'ai bien compris, mais pour cette fonction sa ne marche pas, l'autre c'est bon, mais pas celle si.
 
- 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
915
Réponses
2
Affichages
411
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
590
Retour