Message d'erreur instruction IF

Résolu
Laetitiayao Messages postés 54 Statut Membre -  
Laetitiayao Messages postés 54 Statut Membre -
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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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. Laetitiayao Messages postés 54 Statut Membre
       
      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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Laetitiayao Messages postés 54 Statut Membre
         
        cette petite fenêtre donne deux information précieuses:
        - la ligne qui provoque l'erreur
        - une description précise de l'erreur
        0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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
    3. Laetitiayao Messages postés 54 Statut Membre
       
      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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Laetitiayao Messages postés 54 Statut Membre
         
        moi 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. Laetitiayao Messages postés 54 Statut Membre
     
    Merci Yg_be , j'essaie et je te fais un retour
    0
  3. Laetitiayao Messages postés 54 Statut Membre
     
    Bonjour le forum merci à tous , bonjour Yg_be, grand merci pour le temps accordé ton programme marche parfaitement
    0
  4. ThauTheme Messages postés 1564 Statut Membre 160
     
    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. Laetitiayao Messages postés 54 Statut Membre
       
      Bonjour Thautheme, merci je vais modifier
      0