VBA - Erreur de Syntaxe If then Imbriqué

Bonjour à tous,

Je construit une macro qui doit :

- me dire si un code situé dans une feuille est aussi présent dans une seconde feuille

- Dans le cas ou celui ci est présent dans les deux feuilles, chercher si une date présente dans la feuille 1 est située entre deux dates présente dans la feuille 2

Pour ça j'ai donc essayer d'imbriquer deux si, mais ma macro me ressort toujours une erreur de syntaxe quand j'essaie d'imbriquer ceux ci et je ne vois pas d'où ca vient, est ce que quelqu'un saut me dire pourquoi ?

Merci d'avance ! :)

Sub TestV2()

Dim FL1 As Worksheet
Dim FL2 As Worksheet
Dim c As Range, Donnee As String
Dim d As Range, Donnee2 As String

    Set FL1 = Worksheets("TEST") 'Le fichier o? on colle
    Set FL2 = Worksheets("CHERCHE") 'Le fichier o? on cherche

    For NoLig = 2 To FL1.Range("B65535").End(xlUp).Row
        Donnee = FL1.Cells(NoLig, 2)  'ajout?

        With FL2.Range("B1:B" & FL2.Range("B5535").End(xlUp).Row) 'tu d?signes ta plage de recherche
            Set c = .Find(Donnee, LookIn:=xlValues)

            If Not c Is Nothing Then
                FL1.Cells(NoLig, 17) = "Date ? contr?ler"
              Else
                FL1.Cells(NoLig, 17) = "Ok"
            End If
            Set c = Nothing
        End With

        If FL1.Range("B1:B" & FL1.Range("B5535").End(xlUp).Row) = FL2.Range("B1:B" & FL2.Range("B5535").End(xlUp).Row) Then
        If FL1.Range("o1:o" & FL1.Range("B5535").End(xlUp).Row)<= FL2.Range("g1:g" & FL2.Range("B5535").End(xlUp).Row)

        And FL1.Range("o1:o" & FL1.Range("B5535").End(xlUp).Row)=> FL2.Range("g1:g" & FL2.Range("B5535").End(xlUp).Row)

        Then FL1.Cells(NoLig, 18) = "Anomalie"

        Else: FL1.Cells(NoLig, 18) = "Ok"
        Else: FL1.Cells(NoLig, 18) = "Non pr?sent"

        End If
        End If

    Next

End Sub

Bonjour Dorian,

Que veux-tu faire avec ces lignes ?

If FL1.Range("B1:B" & FL1.Range("B5535").End(xlUp).Row) = FL2.Range("B1:B" & FL2.Range("B5535").End(xlUp).Row) Then
        If FL1.Range("o1:o" & FL1.Range("B5535").End(xlUp).Row)<= FL2.Range("g1:g" & FL2.Range("B5535").End(xlUp).Row)

        And FL1.Range("o1:o" & FL1.Range("B5535").End(xlUp).Row)=> FL2.Range("g1:g" & FL2.Range("B5535").End(xlUp).Row)

Sinon les conditions c'est : If ... Then ... Else... Endif

Et les instructions doivent se suivre

@+

Bonjour,

Ce sont ces lignes qui doivent premièrement chercher les corrélation des codes en colonne B des feuilles 1 et 2. Si corrélation je voudrais tester si la date feuille 1 ( colone o ) est située entre la date de début et la date de fin ( colonne f et g)

Dorian

Re,

Quand est-ce que

FL1.Cells(NoLig, 18) = "Anomalie" ?

FL1.Cells(NoLig, 18) = "Ok" ?

FL1.Cells(NoLig, 18) = "Non pr?sent" ?

Sinon un début de code

Sub TestV2()
  Dim FL1 As Worksheet
  Dim FL2 As Worksheet
  Dim c As Range, Donnee As String
  Dim d As Range, Donnee2 As String
  Dim dLig1 As Long, dLig2 As Long, NoLig As Long

  Set FL1 = Worksheets("TEST")                   'Le fichier o? on colle
  dLig1 = FL1.Range("B" & Rows.Count).End(xlUp).Row
  Set FL2 = Worksheets("CHERCHE")                'Le fichier o? on cherche
  dLig2 = FL2.Range("B" & Rows.Count).End(xlUp).Row

  For NoLig = 2 To dLig1
    Donnee = FL1.Cells(NoLig, 2)                 'ajout?
    ' Pour la plage de recherche
    With FL2.Range("B1:B" & dLig2)
      Set c = .Find(Donnee, LookIn:=xlValues)
      If Not c Is Nothing Then
        FL1.Cells(NoLig, 17) = "Date ? contr?ler"
      Else
        FL1.Cells(NoLig, 17) = "Ok"
      End If
      Set c = Nothing
    End With
    ' Tester date
    If FL1.Range("O" & NoLig) >= FL2.Range("F" & NoLig) And _
      FL1.Range("O" & NoLig) <= FL2.Range("G" & NoLig) Then
      ' La date est située dans la plage
    Else
      ' La date n'est pas dans la plage
    End If
  Next
End Sub

@+

Alors :

1 . FL1.Cells(NoLig, 18) = "Anomalie" ?

1. Quand : pour un code similaire ( colonne b feuille1 et 2) la date de feuille 1 (col O) est située entre celles de la feuille 2 (colonne f et g)

2 . FL1.Cells(NoLig, 18) = "Ok" ?

2. Quand : pour un code similaire ( colonne b feuille1 et 2) la date de feuille 1 (col O) n'est pas située entre celles de la feuille 2 (colonne f et g)

3 .FL1.Cells(NoLig, 18) = "Non pr?sent" ?
3 : Quand pas de correspondance de code dans les feuilles ( non nécessaire comme info mais c'était pour "compléter" mon else)

Merci pour lé début de code, je regarde ça !

J'ai pu ajouter le Then et Else que je souhaite afin que soit renvoyé ce qu'il faut dans la colonne 18, cependant le If n'a pas l'air de fonctionner comme il faut. De ce que je vois, il ne va pas chercher la correspondance entre les code de la feuille 1 pour aller chercher les dates des lignes présentant le même code. Est ce quelqu'un saurait comment rajouter cette variable : aller chercher les colonnes feuille2 ou on a le meme code que en ligne 1 ? Pour ensuite lancer mon if

Merci d'avance !

 ' Tester date
    If FL1.Range("O" & NoLig) >= FL2.Range("F" & NoLig) And _
      FL1.Range("O" & NoLig) <= FL2.Range("G" & NoLig) Then
      ' La date est située dans la plage
      FL1.Cells(NoLig, 18) = "Anomalie"
    Else
      ' La date n'est pas dans la plage
      FL1.Cells(NoLig, 18) = "Ok"
    End If
  Next
End Sub
Rechercher des sujets similaires à "vba erreur syntaxe then imbrique"