Recherche de valeurs dans plages nommées

Résolu
Clem -  
 Clem -
Bonjour,

Je suis débutante en VBA et doit effectuer la macro suivante:

"Ecrivez une macro VerifValeur qui recherche une valeur dans une plage nommée.

La macro prendra deux arguments en paramètre :
valeur, représentant la valeur cherchée
zone, représentant le nom de la zone nommée dans laquelle se fera la recherche

La macro aura donc pour entête : Sub VerifValeur(valeur,zone)

Vous utiliserez la macro TestVerif pour tester votre macro"

Voilà ce que j'ai réussi à faire jusque là... évidemment ça ne fonctionne pas encore mais je bloque depuis un certain temps déjà! à l'aide!
Il y a trois plages nommées en tout (UE, ESA et CE)

---------------------
Sub VerifValeur(valeur, zone)

Trouvé = False
Dim zone As Range

For Each cellule In zone
If cellule.Value = valeur Then
Debug.Print "la valeur" + valeur + "existe"
Trouvé = True
End If

Next
If Trouvé = False Then
Debug.Print "la valeur n'existe pas"
End If

End Sub
------------------------
Sub TestVerif()
VerifValeur "France", "UE"
VerifValeur "France", "ESA"
VerifValeur "France", "CE"
VerifValeur "Allemagne", "UE"
VerifValeur "Allemagne", "ESA"
VerifValeur "Allemagne", "CE"
VerifValeur "Pologne", "UE"
VerifValeur "Pologne", "ESA"
VerifValeur "Pologne", "CE"
VerifValeur "Monaco", "UE"
VerifValeur "Monaco", "ESA"
VerifValeur "Monaco", "CE"
End Sub
---------------------------

Merci d'avance!

Clémentine

3 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    la variable zone ne doit pas être déclarée dans la procedure, sinon elle sera ré-initialisée à nothing en attendant d'être affectée et celle passée à la procedure n'est plus visible dans la procedure
    Essaies ceci

    Sub VerifValeur(valeur, zone As Range)
    Dim cellule As Range, trouve As Boolean
    For Each cellule In zone
      If cellule.Value = valeur Then
        MsgBox "la valeur " & valeur & " existe dans la plage " & zone.Address & " en " & cellule.Address
        trouve = True
        Exit For
      End If
    Next
    If trouve = False Then
      MsgBox "la valeur n'existe pas"
    End If
    End Sub


    De plus lors de l'appel le second paramètre est une plage

    Sub TestVerif()
    VerifValeur "France", Range("UE")
    ...
    End Sub


    Cdlmnt
    0
    1. Clem
       
      Bonjour ccm81,

      merci beaucoup pour cette réponse rapide et les modifications apportées !
      Hélas, ça ne fonctionne toujours pas (message d'erreur 1004 la méthode Range de l'objet _Global a échoué)


      Cordialement,
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Eh oui, tu as peut être un autre problème dans la deuxième procedure
    J'ai pris comme option que zone est de type Range
    j'ai modifié et complété le code, vois ce que ça donne
    http://www.cjoint.com/c/GJCpysZQPpB

    Cdlmnt
    0
    1. Clem
       
      Super, ça a l'air de fonctionner ! Merci encore !!
      0