Formule par VBA

Bonjour,

J'ai un souci avec un code que j'ai écrit. Pour faire simple, quelqu'un devait sélectionner dans une liste déroulante une donnée auquel une valeur était affectée. Du coup ma fonction n’avait qu’eu à aller chercher dans un tableau de référence la valeur par rapport à la donnée qui avait été sélectionnée. Sauf que maintenant ce sont plusieurs données qui peuvent être sélectionnées.

Dans la colonne C de la feuille "Tache modèle", on sélectionne les différentes de risques dont on a besoin. Le tableau de référence se trouve dans la feuille "methodologieOHB" entre A39:C58.

Pour rentrer dans le concret, je dois maintenant faire 2 choses:

- Comparer les mentions de danger sélectionné dans la feuille "Tache-modele" au tableau de la feuille "methodologie OHB". Si l'une des mentions sélectionnées correspond à X alors il faut mettre "X" dans la colonne F et le script s'arrête là. Sinon il faut sélectionner le facteur OHB le plus grand et l'afficher dans F. J'ai mis deux exemples dans le tableau avec la valeur qui devrait être affiché. Les mentions de danger son toujours de la forme HXXX et séparer par un ";".

- Vérifier si l'une des mentions de danger comprend la nuance OHB "st". Pour faire simple dans la feuille " "methodologie OHB" il faut regarder entre C40:C59 et si l'une des cellules correspondantes est non vide, il faut marquer "st" dans la colonne dans la colonne G dans la feuille "Tache-modele".

La partie du code que je dois réécrire et qui me pose problème est donc (module/calculs):

'Parametre phrase risques

Dim PhraseRisque
Dim NuanceOHB
If Not IsEmpty(Range("C" & numerolignes).Value) Then
PhraseRisque = Application.WorksheetFunction.VLookup(Range("C" & numerolignes), ThisWorkbook.Sheets("methodologieOHB ").Range("A40:B58"), 2, FAUX)

End If

Merci d'avance pour votre aide :).

5travail-ohb.zip (499.75 Ko)

Bonjour,

Bizarrement, "WorksheetFunction" ne supporte pas " VLookup" alors que cette dernière est bien dans la liste proposée.

Essayez celle-ci:

PhraseRisque = Application.VLookup(Range("C" & numerolignes), Sheets("methodologieOHB ").Range("A40:B58"), 2, FAUX)

Cdlt

Bonjour,

Merci pour votre retour. Apparemment cela ne fonctionne par car il n'arrive a effectuer la comparaison des valeur par la suite ^^"

Bonjour,

Dans la ligne suivante:

PhraseRisque = Application.VLookup(Range("C" & numerolignes), Sheets("methodologieOHB ").Range("A40:B58"), 2, FAUX

Ceci "Range("C" & numerolignes)" appartient à quelle feuille ?

Si ça appartient à la feuille "Tache-modele", dans ce cas il faut remplacer FAUX par VRAI ou 1 dans la formule.

Même mieux il faudrait extraire chaque éléments de la cellule en colonne C pour lancer la recherche.

Cdlt

Bon apres pas mal de travail on a fini par trouver une solution que je poste ici:

Parametre phrase risques
            Dim PhraseRisque
            Dim NuanceOHB
                If Not IsEmpty(Range("C" & numerolignes).Value) Then
                    If InStr(Range("C" & numerolignes).Value, ";") Then

                    Dim Multiple
                    Multiple = Split(Range("C" & numerolignes).Value, ";")

                    i = UBound(Multiple)
                    While i > -1

                    If Application.VLookup(Multiple(i), Sheets("methodologieOHB ").Range("A40:B58"), 2, Vrai) = "X" Then
                    PhraseRisque = Application.VLookup(Multiple(i), Sheets("methodologieOHB ").Range("A40:B58"), 2, Vrai)

                    ElseIf Application.VLookup(Multiple(i), Sheets("methodologieOHB ").Range("A40:B58"), 2, Vrai) > PhraseRisque Then
                    PhraseRisque = Application.VLookup(Multiple(i), Sheets("methodologieOHB ").Range("A40:B58"), 2, Vrai)
                    If Range("G" & numerolignes).Value <> Null Then
                    MsgBox "test"
                    Else
                    Range("G" & numerolignes).Value = Application.WorksheetFunction.VLookup(Multiple(i), ThisWorkbook.Sheets("methodologieOHB ").Range("A40:C58"), 3, FAUX)
                    End If
                    Else
                    'rien
                    If Range("G" & numerolignes).Value <> "" Then
                    Else
                    Range("G" & numerolignes).Value = Application.WorksheetFunction.VLookup(Multiple(i), ThisWorkbook.Sheets("methodologieOHB ").Range("A40:C58"), 3, FAUX)
                    End If
                    End If
                    i = i - 1
                    Wend

                    Else
                    PhraseRisque = Application.VLookup(Range("C" & numerolignes), Sheets("methodologieOHB ").Range("A40:B58"), 2, Vrai)
                    Range("G" & numerolignes).Value = Application.WorksheetFunction.VLookup(Range("C" & numerolignes), ThisWorkbook.Sheets("methodologieOHB ").Range("A40:C58"), 3, FAUX)
                    End If

                End If
Rechercher des sujets similaires à "formule vba"