Bonjour,
je cherche à créer une macro pour voir les valeurs d'une colonne qui sont déjà présentes dans les colonnes précédentes

voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Private Sub rechercher_Click()
'recherche si les jobs de la dernière semaine sont déjà apparus auparavant
Dim colonne As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim marque As Integer
Dim chaine As String
marque = 0
i = 2
j = 1
chaine = "Voici les jobs dont c'est la première apparition : "
If (Num_semaine.Value < 0 Or Num_semaine.Value = "" Or Num_semaine.Value > Sheets.Count - 1) Then
    MsgBox ("Valeur de semaine incorrecte")
Else
    colonne = Num_semaine.Value
    For k = 2 To 51 'on parcourt les 50 lignes de la derniere colonne
 
        Do While marque = 0
            If (Worksheets(1).Range(Cells(k, colonne), Cells(k, colonne)).Value = Worksheets(1).Range(Cells(i, j), Cells(i, j)).Value) Then
               marque = 1 'on arrete la recherche car la valeur a été trouvée
            Else 'la valeur n'a pas été trouvée
                If (i <= 51) Then 'si on n'est pas à la derniere ligne de la colonne on passe à la ligne suivante
                    i = i + 1
                Else 'Si on est à la derniere ligne de la colonne alors on passe à la premiere ligne de la colonne suivante
                    i = 2
                    j = j + 1
                    If (j = colonne) Then 'si on n'a pas trouvé la valeur alors on arrete la recherche et on ajoute le nom à la chaine de caractere
                        marque = 1
                        chaine = chaine & Worksheets(1).Range(Cells(k, colonne), Cells(k, colonne)).Value
                    End If
                End If
            End If
        Loop
        marque = 0
    Next
MsgBox (chaine)
End If
End Sub
"Num_semaine" est recupérée dans la feuille excel.

Le problème est que le message apparaissant ne me donne que le résultat de la premiere ligne testé(en fait ici la deuxieme ligne de la feuille car la premiere contient les libéllés), c'est à dire que si je lance la recherche pour la colonne 1, je devrais avoir toutes lse lignes car elles ne sont jamais apparues avant mais je n'ai que la premiere (si je met "for k=3 to 51", jai alors la ligne suivante etc.....) c'est donc je pense un probleme au niveau de la boucle mais je ne vois pas où, j'ai pourtant bien réaffecté la valeur 0 à "marque" apres le while.

Merci de vos réponses