Message d'erreur instruction IF

Résolu
Bonjour le forum,
j'essaie d'éxecuter ce bout de code mais j'ai un message d'erreur
If S3.Range(Cells(5, 17), Cells(900, 17)) >= S3.Cells(3, 17) And S3.Range(Cells(5, 17), Cells(900, 17)) >= S3.Cells(2, 17) Then
        S3.Range(Cells(5, 37), Cells(900, 37)).Value = Application.WorksheetFunction.VLookup(S3.Cells(5, 36), S3.Range(Cells(5, 16), Cells(900, 17)), 2, False)

End If
mais j'ai un message d'erreur , j'ai beau verifié mais je ne trouve pas le problème. Pourriez - vous m'aider à regarder? je vous remercie infiniment.

cordialement

Laetitia

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

4 réponses

  1. Modérateur
    Bonjour,

    1 - Pour poster correctement son code sur le forum : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

    2 - Quel message d'erreur ?

    0
    1. Bonjour jordane 45,
      j'aurai du écrire le code comme suit:

      If S3.Range(Cells(5, 17), Cells(900, 17)) >= S3.Cells(3, 17) And S3.Range(Cells(5, 17), Cells(900, 17)) >= S3.Cells(2, 17) Then
      S3.Range(Cells(5, 37), Cells(900, 37)).Value = Application.WorksheetFunction.VLookup(S3.Cells(5, 36), S3.Range(Cells(5, 16), Cells(900, 17)), 2, False)
      
      End If


      j'ai la petite fenêtre du débug qui s'ouvre
      0
    2. Contributeur
      @Laetitiayaocette petite fenêtre donne deux information précieuses:
      - la ligne qui provoque l'erreur
      - une description précise de l'erreur
      0
    3. Modérateur
      Oui et la petite fenêtre... elle te dit "erreur d'incompatibilité de type ..'"
      Bref...
      Tu essayes de comparer un PLAGE de plusieurs cellules avec UNE seule cellule ?
      Pas sûr que ça fonctionne......

      Que cherches tu à faire exactement ??
      Que souhaites tu (rédigé dans un français clair et précis...) réellement comparer ?
      0
    4. D'accord ce que je souhaite faire:
      Si les valeurs présentes dans la plage "Q5:Q900" de ma feuille 3 sont supérieures et égales à la valeur presente en "Q3" et supérieures ou égales à la valeur presente en "Q2", alors ramener les valeurs de la plage "P5:Q900" deuxiéme colonne dans ma plage" AK5:AK900")
      0
    5. Contributeur
      @Laetitiayaomoi je commencerais ainsi, pour faire le test:
      Option Explicit
      
      Dim cell As Range, ok As Boolean, max, S3
      ok = True
      If S3.Cells(3, 17) > S3.Cells(2, 17) Then
          max = S3.Cells(3, 17)
      Else
          max = S3.Cells(2, 17)
      End If
      For Each cell In S3.Range(Cells(5, 17), Cells(900, 17))
          If cell < max Then
              ok = False
              Exit For
          End If
      Next cell
      If ok Then
          S3.Range(Cells(5, 37), Cells(900, 37)).Value = _
              Application.WorksheetFunction.VLookup(S3.Cells(5, 36), S3.Range(Cells(5, 16), Cells(900, 17)), 2, False)
      End If
      0
  2. Merci Yg_be , j'essaie et je te fais un retour
    0
    1. Bonjour le forum merci à tous , bonjour Yg_be, grand merci pour le temps accordé ton programme marche parfaitement
      0
      1. Bonjour le fil, bonjour le forum,

        J' aurais plutôt écrit :
        S3.Range(S3.Cells(5, 17), S3.Cells(900, 17))

        à la place de :
        S3.Range(Cells(5, 17), Cells(900, 17))

        Pour éviter toute confusion....
        0
        1. Bonjour Thautheme, merci je vais modifier
          0