Object variable not set (Error 91)

Fermé
Allain90 Messages postés 17 Date d'inscription jeudi 5 septembre 2013 Statut Membre Dernière intervention 13 avril 2015 - 13 avril 2015 à 12:27
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 14 avril 2015 à 16:53
Bonjour,

je suis débutant en programmation VBA et j'ai rencontré un message d'erreur sur cette ligne:
match = MapSheet.Cells(MapSheet.Columns(2).Find(what:=label, lookat:=xlWhole).row, 4).Value

j'ai essayé de declarer la variable mais ça marche toujours pas !!

Merci pour votre aide

7 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
13 avril 2015 à 15:19
Bonjour Allain, bonjour le forum,

Mactch étant un mot clé réservé au VBA il te faut changer le nom de ta variable...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
13 avril 2015 à 15:23
Salut ThauTheme,
Peut être la même chose pour label...
Et éventuellement, Set la variable MapSheet avant...
A++
0
Allain90 Messages postés 17 Date d'inscription jeudi 5 septembre 2013 Statut Membre Dernière intervention 13 avril 2015
13 avril 2015 à 16:21
Bonjour,
Merci pour votre réponse
J'ai suivi vos conseil mais ça ne marche pas !!
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
13 avril 2015 à 16:38
Bonjour le fil, bonjour le forum,

Et si tu envoyais le code complet ou, mieux encore, le fichier qui va bien ?...
0
Allain90 Messages postés 17 Date d'inscription jeudi 5 septembre 2013 Statut Membre Dernière intervention 13 avril 2015
13 avril 2015 à 16:52
Set MapSheet = ActiveWorkbook.Worksheets("fichier1")
Dim label, match, valeur As String
row = 2
label = Trim(CalculSheet.Cells(1, col).Text)
match = MapSheet.Cells(MapSheet.Columns(2).Find(what:=label, lookat:=xlWhole).row, 4).Value
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
13 avril 2015 à 17:04
Bonjour le fil, bonjour le forum,
  • Désolé le code est incomplet ! CalculSheet ?
  • Tu n'as pas changé le nom des variables comme Pijaku et moi-même t'avions demandé...


Si tu ne fais pas d'efforts je n'ai pas envie d'en faire non plus !...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Allain90 Messages postés 17 Date d'inscription jeudi 5 septembre 2013 Statut Membre Dernière intervention 13 avril 2015
13 avril 2015 à 17:11
Désolé je t'ai envoyé le code initial; c'est une fonction qui permet de faire le mapping des données de différentes fichier
Set MonFichier = ActiveWorkbook.Worksheets("fichier1")
Set CalculSheet = ActiveWorkbook.Worksheets("Calcul")
Dim lab, match, valeur As String
row = 2
lab = Trim(CalculSheet.Cells(1, col).Text)
match = MonFichier.Cells(MapSheet.Columns(2).Find(what:=lab, lookat:=xlWhole).row, 4).Value
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
13 avril 2015 à 17:19
Bonjour le fil, bonjour le forum,

Une macro, pour moi, commence par Sub et finit par End Sub. Une Fonction commence par Public Function et finit par End Function...

P... je viens de télécharger l'application "Tirage_des_vers_du_Nez" sur mon NoSmartPhone. Elle est Gé-ni-ale !
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
14 avril 2015 à 16:53
Bonjour,

Le problème vient de la méthode find. Placée ainsio, si elle ne retourne pas de valeur (lab non trouvé), elle fout tout en l'air.
Il te faut donc tester au préalable si Find retourne quelque chose et imaginer une solution pour le cas ou elle ne retourne rien.
Function Machin() As String
Set MonFichier = ActiveWorkbook.Worksheets("fichier1")
Set CalculSheet = ActiveWorkbook.Worksheets("Calcul")
Dim lab As String, Mymatch As String, valeur As String
Dim Trouve As Range
row = 2
lab = Trim(CalculSheet.Cells(1, col).Text)
Set Trouve = MapSheet.Columns(2).Find(what:=lab, lookat:=xlWhole)
If Not Trouve Is Nothing Then
    Mymatch = MonFichier.Cells(Trouve.Row, 4).Value
Else
    Mymatch = "Erreur. Non trouvé"
End If
Machin = Mymatch
End Function
0