Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème avec formule IF VBA excel [ Langages dérivés / VBA ] (avyrex1926)

samedi 5 avril 2008 à 00:32:07 | Problème avec formule IF VBA excel

avyrex1926

Membre Club
Bonjour à tous,

J'aurais besoin d'aide pour inserer cette formule excel que j'ai fais dans un script VBA.

Voici la formule: =SI(D12<0.899,"INF",SI(D12>0.96,"SUP",SI(D12<=0.899,"90à92",SI(D12<0.9299,"90à92",SI(D12<=0.93,"92à9 5",SI(D12<=0.959,"92à95","")))))).

Je voudrais l'inserer dans le script:
Dim i As Integer, DerL As Integer, r As Integer, Opid As String

DerL = Sheets(2).Cells(Rows.Count, 3).End(xlUp).Row

For i = 2 To DerL
Opid = Sheets(2).Cells(i, 3).Text
Set C = Sheets(1).Range("A:A").Find(what:=Opid, lookat:=xlWhole)
If Not C Is Nothing Then
r = C.Row
Sheets(2).Cells(i, 5) = Sheets(1).Cells(r, 2)
Sheets(2).Cells(i, 6) = Sheets(1).Cells(r, 3)
Sheets(2).Cells(i, 10) = LA VALEUR DE LA FOURMULE PLUS HAUT
Sheets(2).Cells(i, 12) = Sheets(1).Cells(r, 4)
Else
'MsgBox Opid & " n'existe pas dans la feuille Employés"
End If
Next i

MsgBox "Terminé"
End Sub


Comment faire svp?

Merci de votre aide

samedi 5 avril 2008 à 04:09:29 | Re : Problème avec formule IF VBA excel

MPi

Réponse acceptée !
Voici comment tu pourrais inscrire la formule dans la cellule:

Sheets(2).Cells(i, 10)
.Formula =  "IF(D12<0.899,"INF",IF(D12>0.96,"SUP",IF(D12<=0.899,"90à92",IF(D12<0.9299,"90à92",SI(D12<=0.93,"92à9 5",IF(D12<=0.959,"92à95",""))))))"

En utilisant Formula plutôt que FormulaLocal, le programme pourra rouler sur des machines configurées en français ou en anglais. Il faut, par contre, coder la formule en anglais.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI


samedi 5 avril 2008 à 04:12:13 | Re : Problème avec formule IF VBA excel

avyrex1926

Membre Club
Je sais pas si ça serais plus rapide de la façon du ta l'a fais ou bien de cette façon ci:

Dim lgLig As Long
   
    For lgLig = 12 To Range("D" & Cells.Rows.Count).End(xlUp).Row
        If Range("D" & lgLig) >= 0 Then
            Range("J" & lgLig) = "INF"
        End If
    Next lgLig
   
   
    For lgLig = 12 To Range("D" & Cells.Rows.Count).End(xlUp).Row
        If Range("D" & lgLig) >= 0.9 Then
            Range("J" & lgLig) = "90à92"
        End If
    Next lgLig
   
   
    For lgLig = 12 To Range("D" & Cells.Rows.Count).End(xlUp).Row
        If Range("D" & lgLig) >= 0.93 Then
            Range("J" & lgLig) = "93à95"
        End If
    Next lgLig
   
   
     For lgLig = 12 To Range("D" & Cells.Rows.Count).End(xlUp).Row
        If Range("D" & lgLig) >= 0.96 Then
            Range("J" & lgLig) = "SUP"
        End If
    Next lgLig
   
   
  

samedi 5 avril 2008 à 14:41:01 | Re : Problème avec formule IF VBA excel

MPi

Réponse acceptée !
J'ai fait 3 tests:
le premier avec 4 boucles comme tu l'écris   : 7 à 7.5 secondes
le deuxième avec une seule boucle et un Select Case mieux ordonné   : 5.5 à 6 sec.
le troisième avec la formule   : 0.05 à 0.15 sec  <<and the winner is !!!

1er test (voir ton code...)

2e test (avec Select Case, mais aurait pu être des If...ElseIf...)
Sub Test2()
    Dim lgLig As Long
    Dim Durée As Single
   
    Durée = Timer
  
    For lgLig = 12 To Range("D" & Cells.Rows.Count).End(xlUp).Row
        Select Case Range("D" & lgLig)
            Case Is >= 0.96
                Range("J" & lgLig) = "SUP"
            Case Is >= 0.93
                Range("J" & lgLig) = "93à95"
            Case Is >= 0.9
                Range("J" & lgLig) = "90à92"
            Case Is >= 0
                Range("J" & lgLig) = "INF"
        End Select
    Next lgLig
   
    MsgBox Format(Timer - Durée, "0.00") & " secondes"
End Sub

3e test
    Dim nbLignes As Long
    Dim Durée As Single
   
    Durée = Timer
   
    nbLignes = Cells(Rows.Count, "D").End(xlUp).Row
   
    Range("J1:J" & nbLignes).Formula = "=IF(D12<0.899,""INF"",IF(D12>0.96,""SUP"",IF(D12<=0.899,""90à92"",IF(D12<0.9299,""90à92"",IF(D12<=0.93,""92à9 5"",IF(D12<=0.959,""92à95"",""""))))))"
    MsgBox Format(Timer - Durée, "0.00") & " secondes"

De plus, il y a plus de conditions dans la formule que dans le code...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI


samedi 5 avril 2008 à 16:51:15 | Re : Problème avec formule IF VBA excel

avyrex1926

Membre Club
Merci MPi, bonne différence en temps, c'est vrai 

J'y vais avec

3e test
    Dim nbLignes As Long
    Dim Durée As Single
   
    Durée = Timer
   
    nbLignes = Cells(Rows.Count, "D").End(xlUp).Row
   
    Range("J1:J" & nbLignes).Formula = "=IF(D12<0.899,""INF"",IF(D12>0.96,""SUP"",IF(D12<=0.899,""90à92"",IF(D12<0.9299,""90à92"",IF(D12<=0.93,""92à9 5"",IF(D12<=0.959,""92à95"",""""))))))"
    MsgBox Format(Timer - Durée, "0.00") & " secondes"




Cette discussion est classé dans : cells, formule, sheets, if, opid


Répondre à ce message

Sujets en rapport avec ce message

Problème code pour modifier une ligne dans excel [ par eastpeople ] Bonjour,J'ai un problème sur ce code :Private Sub OK_Click()If choix_act = "" Then    erreur = MsgBox("Veuillez choisir une activité à modifier", vbOK boucle et collage sur pages différentes [ par jodeciters ] Bonjour,à la suite d'une boucle imbriquée du type de celle-ci:If Sheets("menu2").Cells(Ligmenu, 3).Value "" Then        If Sheets("menu2").Cells(Ligm Problème avec les boucles For To Next qui s'entremèlent [ par pedrito53 ] Bonjour à tous, tout d'abord bonne année!J'ai un problème qui me bloque aujourd'hui, c'est que j'ai un projet à finir pour la fin de la semaine et là Comment attribuer plusieurs couleurs à une chaine de caracteres située dans une cellule [ par pm78000 ] Bonjour,Je bloque depuis 2 jours sur ce problème. Je travaille avec des numéros de risques à 2 dates différentes. J'insère chaque numéro de risque dan boucles imbriquées [ par jodeciters ] bonjour, j'ai un souci sur une partie de code vba pour excel:voici le pb: je dois imprimer des plannings individuels pour des stagiaires en formation. Porblème Boucle + récupération de données [ par Zouzou12345 ] Bonjour à tous! Je suis débutante en vba et j'ai un problème qui dure depuis 2 jours! J'ai crée un Userform avec 2 listes déroulantes où on choisit le modification onglet créé VBA [ par masterfab2 ] Bonjour,en esperant avoir posté dans la bonne section...Depuis quelques temps j'essai d'apprendre qqs rudiments de VBA pour compléter mes connaissance vba-excel somme sous 2 conditions [ par ephuridai ] Bonjour,ceci est une question pour moi tres hardue. Aussi, je la pose avant de quitter mon poste, et vous aurez jusqu'à demain après midi pour y réflé Coloriser une cellule EXCEL [ par VB_PtitCat ] Bonjour,j'aimerai colorier  mes cellules en vert,uniquement si les deux premier caractères d'une cellule sont OK!Voilà mon code, qui ne marche pas, si Formule Excel sous VBA [ par marjorykwet ] Bonjour, je programme un fichier excel, dans une variable je met le numero de la ligne puis dans une formule j'utilise cette variable pour faire une


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,296 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.