Formule - macro

Résolu
tchulio Messages postés 174 Statut Membre -  
tchulio Messages postés 174 Statut Membre -
Bonjour,

Dans la colonne N de ma feuille1 que j’ai nommée Produits j’ai cette formule,

=SI(NB.VIDE(I2)=1;"";SI(I2/G2<0.97;"NCR";"OK"))

J’aurais voulu savoir si c’était possible de mettre cette formule dans une macro ?
Et quel serait le code a mettre si tel est le cas ?

Merci de votre aide…
A voir également:

35 réponses

lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Pas de problème
Tu ajoute cette petite sub
Sub ResultatPartiel(lig As Long)
    If Cells(lig, 7) And Cells(lig, 9) Then
        If (Cells(lig, 9) / Cells(lig, 7)) < 0.97 Then
            Cells(lig, 14) = "NCR"
        Else
            Cells(lig, 14) = "OK"
        End If
    Else
        Cells(lig, 14) = ""
    End If
End Sub


et après End With tu met
    ResultatPartiel Ligne

A+
0
tchulio Messages postés 174 Statut Membre 1
 
je l'ajoute dans un module ou dans mon userform?
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Tu peu mettre en dessous de l'autre macro, mais faut ajouter une ligne
    Sheets("Produits").select

juste au début.
A+
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
ou bien...
With Sheets("produits") 
    .Cells(ligne, 9) = TextBox1.Value
    .Cells(ligne, 12) = TextBox_visa.Value
    .Cells(ligne, 10) = CheckBox1.Value
    .Cells(ligne, 13) = Textbox2.Value
    .Cells(ligne, 21) = TextBox3.Value
    .Cells(ligne, 19) = TextBox5.Value
    .Cells(ligne, 20) = TextBox7.Value
    .Cells(ligne, 18) = TextBox9.Value
    .Cells(ligne, 17) = TextBox10.Value
    .Cells(ligne, 11) = CDate(TextBox11.Value)
    .Cells(ligne, 22) = ComboBox2
    .Cells(ligne, 24) = Format(Now, "DD/MM/YY HH:MM:SS")
    .Cells(ligne, 23) = Application.UserName
    .Cells(ligne, 25) = TextBox12.Value
    .Cells(ligne, 8) = ""

   If .Cells(ligne, 7) And .Cells(ligne, 9) Then
        If (.Cells(ligne, 9) / .Cells(ligne, 7)) < 0.97 Then
            .Cells(ligne, 14) = "NCR"
        Else
            .Cells(ligne, 14) = "OK"
        End If
    Else
        .Cells(ligne, 14) = ""
    End If

End With 

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tchulio Messages postés 174 Statut Membre 1
 
ok j'ai compris pardon.

Mais par contre ça ne fonctionne pas. Quand je clique sur valider, mes ligne s'insère, mais le calcul ne se fait pas...
0
tchulio Messages postés 174 Statut Membre 1
 
ok je regarde ça cet aprem merci
0
tchulio Messages postés 174 Statut Membre 1
 
BOnjour, désolé de répondre seulement maintenant, beaucoup d'urgence au travail et pas le temps ce w.e...

Donc j'ai essayé, ça marche quand je rentre mes données avec le USF, par contre même problème qu'auparavant, si la quantité ok est "0" , il n'y a rien qui s'affiche.

et si je mets cette ligne,
If Cells(lig, 7).Value >= "0" And Cells(lig, 9).Value >= "0" Then
ça bug, ça ne marche pas avec le USF,

Merci
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Apparement tu oublie les points...
If .Cells(lig, 7).Value >= "0" And .Cells(lig, 9).Value >= "0" Then
A+
0
tchulio Messages postés 174 Statut Membre 1
 
Ok donc ce code fonctionne maintenant parfaitement lorsque je fait les saisie avec le USF, par contre quand je fait un calcul total de la feuille avec ce code, si j’ai une valeur dams ma colonne 7 et pas de valeur dans la 9, ça m’affiche « NCR » dans la colonne 14. Normalement il n’y a rien qui doit s’afficher.

A mon avis le pb vient de cette ligne

If Cells(Lig, 7).Value >= 0 And Cells(Lig, 9).Value >= 0 Then

J’ai mis un >=0 car si ma quantité ok est “0”, il faut que ça affiche NCR.

Sub Resultat()
Dim Lig As Long
Dim Col As Long
Sheets("Produits").Select
For Lig = 2 To Range("C65536").End(xlUp).Row
If Cells(Lig, 7).Value >= 0 And Cells(Lig, 9).Value >= 0 Then
If (Cells(Lig, 9) / Cells(Lig, 7)) < 0.99 Then
Cells(Lig, 14) = "NCR"
Else
Cells(Lig, 14) = "OK"
End If
Else
Cells(Lig, 14) = ""
End If
Next Lig
End Sub

merci
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Ca devrait aller avec...
Sub Resultat()
Dim Lig As Long
Dim Col As Long
    Sheets("Produits").Select
    For Lig = 2 To Range("G65536").End(xlUp).Row
        If Cells(Lig, 7) > 0 Then
            If Cells(Lig, 9) = "" Or Cells(Lig, 9) = 0 Then
                Cells(Lig, 14) = "NCR"
            ElseIf (Cells(Lig, 9) / Cells(Lig, 7)) < 0.97 Then
                Cells(Lig, 14) = "NCR"
            Else
                Cells(Lig, 14) = "OK"
            End If
        Else
            Cells(Lig, 14) = ""
        End If
    Next Lig
End Sub

A+
0
tchulio Messages postés 174 Statut Membre 1
 
Avec ce code aussi , lorsqu'il n'y a pas de quantité OK en "9", ça m'inscrit "NCR".

En fait ce qu'il faut c'est que quand "9" = 0 il y ait NCR
et que quand "9" est vide, il n'y ait rien qui ne s'affiche
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Tu dit.....
Donc j'ai essayé, ça marche quand je rentre mes données avec le USF, par contre même problème qu'auparavant, si la quantité ok est "0" , il n'y a rien qui s'affiche.

Avec ce code aussi , lorsqu'il n'y a pas de quantité OK en "9", ça m'inscrit "NCR".

Décide une bonne fois pour toute Grrrrr
0
tchulio Messages postés 174 Statut Membre 1
 
Non, quand il y a "0" en quantité ok, il y a NCR. ça on est d'accord.

Par contre s'il il n'y a pas de quantité ok, s'il il n'y a rien d'écrit, si la case est vide quoi, là il ne devrait rien y avoir.

tu comprends mieux ce que je veux dire?
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Je n'ai pas réalisé plutôt, mais quand tu modifie la ligne ...
If Cells(lig, 7).Value >= "0" And Cells(lig, 9).Value >= "0" Then
Réfléchi un tout.. tout...tout petit peu...
La condition où il n'y à rien dans aucune des cellules ne se produira jamais car tu met (c'est toi qui modifie)
7=>0 et 9=>0 CE SERRA TOUJOURS VRAI, cogite la-dessus et tu trouverras une solution. Si pas ont en rediscuterras.
A+
PS: Il faut aussi que tu réfléchisse un peu et jusque maintenant je n'ai fait que te PONDRE la solution ce qui n'était pas te rendre service.
0
tchulio Messages postés 174 Statut Membre 1
 
Je suis vraiment nul...

Des on cherche compliqué quand c'est tout simple....

Il y avait juste à mettre les "" autour des "0", maintenant ça fonctionne parfaitement...

Encore merci à toi pour toute ton aide!
0