FIND avec une variable

Bonjour tout le monde,
J'espère que vous allez bien!

Je m'excuse de vous déranger cependant je suis nouveau en VBA et je suis bloqué sur mon code.
Voici le début de celui-ci.

Dim x As Integer
Dim PlageDeRecherche As Range
Dim y As String
Dim z As Range

x = 3
y = Cells(x, 8)

Set PlageDeRecherche = ActiveSheet.Columns(10)
Set z = PlageDeRecherche.Cells.Find(What:=y, After:=Cells(1, 1))

Je souhaite définir la colonne cells(x,8) (avec x une variable qui à laquelle je vais ajouter +1 à chaque itération) comme étant l'élement que je vais rechercher sur un autre classeur excel. Cependant mon code ne fonctionne pas et VBA me dit qu'il y a un problème avec la dernière ligne, il me dit " "Type Mismatch" , Je pense qu'il ne comprend pas ma variable Y... Pouvez-vous m'aider s'il vous plaît :( ?

Merci infiniment !

Bonjour,

Cells nécessite d'être systématiquement qualifié, donc préciser la feuille, voir le classeur qui s'y rattache au contraire de Range, même si je conseille de le qualifier également.

Par exemple ce test fonctionne :

Option Explicit
Sub TEST()
Dim x As Integer
Dim PlageDeRecherche As Range
Dim y As String
Dim z As Range

x = 3
y = ActiveSheet.Cells(x, 8)

Set PlageDeRecherche = ActiveSheet.Columns(10)
Set z = PlageDeRecherche.Find(What:=y)
MsgBox z.Row
End Sub

En restant à dispo.

Cdlt,

si c'est la colonne 10, mets 10 ... je pense que l'erreur venait de After:=Cells(1, 1)

Sub testFind()

Dim x As Integer
Dim PlageDeRecherche As Range
Dim y As String
Dim z As Range

x = 3
y = Cells(x, 8).Value
Debug.Print y

Set PlageDeRecherche = ActiveSheet.Columns(10)
Set z = PlageDeRecherche.Find(What:=y, After:=Cells(1, 10))

Debug.Print z.Address

End Sub
6find.xlsm (13.57 Ko)

edit : bjr Ergotamine ... j'ai été grillé !

Merci beaucoup pour votre aide à tous les 2, ça marche !
Excellente journée à vous deux :) !

Bonjour,

Je m'excuse de vous re-déranger cependant j'ai une autre question sur la même macro.
Je suis un peu plus loin cette fois et je souhaite colorier en jaune la cellule que la fonction "Find" a trouvée.
d'où le " Z.interior.color=65535 " Cependant rien ne se passe ...

Savez-vous où j'ai fais fausse route?

x = 3
y = Sheets("Open Deals").Cells(x, 8)

Set z = Cells.Find(What:=y, LookAt:=xlWhole) 

While ActiveSheet.Cells(x, 8) <> ""
Windows("TEST1.xlsx").Activate 
If z Is Nothing Then 
Windows("TEST2").Activate 
Else
z.Interior.color = 65535 
Windows("TEST2").Activate 
End If
x = x + 1 
Wend

Merci d'avance !

Personnellement chez moi ça fonctionne.

Si ça ne colore pas, est-ce que c'est que rien n'est trouvé ? Sans fichier, difficile d'avancer.

Il faut tester encore et encore.

Sinon, pourquoi ne pas passer par une MEFC ?

Cdlt,

5test.xlsm (13.07 Ko)

Merci du temps que tu prends pour m'aider.

Ci-joint les fichiers Excel, ce que j'essaye de faire c'est que, pour chaque code du fichier TEST 2 , je souhaite faire une recherche dans le fichier TEST pour voir s'il existe.
Si c'est le cas, je souhaite surligner en jaune la ligne ( ou alors la cellule si c'est trop difficile ).

J'essaye de mettre le code mais ça ne marche pas...

6test.xlsm (37.33 Ko)
5test-2.xlsm (12.78 Ko)

PS : Je ne sais pas du tout ce qu'est une MEFC , je suis nouveau dans ce monde ^^'

Bonjour,

Comme dit, beaucoup plus simple par MEFC, c'est plus dynamique et plus rapide. Il est possible de dissocier les deux feuilles mais je le déconseille, car si le fichier source est déplacé, il faudra recréé le lien dans la MEFC.

Cdlt,

Edit : MEFC = Mise en forme conditionnelle :)

Bonsoir,

Oui en effet c'est beaucoup plus simple ! Je viens de voir.

Merci encore pour ton aide et excellente soirée !

Bonsoir,

Pas de soucis. Il est a noté que VBA doit être utilisé, à mon sens, dans des cas bien spécifiques.

Excel regorge de fonctionnalité intégrées, qui permettent de résoudre moultes fonctionnalités qui sont, très souvent, plus facilement accessible et/ou compréhensibles.

N'hésites pas à te renseigner sur les MEFC, c'est très pratique combiné aux formules basiques d'Excel.

Bonne soirée à toi !

Rechercher des sujets similaires à "find variable"