Probleme avec la formule Intersect en VBA

Bonjour à tous,

Je recherche à verifier q'une cellule appartient bien à une plage definie.

Pour cela, j'utilise le code suivant et fais appel à la fonction "Intersect" :

Sub Verifierplage()

I = Right(Workbooks("Creationdecoupage").Worksheets("page de garde").Cells(6, 2).Value, 5)

j = Right(Workbooks("Creationdecoupage").Worksheets("Code").Cells(3, 5).Value, 5)

k = Right(Workbooks("Creationdecoupage").Worksheets("code").Cells(3, 6).Value, 5)

If Not Application.Intersect(Cells(1, I), Range("Cells(1, j):Cells(1, k)")) Is Nothing Then

MsgBox "Cellule fait partie de Plage"

End If

End Sub

Bonsoir,

Il est bien en posant une question de dire que cela de fonctionne pas (au moins) et où ! mais pas grave, on le voit vite !

Bien aussi d'utiliser la balise code dans un post, et d'indenter son code, c'est toujours nettement plus lisible pour les intervenants, et ça aide à voir plus vite ce qui ne va pas !

Sinon :

-Intersect n'est pas une fonction mais une méthode de l'objet Application (il n'est pas inutile de le vérifier avant d'appeler tout "fonction"...)

-Il est souhaitable de déclarer ses variables en tête de procédure, et de les typer sauf cas particulier.

-Le mélange majuscule-minuscule pour des variables d'utilisation semblable fait un peu désordre, mais ce n'est là qu'une question d'esthétique !

Par contre leur initialisation montre qu'on leur affecte des chaînes 5 caractères, mais ensuite elles sont utilisées comme s'il s'agissait de variables integer (déclaration et type aurait été fort utile pour y voir clair dans cet imboglio).

Et :

Range("Cells(1, j):Cells(1, k)")

là, hormis l'incertitude déjà évoquée, il y a au moins 2 erreurs de syntaxe dans l'expression ! Belle accumulation .

Cordialement.

Bonjour,

Merci pour vos remarques. En effet, il y avait bien un problème avec les types de variables utilisés.

Je vous remets donc le code corrigé, qui fonctionne

 Sub Verifierplage()
Dim I As String
Dim J As String
Dim K As String

Dim L As Long
Dim M As Long
Dim N As Long

I = Right(Workbooks("Creationdecoupage").Worksheets("page de garde").Cells(6, 2).Value, 5)
J = Right(Workbooks("Creationdecoupage").Worksheets("Code").Cells(3, 5).Value, 5)
K = Right(Workbooks("Creationdecoupage").Worksheets("code").Cells(3, 6).Value, 5)

L = I
M = J
N = K

If Application.Intersect(Worksheets("TEST").Cells(L, 1), Worksheets("TEST").Range(Cells(M, 1), Cells(N, 1))) Is Nothing Then
  MsgBox "Cellule ne fait pas partie de la plage"
End If

End Sub

Cordialement

Jean

Rechercher des sujets similaires à "probleme formule intersect vba"