Réaliser un test dans une macro

Bonjour à tous,

Contexte:

Pour lancer une analyse je dois sélectionner un cellule dans laquelle doit se trouver une valeur, et je souhaite pouvoir sélectionner cette valeur de différent endroit dans mon classeur sans restriction.

Problème:

Mon analyse se base sur un type de valeur précis, je dois donc m'assurer que la valeur de la cellule sélectionnée est comprise dans une liste de valeur avant de lancer l'analyse.

Question:

Je me suis dis que je devrais utiliser la fonction Match, j'ai donc écrit le code suivant:

Sub test1()
'
'Cette macro a pour objet de mettre à jour les tables d'analyse à partir d'une cellule sélectionnée, si la valeur de cette sélection correspond à une valeur dans la "Table_Valeur" colonne "Code ISIN"
'
'Demande confirmation du lancement de l'analyse
    Beep
    If MsgBox("Souhaitez-vous lancer l'analyse de la valeur sélectionnée?", vbQuestion + vbYesNo + vbDefaultButton1 + vbSystemModal, "Sélection pour analyse") = vbYes Then
'
'Copier la cellule sélectionnée
            Selection.Copy
'
'Coller la sélection dans le formulaire
            Range("Valeur_sélectionnée").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            Application.CutCopyMode = False
'
'Tester si la sélection correspond au code ISIN d'une valeur retenue
        Dim VAL1 As Variant
        VAL1 = Application.WorksheetFunction.Match(Range("Valeur_sélectionnée"), Range("Table_Valeurs[Code ISIN]"), 0)
        If Range("Valeur-sélectionnée") = Range(VAL1) Then
'
'Raffraichir l'onglet après copie afin de raffraichir les zones de "nom" associées à la valeur (secteur, industrie, ind. nat.)
            Sheets("C00-Sélection valeur").Calculate
'etc....
        End If
    End If

End Sub

je bute sur la syntaxe de l'égalité

        If Range("Valeur-sélectionnée") = Range(VAL1) Then

Pourriez-vous m'aider à éclaircir cette difficulté?

D'avance merci pour vos contributions.

Cordialement

Bonjour,

La fonction MATCH renvoie la position de la valeur recherchée dans Table_Valeurs[Code ISIN].

VAL1 étant de type variant, si la valeur n'est pas trouvée, VAR1 sera vide et la fonction MATCH renverra une valeur d'erreur.

Tu peux faire ce test

Sub test1()
Dim VAL1 As Variant
'Cette macro a pour objet de mettre à jour les tables d'analyse à partir d'une cellule sélectionnée, _
si la valeur de cette sélection correspond à une valeur dans la "Table_Valeur" colonne "Code ISIN"
'Demande confirmation du lancement de l'analyse
    Beep
    If MsgBox("Souhaitez-vous lancer l'analyse de la valeur sélectionnée?", vbQuestion + vbYesNo + vbDefaultButton1 + vbSystemModal, "Sélection pour analyse") = vbYes Then
        Selection.Copy
        Range("Valeur_sélectionnée").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        'Tester si la sélection correspond au code ISIN d'une valeur retenue
        On Error Resume Next
        VAL1 = Application.WorksheetFunction.Match(Range("Valeur_sélectionnée"), Range("Table_Valeurs[Code ISIN]"), 0)
        If Not IsEmpty(VAL1) Then
            'Raffraichir l'onglet après copie afin de raffraichir les zones de "nom" associées à la valeur (secteur, industrie, ind. nat.)
            MsgBox "Trouvé en position " & VAL1
            'Sheets("C00-Sélection valeur").Calculate
        Else
            MsgBox "Pas trouvé !"
        End If
        On Error GoTo 0
    End If
End Sub

A+

Bonjour frangy,

Merci pour ta contribution et tes explications très claires.

Le test fonctionne parfaitement maintenant.

A bientôt

Cordialement

Rechercher des sujets similaires à "realiser test macro"