Bonjour à tous,
J'essaye de faire fonctionner une méthode find qui me permettrait de récupérer la ligne d'une valeur trouvé.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| Function donnee(ValeurLineTarget, ValeurColumnTarget, ValeurLineSource, ValeurColumnSource, FileSource, SheetsSource, FileTarget, SheetsTarget) 'La Fonction donnee me permet de copier la cellule d'un fichier dans un autre fichier
Dim Source As Range 'Je declare ma cellule Sources
Dim SearchLineSource As Object
Dim SearchColumnSource As Object
Dim SearchLineTarget As Object
Dim SearchColumnTarget As Object
Dim LineSource As Integer
Dim ColumnSource As Integer
Dim LineTarget As Integer
Dim ColumnTarget As Integer
Workbooks(FileTarget).Activate
Set SearchLineTarget = Workbooks(FileTarget).Worksheets(SheetsTarget).Range("A1;Z500").Find(ValeurLineTarget, lookat:=xlWhole)
LineTarget = SearchLineTarget.Row
Set SearchColumnTarget = Workbooks(FileTarget).Worksheets(SheetsTarget).Range("A1:Z500").Find(ValeurColumnTarget, lookat:=xlWhole)
Set SearchLineSource = Workbooks(FileSource).Worksheets(SheetsSource).Range("A1:Z500").Find(ValeurLineSource, lookat:=xlWhole)
LineSource = SearchLineSource.Row
Set SearchColumnSource = Workbooks(FileSource).Worksheets(SheetsSource).Range("A1:Z150").Find(ValeurColumnSource, lookat:=xlWhole)
ColumnSource = SearchColumnSource.Column
Application.DisplayAlerts = False 'Je desactive les boites de dialogues pour ne pas perturber l'utilisateur
Set Source = Workbooks(FileSource).Sheets(SheetsSource).Cells(LineSource, ColumnSource) 'J'attribue la valeur de la cellule qui correspond au coordonnées voulu dans ma variable source
MaCellule = Source 'J'attribue la valeur de la variable source à ma variable Macellule
If MaCellule = "" Then
MaCellule = "x"
End If
Workbooks(FileTarget).Sheets(SheetsTarget).Cells(LineTarget, ColumnTarget) = MaCellule
Application.DisplayAlerts = True 'Je reactive les boites de dialogues
End Function |
Voici ici comment est appelé ma fonction données dans ma procédure MAIN:
Call donnee("NB de 4RM TH", Mois, ETBS, "NB de 4RM TH", "tdb_dmre_fu.xls", "Tableau de bord véhicules", "Courbe d'évolution Véh " + Year + " ETBS.xls", ETBS)
à savoir que Mois contient "Janvier", ETBS contient "ABBEVILLE" et Year contient "2016".
Le problème est que j'obtient une érreur d'éxecution 1004 défini par l'objet ou l'application dès le premier find. Ce qui est étonnant c'est que je me sers d'une fonction que j'avais déja utilisé dans une précédente macro et qui fonctionnait correctement.
PS: J'ai entendu dire sur un forum que la méthode find ne perméttait que de chercher un mot unique, dans mon cas la valeur recherché à pour valeur "NB de 4RM TH", cela dit j'ai éssayer en remplaçant ce groupe nominal par un mot unique et j'ai obtenu le même méssage d'érreur, pouvez vous m'éclaircir sur le fait que la méthode find ne marche qu'avec un mot unique, et si tel est le cas existe t'il des astuces permettant de contourner ce problème
Cordialement
Alexis
Partager