VBA : Probleme lors de la Comparaison de deux cellules

  • Initiateur de la discussion Initiateur de la discussion fungio
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Dernière édition:
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
 
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 😀
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
177
Réponses
8
Affichages
233
Réponses
8
Affichages
466
Réponses
5
Affichages
232
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
169
Réponses
10
Affichages
281
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
Réponses
3
Affichages
665
Retour