[VBA-E] probleme de boucle
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:
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