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 ?

    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
    2. Contributeur
      @Laetitiayaocette petite fenêtre donne deux information précieuses:
      - la ligne qui provoque l'erreur
      - une description précise de l'erreur
    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 ?
    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")
    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
  2. Bonjour le forum merci à tous , bonjour Yg_be, grand merci pour le temps accordé ton programme marche parfaitement
    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....
      1. Bonjour Thautheme, merci je vais modifier