Problème de recherche dans autre fichier

Résolu
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   -  
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,


Voici mon code :

Public MOIS_BOX As String
Public ANNEE_BOX As String

Public Sub CODE()
    Dim Wk As Workbook, x As String, i As Long, DL As Long, NumOT As String, lig As Long, N As Byte, N2 As Byte, Mois As String, Année As String
    
    Mois = MOIS_BOX
    
    'Mois = InputBox("Entrer le mois d'affretement en majuscules (Ex : JANVIER)")
    
'If Mois = "" Then Exit Sub
    
    'Annee = InputBox("Entrer l'année d'affrètement (Ex : 2015)")
    
    Annee = ANNEE_BOX
    
    
x = "affretement" & " " & Mois & " " & Annee
On Error Resume Next
Set Wk = Workbooks(x & ".xls")
If Err <> 0 Then
    Workbooks.Open Filename:="K:\AFFRETEMENT EN COURS\" & Annee & "\" & Mois & " " & Annee & "\" & x & ".xls"
End If

    DL = ThisWorkbook.ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
     For i = 1 To DL
        NumOT = ThisWorkbook.ActiveSheet.Cells(i, 2)
        N = Application.CountIf(Workbooks("affretement SEPTEMBRE 2015.xls").Worksheets("NATIONAL").Range("W:W"), NumOT)
        If N = 1 Then
            With Workbooks("affretement" & " " & Mois & " " & Annee & ".xls").Worksheets("NATIONAL")
                lig = 1
                lig = .Columns("W").Find(NumOT, .Cells(lig, "W"), , xlWhole).Row
                If Cells(lig, "T") = "" Then
                    ThisWorkbook.ActiveSheet.Cells(i, 14) = .Cells(lig, "T")
                End If
            End With
        End If
        N2 = Application.CountIf(Workbooks("affretement SEPTEMBRE 2015.xls").Worksheets("EXPORT").Range("W:W"), NumOT)
        If N2 = 1 Then
            With Workbooks("affretement" & " " & Mois & " " & Annee & ".xls").Worksheets("EXPORT")
                lig = 1
                lig = .Columns("W").Find(NumOT, .Cells(lig, "W"), , xlWhole).Row
                If Cells(lig, "T") = "" Then
                    ThisWorkbook.ActiveSheet.Cells(i, 14) = .Cells(lig, "T")
                End If
            End With
        End If
     Next i
     
Workbooks("POINTAGE FINAL 2.xlsm").Activate

End Sub



Le problème est que si je choisis un mois avec mon InputBox et une année, alors il va bien chercher dans l'autre fichier la bonne colonne pas de problème. Mais j'ai parfois plusieurs mois qui se chevauchent. Du coup, quand je relance la macro pour l'autre mois, la recherche que j'avais faite sur le mois d'avant disparaît...

J'ai pourtant ajouté la ligne

If Cells(lig, "T") = "" Then


En gros il faudrait que les lignes qui ont déjà été remplies par la première recherche ne soient plus prises en compte si je refais une recherche sur le mois suivant.

Merci d'avance pour votre aide.

PS : le code de mon Userform :

Public Sub CommandButton1_Click()

MOIS_BOX = ComboBox1.Value

ANNEE_BOX = ComboBox2.Value

Application.Run ("CODE")

Unload Me

End Sub

Private Sub UserForm_Initialize()

With Me.ComboBox1
            .AddItem "JANVIER"
            .AddItem "FEVRIER"
            .AddItem "MARS"
            .AddItem "AVRIL"
            .AddItem "MAI"
            .AddItem "JUIN"
            .AddItem "JUILLET"
            .AddItem "AOUT"
            .AddItem "SEPTEMBRE"
            .AddItem "OCTOBRE"
            .AddItem "NOVEMBRE"
            .AddItem "DECEMBRE"
      End With

With Me.ComboBox2
            .AddItem "2015"
            .AddItem "2016"
            .AddItem "2017"
            .AddItem "2018"
            .AddItem "2019"
            .AddItem "2020"
            .AddItem "2021"
            .AddItem "2022"
            .AddItem "2023"
            .AddItem "2024"
            .AddItem "2025"
            .AddItem "2026"
            .AddItem "2027"
            .AddItem "2028"
            .AddItem "2029"
            .AddItem "2030"
        End With
End Sub


Et le dernier code qui lance tout :

Sub CONTACTS()

UserForm1.Show

End Sub



Cordialement.
A voir également:

1 réponse

Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   61
 
Problème résolu.

Le problème venait de là :

N = Application.CountIf(Workbooks("affretement SEPTEMBRE 2015.xls").Worksheets("NATIONAL").Range("W:W"), NumOT)


Remplaçé par :

N = Application.CountIf(Workbooks("affretement" & " " & Mois & " " & Annee & ".xls").Worksheets("NATIONAL").Range("W:W"), NumOT)


Et même chose pour N2.
0