bonjour en effet je n'ai pas préciser c'est sur la ligne For Each cle In tab_gedix
If tab_mecano.exists(cle) = True And tab_kardex.exists(cle) = False Then
d'après ce que je peux comprendre elle ne prends pas en compte les deux conditions.
ci dessous ma macro complète:
Sub lecture()
' lecture des références
Dim tab_kardex
Set tab_kardex = CreateObject("scripting.dictionary")
Dim tab_mecano
Set tab_mecano = CreateObject("scripting.dictionary")
Dim tab_gedix
Set tab_gedix = CreateObject("scripting.dictionary")
'-------------------------------------------------------------------
With Sheets("kardex")
row_min = .UsedRange.Row
row_max = row_min + .UsedRange.Rows.Count - 1
For l = 2 To row_max
tab_kardex(UCase(Trim(.Cells(l, 1)))) = l
Next
End With
'-------------------------------------------------------------------
With Sheets("mecano")
row_min = .UsedRange.Row
row_max = row_min + .UsedRange.Rows.Count - 1
For l = 2 To row_max
tab_mecano(UCase(Trim(.Cells(l, 1)))) = l
Next
End With
'-------------------------------------------------------------------
With Sheets("gedix")
row_min = .UsedRange.Row
row_max = row_min + .UsedRange.Rows.Count - 1
For l = 2 To row_max
tab_gedix(UCase(Trim(.Cells(l, 1)))) = l
Next
End With
'-------------------------------------------------------------------
'-------------------------------------------------------------------
' present dans kardex mecano gedix (feuille 3)donc ok
' recopie gedix en OK
'-------------------------------------------------------------------
l2 = 2: ' ligne de départ dans feuille "
For Each cle In tab_kardex
If tab_mecano.exists(cle) = True And tab_gedix.exists(cle) = True Then
l1 = tab_gedix(cle) ' recupère la ligne dans gedix
For b = 1 To 5 ' nombre de colonne dans gedix
Sheets("ok").Cells(l2, b) = Sheets("gedix").Cells(l1, b)
Next
l2 = l2 + 1
End If
Next
'-------------------------------------------------------------------
' present dans mecano gedix (feuille 5)pas dans kardex
'-------------------------------------------------------------------
l2 = 2: ' ligne de départ dans feuille "
For Each cle In tab_gedix
If tab_mecano.exists(cle) = True And tab_kardex.exists(cle) = False Then
l1 = tab_gedix(cle) ' recupère la ligne dans gedix
For b = 1 To 5 ' nombre de colonne dans gedix
Sheets("pas dans kardex").Cells(l2, b) = Sheets("gedix").Cells(l1, b)
Next
l2 = l2 + 1
End If
Next
'-------------------------------------------------------------------
' present dans mecano et kardex mais pas dans gedix
'-------------------------------------------------------------------
l2 = 2: ' ligne de départ dans feuille "
For Each cle In tab_mecano
If tab_kardex.exists(cle) = True And tab_gedix.exists(cle) = False Then
l1 = tab_mecano(cle) ' recupère la ligne dans mecano
For b = 1 To 9 ' nombre de colonne dans mecano
Sheets("a créer dans gedix").Cells(l2, b) = Sheets("mecano").Cells(l1, b)
Next
l2 = l2 + 1
End If
Next
'-------------------------------------------------------------------
' present dans gedix et kardex mais pas mecano
'-------------------------------------------------------------------
l2 = 2: ' ligne de départ dans feuille "
For Each cle In tab_gedix
If tab_kardex.exists(cle) = True And tab_mecano.exists(cle) = False Then
l1 = tab_gedix(cle) ' recupère la ligne dans gedix
For b = 1 To 5 ' nombre de colonne dans gedix
Sheets("a créer dans mecano").Cells(l2, b) = Sheets("gedix").Cells(l1, b)
Next
l2 = l2 + 1
End If
Next
'-------------------------------------------------------------------
' present dans mecano mais pas gedix
'-------------------------------------------------------------------
l2 = 2: ' ligne de départ dans feuille "
For Each cle In tab_mecano
If tab_gedix.exists(cle) = False Then
l1 = tab_mecano(cle) ' recupère la ligne dans mecano
For b = 1 To 9 ' nombre de colonne dans mecano
Sheets("mecano mais pas gedix").Cells(l2, b) = Sheets("mecano").Cells(l1, b)
Next
l2 = l2 + 1
End If
Next
'-------------------------------------------------------------------
' present dans mecano mais pas kardex
'-------------------------------------------------------------------
l2 = 2: ' ligne de départ dans feuille "
For Each cle In tab_mecano
If tab_kardex.exists(cle) = False Then
l1 = tab_mecano(cle) ' recupère la ligne dans mecano
For b = 1 To 9 ' nombre de colonne dans mecano
Sheets("mecano mais pas kardex").Cells(l2, b) = Sheets("mecano").Cells(l1, b)
Next
l2 = l2 + 1
End If
Next
'-------------------------------------------------------------------
' present dans gedix mais pas kardex
'-------------------------------------------------------------------
l2 = 2: ' ligne de départ dans feuille "
For Each cle In tab_gedix
If tab_kardex.exists(cle) = False Then
l1 = tab_gedix(cle) ' recupère la ligne dans gedix
For b = 1 To 4 ' nombre de colonne dans gedix
Sheets("gedix mais pas kardex").Cells(l2, b) = Sheets("gedix").Cells(l1, b)
Next
l2 = l2 + 1
End If
Next
End Sub
et en pièce joints le fichier complet.
merci d'avance