VBA : Probleme lors de la Comparaison de deux cellules

fungio

XLDnaute Nouveau
Bonjour a tous

J'ai un probleme avec une maccro que j'ai réalisé. J'ai un grand tableau contenant des données

Colonne 1 : Un Numéro d'Identification
Colonne 2 : Une date
Les autres colonnes on s'en fiche

Le Numéro d'Identification peut donc revenir a plusieurs reprises avec des dates différentes

Ma maccro parcours ce tableau et recrée un autre tableau dans une autre feuille qui ne prend que la date la plus récente pour chaque Numéro d'Identification.

Mon probleme : Ma maccro me recréer le même tableau avec les doublons...

Code:
Sub Derniere_Date()
    Dim cpt As Integer
    Dim temp1, temp2 As Variant
    
    For i = 8 To 9999
        If Worksheets("Feuille1").Cells(i, 1).Value = "" Then
            cpt = i
            Exit For
        End If
    Next i
    
    For i = 8 To cpt 'on parcours le grand tableau
        For j = 8 To cpt 'on parcours notre nouveau tableau
            temp1 = Worksheets("Feuille1").Cells(i, 1).Value
            temp2 = Worksheets("Feuille2").Cells(j, 1).Value
            
            If temp1 = temp2 Then 'si on retrouve le meme numéro didentification
                'si la date est plus récente
                If Worksheets("Feuille2").Cells(j, 2).Value < Worksheets("Feuille1").Cells(i, 2).Value Then
                    For k = 2 To 10
                        Worksheets("Feuille2").Cells(j, k).Value = Worksheets("Feuille1").Cells(i, k).Value
                    Next k
                    Exit For
                End If
            ElseIf Worksheets("Feuille2").Cells(j, 1).Value = "" Then 'si la case dans le nouveau tableau est vide alors la valeur nest pas encore présente dans le tableau. On ajoute la valeur et on sors du for
                For k = 1 To 10
                    Worksheets("Feuille2").Cells(j, k).Value = Worksheets("Feuille1").Cells(i, k).Value
                Next k
                Exit For
            End If
        Next j
    Next i
End Sub

Il semblerait qu'on ne rentre jamais dans le premier If...
quelqu'un comprend il pourquoi ?
 

Pièces jointes

  • Suivi outillage moulage2.xlsm
    284 KB · Affichages: 51
Dernière édition:

WUTED

XLDnaute Occasionnel
Re : VBA : Probleme lors de la Comparaison de deux cellules

Bonjour Fungio,

Je te conseille de mettre ton fichier en pièce jointe parce que là, juste avec ta description, il n'est pas très évident de réfléchir à ton problème.

Cordialement,
WUTED
 
C

Compte Supprimé 979

Guest
Re : VBA : Probleme lors de la Comparaison de deux cellules

Salut Fungio, wuted ;)

Voici ton fichier avec un nouveau code explicité par les commentaires

A+
 

Pièces jointes

  • Fundio_Suivi outillage moulage2.xlsm
    238.3 KB · Affichages: 50
Dernière modification par un modérateur:

WUTED

XLDnaute Occasionnel
Re : VBA : Probleme lors de la Comparaison de deux cellules

Re Fungio,

Déjà je te conseille d'utiliser .Range("A65536").End(xlUp).Row pour trouver la dernière ligne non-vide de ton tableau. Ensuite, je crois juste que t'as mal placé ton Exit For.

VB:
   For i = 8 To 100
        'Debug.Print "i=" & i
        For j = 8 To 100
            'Debug.Print "j=" & j
            temp2 = Worksheets("Suivi outils de moulage").Cells(i, 1).Value
            temp1 = formNumber(Worksheets("Dernière sortie d'un outil").Cells(j, 1).Value, Len(temp2))
            temp2 = formNumber(temp2, Len(temp1))
            If temp1 = temp2 Then
                'Debug.Print Worksheets("Dernière sortie d'un outil").Cells(j, 1).Value & " = " & Worksheets("Suivi outils de moulage").Cells(i, 1).Value
                If Worksheets("Dernière sortie d'un outil").Cells(j, 2).Value < Worksheets("Suivi outils de moulage").Cells(i, 2).Value Then
                    'Debug.Print "on remplace"
                    For k = 2 To 10
                        Worksheets("Dernière sortie d'un outil").Cells(j, k).Value = Worksheets("Suivi outils de moulage").Cells(i, k).Value
                    Next k
                End If
                Exit For
            ElseIf Worksheets("Dernière sortie d'un outil").Cells(j, 1).Value = "" Then
                'Debug.Print "on ajoute " & j & " : " & Worksheets("Suivi outils de moulage").Cells(i, 1).Value
                For k = 1 To 10
                    Worksheets("Dernière sortie d'un outil").Cells(j, k).Value = Worksheets("Suivi outils de moulage").Cells(i, k).Value
                Next k
                Exit For
            End If
        Next j
    Next i

Essaie comme ça, ça a l'air de bien fonctionner chez moi.
Bonne journée,
WUTED

Edit : Salut Bruno :D
 

Discussions similaires

Réponses
11
Affichages
285

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972