Erreur d'objet requis dans une méthode Find
Résolu/Fermé
Aerojeff
Messages postés
38
Date d'inscription
dimanche 31 janvier 2010
Statut
Membre
Dernière intervention
13 décembre 2012
-
12 déc. 2012 à 11:29
Aerojeff Messages postés 38 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 13 décembre 2012 - 13 déc. 2012 à 12:29
Aerojeff Messages postés 38 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 13 décembre 2012 - 13 déc. 2012 à 12:29
A voir également:
- Erreur d'objet requis dans une méthode Find
- Erreur 0x80070643 - Accueil - Windows
- Vente objet occasion entre particulier - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
9 réponses
f894009
Messages postés
17222
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
8 janvier 2025
1 712
12 déc. 2012 à 12:06
12 déc. 2012 à 12:06
Bonjour,
pour cette erreur:
Set ligne = .Find(soudeur_etude, LookIn:=xlValues, Lookat:=xlWhole).Row
Enlevez .row
pour avoir la ligne: ex---> Lig=ligne.row
ceci pour la methode que vous avez utilisee.
Bonne suite
pour cette erreur:
Set ligne = .Find(soudeur_etude, LookIn:=xlValues, Lookat:=xlWhole).Row
Enlevez .row
pour avoir la ligne: ex---> Lig=ligne.row
ceci pour la methode que vous avez utilisee.
Bonne suite
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
12 déc. 2012 à 13:42
12 déc. 2012 à 13:42
Bonjour,
Tu n'as pas besoin de "set "
si tu nommes les param^tres, il faut tous les nommer
Range("Tx" & secteur_etude & "1") est une seule cellule? si oui, pas besoin de Find....
sinon, attention car la recherche comme après la cellule indiquée par le paramètre "after:="
ligne = .Find(what:=soudeur_etude, LookIn:=xlValues, Lookat:=xlWhole).Row
donc, difficile d'^tre sûr sans savoir ce que contient "secteur_etude"
Tu n'as pas besoin de "set "
si tu nommes les param^tres, il faut tous les nommer
Range("Tx" & secteur_etude & "1") est une seule cellule? si oui, pas besoin de Find....
sinon, attention car la recherche comme après la cellule indiquée par le paramètre "after:="
ligne = .Find(what:=soudeur_etude, LookIn:=xlValues, Lookat:=xlWhole).Row
donc, difficile d'^tre sûr sans savoir ce que contient "secteur_etude"
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
12 déc. 2012 à 14:34
12 déc. 2012 à 14:34
Bonjour à tous,
autre élément : qu'est-ce que soudeur_etude ?
une variable ? de quel type ?
un nom défini dans le classeur ? mettre : [soudeur_etude]
eric
autre élément : qu'est-ce que soudeur_etude ?
une variable ? de quel type ?
un nom défini dans le classeur ? mettre : [soudeur_etude]
eric
Aerojeff
Messages postés
38
Date d'inscription
dimanche 31 janvier 2010
Statut
Membre
Dernière intervention
13 décembre 2012
12 déc. 2012 à 15:38
12 déc. 2012 à 15:38
Merci beaucoup! Tout fonctionne en enlevant le Set, j'avance plutôt bien et sans encombre. Encore une boucle For à faire (mon Dieu mon Dieu j'ai peur...) et ce sera bon!
Merci pour les conseils, toujours bons à prendre! soudeur_etude est une variable String. L'utilisateur choisit un soudeur dans une liste prédéfinie, et jusqu'ici mon programme sert à récupérer des relevés de qualité de ce soudeur situés sur un autre fichier qui ressemble de près ou de loin à une usine à gaz.
Une fois mes données récupérées, je les envoie dans différents graphiques et c'est bon!
Merci pour les conseils, toujours bons à prendre! soudeur_etude est une variable String. L'utilisateur choisit un soudeur dans une liste prédéfinie, et jusqu'ici mon programme sert à récupérer des relevés de qualité de ce soudeur situés sur un autre fichier qui ressemble de près ou de loin à une usine à gaz.
Une fois mes données récupérées, je les envoie dans différents graphiques et c'est bon!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Aerojeff
Messages postés
38
Date d'inscription
dimanche 31 janvier 2010
Statut
Membre
Dernière intervention
13 décembre 2012
13 déc. 2012 à 11:15
13 déc. 2012 à 11:15
Bon, j'ai avancé plutôt convenablement, mais je n'arrive pas à gérer la dernière étape de cette partie du programme...
Pour l'instant j'ai une boucle For qui va chercher les données pour les 12 parties de mon tableau (une partie par mois, évidemment). Cependant, certains soudeurs ne viennent sur un produit qu'à partir d'un certain mois. Je dois donc imbriquer une boucle If dans ma boucle For.
La boucle If vérifie si ligne est vide ou non, et si elle est vide, passe au i suivant. Et c'est là que ça cloche, je n'arrive pas à renvoyer à la boucle For après le If. Je poste mon code...
For i = 1 To 12
Windows(FichierSuivi).Activate
Worksheets("Suivi soudeurs " & secteur_etude).Activate
Range("Tx" & secteur_etude & i).Activate
With Worksheets("Suivi soudeurs " & secteur_etude).Range("Tx" & secteur_etude & i)
Set ligne = .Find(what:=soudeur_etude, LookIn:=xlValues, Lookat:=xlWhole)
If Not ligne Is Nothing Then
Else: Next [C'est ici que le problème intervient. Il faudrait qu'il sorte de la boucle If, pour repartir sur le for mais pas moyen malgré plusieurs écritures différentes...]
End If
lignetrouve = ligne.Row
Range(Cells(lignetrouve, 3), Cells(lignetrouve, dercol)).Select
Selection.Copy
Windows("SUIVI DES FUITES Auto").Activate
Worksheets("Test").Activate
Range("Mois" & i).Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next
Pour l'instant j'ai une boucle For qui va chercher les données pour les 12 parties de mon tableau (une partie par mois, évidemment). Cependant, certains soudeurs ne viennent sur un produit qu'à partir d'un certain mois. Je dois donc imbriquer une boucle If dans ma boucle For.
La boucle If vérifie si ligne est vide ou non, et si elle est vide, passe au i suivant. Et c'est là que ça cloche, je n'arrive pas à renvoyer à la boucle For après le If. Je poste mon code...
For i = 1 To 12
Windows(FichierSuivi).Activate
Worksheets("Suivi soudeurs " & secteur_etude).Activate
Range("Tx" & secteur_etude & i).Activate
With Worksheets("Suivi soudeurs " & secteur_etude).Range("Tx" & secteur_etude & i)
Set ligne = .Find(what:=soudeur_etude, LookIn:=xlValues, Lookat:=xlWhole)
If Not ligne Is Nothing Then
Else: Next [C'est ici que le problème intervient. Il faudrait qu'il sorte de la boucle If, pour repartir sur le for mais pas moyen malgré plusieurs écritures différentes...]
End If
lignetrouve = ligne.Row
Range(Cells(lignetrouve, 3), Cells(lignetrouve, dercol)).Select
Selection.Copy
Windows("SUIVI DES FUITES Auto").Activate
Worksheets("Test").Activate
Range("Mois" & i).Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next
Bonjour,
Essaye comme ça
For i = 1 To 12
Windows(FichierSuivi).Activate
Worksheets("Suivi soudeurs " & secteur_etude).Activate
Range("Tx" & secteur_etude & i).Activate
With Worksheets("Suivi soudeurs " & secteur_etude).Range("Tx" & secteur_etude & i)
Set ligne = .Find(what:=soudeur_etude, LookIn:=xlValues, Lookat:=xlWhole)
If Not ligne Is Nothing Then
lignetrouve = ligne.Row
Range(Cells(lignetrouve, 3), Cells(lignetrouve, dercol)).Select
Selection.Copy
Windows("SUIVI DES FUITES Auto").Activate
Worksheets("Test").Activate
Range("Mois" & i).Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Next
Essaye comme ça
For i = 1 To 12
Windows(FichierSuivi).Activate
Worksheets("Suivi soudeurs " & secteur_etude).Activate
Range("Tx" & secteur_etude & i).Activate
With Worksheets("Suivi soudeurs " & secteur_etude).Range("Tx" & secteur_etude & i)
Set ligne = .Find(what:=soudeur_etude, LookIn:=xlValues, Lookat:=xlWhole)
If Not ligne Is Nothing Then
lignetrouve = ligne.Row
Range(Cells(lignetrouve, 3), Cells(lignetrouve, dercol)).Select
Selection.Copy
Windows("SUIVI DES FUITES Auto").Activate
Worksheets("Test").Activate
Range("Mois" & i).Select
Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Next
Aerojeff
Messages postés
38
Date d'inscription
dimanche 31 janvier 2010
Statut
Membre
Dernière intervention
13 décembre 2012
13 déc. 2012 à 12:14
13 déc. 2012 à 12:14
Ca fonctionne parfaitement, et j'ai l'impression d'avoir compris quelques trucs et pris quelques automatismes, puisque j'ai par la suite repéré quelques erreurs, et terminé cette première partie de travail! Mon chef va être content! :)
Un immense merci... Je risque d'avoir encore besoin de vos services par la suite, même si je vais faire de mon mieux pour y arriver de moi même!
Un immense merci... Je risque d'avoir encore besoin de vos services par la suite, même si je vais faire de mon mieux pour y arriver de moi même!
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
13 déc. 2012 à 12:18
13 déc. 2012 à 12:18
Bonjour,
et si tu me disais enfin ce qu'il y a dans la variable "secteur_etude"
fais un choix: soit tu répond aux questions de ceux qui essaient de t'aider, soit tu te dem... tout seul
quant à la macro, il ya beaucoup de choses à reprendre; donc tu vois
et si tu me disais enfin ce qu'il y a dans la variable "secteur_etude"
fais un choix: soit tu répond aux questions de ceux qui essaient de t'aider, soit tu te dem... tout seul
quant à la macro, il ya beaucoup de choses à reprendre; donc tu vois
Aerojeff
Messages postés
38
Date d'inscription
dimanche 31 janvier 2010
Statut
Membre
Dernière intervention
13 décembre 2012
13 déc. 2012 à 12:29
13 déc. 2012 à 12:29
J'ai repondu dans un message précédent, j'aurais pu l'écrire de manière plus claire, désolé...
La variable "soudeur_etude" récupère les initiales du soudeur sélectionné par l'utilisateur de la macro, qui sont ensuite recherchées dans la base de données.
Pour répondre aux autres questions (en effet j'y avais pas répondu... Désolé...) le Range ne correspond pas à une seule cellule, d'où la nécessité du Find (selon moi...)
Pour la recherche de la ligne, je suis obligé de placer le Set, sans quoi j'ai une erreur d'objet requis...
La variable "soudeur_etude" récupère les initiales du soudeur sélectionné par l'utilisateur de la macro, qui sont ensuite recherchées dans la base de données.
Pour répondre aux autres questions (en effet j'y avais pas répondu... Désolé...) le Range ne correspond pas à une seule cellule, d'où la nécessité du Find (selon moi...)
Pour la recherche de la ligne, je suis obligé de placer le Set, sans quoi j'ai une erreur d'objet requis...