Bonjour,
beaucoup de choses à dire sur ton code 
1. mets un option explicit en tête de ton module (ligne n'est pas déclarée)
2. trop de commentaires tue les commentaires. Ça finit par compliquer la lecture. Inutile de plagier le code, mais apporter de l'info
"'Importe la valeur de la date dans la cellule active" n'apporte rien à ActiveCell = varDate"
"Loop" plutôt que "Fin de la boucle" (loop est toujours une fin de boucle) mérite une précision sur la boucle (Ligne <= Derligne)
3. Oublie définitivement les select et les références relatives (selection, cells, range, sheets...) au bénéfice d'objets workbook, worksheet etc ou de with et de références explicites (.cell, .range...). Ça provoque des affichages inutiles, c'est toujours un peu risqu, ça t'oblige à créer des varibles pour mémoriser les valeurs entre deux select etc... Aussi par exemple le fait que tu fasses directement le select sur ton find t'empêche de pouvoir tester le résultat et provoque l'erreur que tu as n cas de non trouvé (tu essayes de faire un select sur une place nulle).
Pour en revenir à la recherche dans le classeur, il suffit de la lancer sur chacune des feuilles du classeur (pas testé) :
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 28 29 30 31 32 33 34 35 36 37 38
| Option Explicit
Sub Imporation_données()
Dim Derligne As Long 'Variable pour le numéro de la dernière ligne
Dim Ligne As Long ' ligne courante
Dim Unefeuille As Worksheet ' pour parcourir les onglets du classeur cible
Dim Cible As Range ' cellule pour le résultat de la recherche
With Workbooks("Trasnfert_données.xlsx").Worksheets("Feuil1") 'feuille où les données sont copiées
''''''''''Boucle pour de recherche et d'importation des valeurs
Derligne = .Range("A1048576").End(xlUp).Row
Ligne = 2
Do While Ligne <= Derligne
' on balaye les feuilles du classeur suivi à la recherhce du nom
For Each Unefeuille In Workbooks("BDD_Suivi").Worksheets
'Recherche la cellule : .Cells(Ligne, 1) contient le nom
Set Cible = Unefeuille.Cells.Find(What:=.Cells(Ligne, 1), After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
If Not Cible Is Nothing Then 'trouvé -> on pose les valeurs
Cible.Offset(3, 1).Value = .Cells(Ligne, 2) 'Date
With Cible.Offset(3, 2) ' Mesure
.NumberFormat = "##0.00"
.Value = .Cells(Ligne, 3)
End With
End If ' trouvé
Next Unefeuille
Ligne = Ligne + 1 ' au suivant
Loop ' jusqu'à ligne > Derligne
End With ' Trasnfert_données.xlsx
End Sub |
Partager