You first find lance after beating the Red Gyarados, then you meet him in the souvenir shop, and battle team rocket with him. You will also see him again as Pokemon League Champ.
lance is the johto champion so you could find him after you beat the elite four
At the lake of rage in mahogany
If you have not met him yet, Lance is at the Lake of Rage. Once you defeat the Red Gyarados, he will be reading a sign. Go and talk to him to continue the game.
Chat with our AI personalities
Lance
u wot m8
You should never have a problem in talking to him if you are meant to at that point in the game, if you are wondering whether you can randomly find/talk to him at your will then the answer is no.
The gym leaders have different Pokemon the elite 4 and Lance.
You can find it in Pokemon Platinum, Pokemon Crystal, Pokemon HeartGold, and Pokemon SoulSilver.