Problème recherche valeur non trouvée avec macro

Bonjour tout le monde,

Je suis à la recherche d'une solution à mon problème et, en fouillant sur le forum, je n'ai pas trouvé de solution à mon souci. Je précise que je suis débutant en programmation...

Le voici:

J'ai 2 onglets feuil1et Paramètres

Dans l'onglet paramètres j'ai une liste de valeurs de B3 à B5

La macro que j'ai faite cherche la valeur en B3 (de l'onglet paramètres) dans feuil1 et la copie plus loin en D3 puis cherche la valeur de B4 et fait de même en D4 etc etc...

Mon souci est que dès qu'une valeur de l'onglet Paramètres n'est pas trouvée en Feuil1, la macro s'arrête et ne fait pas les recherches suivantes.

Voici le code que j'ai enregistré puis arrangé:

Range("A2").Select

Cells.Find(What:=Sheets("Paremètres").Range("B3"), after:=ActiveCell, LookIn:=xlFormulas, LookAt _

:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _

False, SearchFormat:=False).Activate

Selection.Copy

Range("D3").Select

ActiveSheet.Paste

Range("A2").Select

Cells.Find(What:=Sheets("Paremètres").Range("B4"), after:=ActiveCell, LookIn:=xlFormulas, LookAt _

:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _

False, SearchFormat:=False).Activate

Selection.Copy

Range("D4").Select

ActiveSheet.Paste

Range("A2").Select

Cells.Find(What:=Sheets("Paremètres").Range("B5"), after:=ActiveCell, LookIn:=xlFormulas, LookAt _

:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _

False, SearchFormat:=False).Activate

Selection.Copy

Range("D5").Select

ActiveSheet.Paste

Je pense qu'il doit y avoir beaucoup plus simple au niveau de la longueur et du code (notamment avec des IF) mais je ne suis pas encore assez rodé pour maîtriser le sujet.

Je précise également que l'énoncé est un peu simplifié, en réalité il y a une 50aine de valeurs.

Merci beaucoup pour votre aide!

Anthony

Bonjour

Le plus simple c'est surtout de fournir un fichier

Essayes

Sub test()
Dim J As Long
Dim Cel As Range

  For J = 3 To 5
    Set Cel = Cells.Find(What:=Sheets("Paremètres").Range("B" & J), after:=ActiveCell, LookIn:=xlFormulas, _
          LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
    If Not Cel Is Nothing Then
      Range("D" & J) = Cel
    End If
  Next J
End Sub

Bonjour,

Merci pour votre réponse. Effectivement un fichier en guise d'exemple sera plus explicite.

En lancant la macro test, cette dernière trouve les 3 valeurs listées dans l'onglet Paramètres mais affiche une erreur car elle ne trouve pas les valeurs restantes.

J'aimerais faire en sorte que la macro continue à tourner même si elle ne trouve pas les valeurs restantes...

Si elle trouve la valeur en B3, elle copie colle les données correspondantes de l'onglet TCD à feuil1

Si elle ne trouve pas la valeur en B3, ignorer l'erreur et chercher la valeur en B4...

Désolé mais cela fait peu de temps que je traite avec les différents codes...

Merci encore

Anthony

57exemple.zip (28.49 Ko)

Bonjour

Remplaces ta macro par celle-ci

Elle est un peu compliquée car la 1ère recherche est collée à la ligne de titre

On pourrait passer par Selection comme tu as fait, mais j'aime pas (quand je peux éviter)

Sub test1()
Dim J As Long
Dim Cel As Range
Dim Col As Integer
Dim Lig As Long

  For J = 3 To Sheets("Paramètres").Range("B" & Rows.Count).End(xlUp).Row
    Set Cel = Cells.Find(What:=Sheets("Paramètres").Range("B" & J), after:=ActiveCell, LookIn:=xlFormulas, _
          LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
    If Not Cel Is Nothing Then
      Col = Cells(Cel.Row, Columns.Count).End(xlToLeft).Column
      Lig = Cells(Cel.Row, Col).End(xlDown).Row
      Range(Cells(Cel.Row, Cel.Column), Cells(Lig, Col)).Copy Sheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Offset(4, 0)
    End If
  Next J
End Sub
Rechercher des sujets similaires à "probleme recherche valeur trouvee macro"