Public derniere_ligne As Integer
Public ligne As Integer
Public valeur_conca As String
Public valeur_test As String
Public presence_ligne_equivalente As Boolean
Public ligne_archive As Integer
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row = 4 And Target.Column = 14 Then
'création d'une variable indiquant le numéro de la dernière ligne plus 1
derniere_ligne = Sheets("ARCHIVE").Range("A65000").End(xlUp).Row + 1
'pour toutes les lignes de 8 à 22 (fait référence aux caractéristiques du formulaire)
For ligne = 8 To 22
'si la cellule de l'identifiant n'est pas vide alors :
If Cells(ligne, 1).Value <> "" Then
'réalisation de la valeur de test : 1) une variable booléenne 2) la valeur concaténée
presence_ligne_equivalente = False
valeur_conca = Range("M25").Value & Cells(ligne, 1).Value & Cells(ligne, 11).Value & Cells(ligne, 12).Value & Cells(ligne, 13).Value
'vérfication que la valeur n'existe pas
For ligne_archive = 4 To derniere_ligne - 1 '(pour chaque fichier de ARCHIVE)
'réaliser la valeur concaténée
valeur_test = Sheets("ARCHIVE").Cells(ligne_archive, 1).Value & Sheets("ARCHIVE").Cells(ligne_archive, 2).Value & Sheets("ARCHIVE").Cells(ligne_archive, 7).Value & Sheets("ARCHIVE").Cells(ligne_archive, 8).Value & Sheets("ARCHIVE").Cells(ligne_archive, 9).Value
'tester cette valeur à celle de la ligne en cours
If valeur_test = valeur_conca Then
presence_ligne_equivalente = True
End If
Next
'si le test n'a pas donné de résultat, copier les nouvelles lignes
If Not (presence_ligne_equivalente) Then
'copie des données : ici, je préfère utiliser 'cells' que 'range' cela permet d'utiliser plus facilement mes deux variables, ligne et dernière ligne
Sheets("ARCHIVE").Cells(derniere_ligne, 1).Value = Range("M25").Value
Sheets("ARCHIVE").Cells(derniere_ligne, 2).Value = Cells(ligne, 1).Value
Sheets("ARCHIVE").Cells(derniere_ligne, 7).Value = Cells(ligne, 11).Value
Sheets("ARCHIVE").Cells(derniere_ligne, 8).Value = Cells(ligne, 12).Value
Sheets("ARCHIVE").Cells(derniere_ligne, 9).Value = Cells(ligne, 13).Value
'incrémentation de la dernière ligne
derniere_ligne = derniere_ligne + 1
End If
'cette méthode permet de prévenir le cas ou une ligne est blanche dans la feuille H S, car on connait nos utilisateurs...ils font toujours ce qui n'est pas prévu !
'ici, la seule contrainte : avoir l'identifiant de rempli
End If
Next ligne
Range("A4").Select
End If
End Sub