VBA Problème Boucle If then ElseIf

Fermé
jouesedego Messages postés 1 Date d'inscription dimanche 22 juillet 2012 Statut Membre Dernière intervention 22 juillet 2012 - 22 juil. 2012 à 22:08
 Paf - 23 juil. 2012 à 23:41
Bonjour,

Je voudrai vous demander votre avis sur un petit programme que j'ai codé. Il a pour but, en résumé, de comparer deux colonnes se trouvant dans des feuilles différentes. Voici le code :

Sub Programmeboulot()



Dim Name As String
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim Valeur As Integer
Dim num As Integer



For i = 1 To Sheets.Count
With Sheets(i)
.Select
.Name = "feuille" + CStr(i)
End With

Next i


For i = 2 To Sheets.Count

Valeur = Sheets("feuille" + CStr(i)).Cells.Find("Boom", , , , , xlPrevious).Row


For j = 3 To Valeur

For k = 3 To 12

If Sheets("feuille" + CStr(i)).Cells(j, 1).Value = Sheets("feuille" + CStr(1)).Cells(k, 1).Value Then
Sheets("feuille" + CStr(1)).Cells(k, 4) = "OK"

ElseIf Sheets("feuille" + CStr(i)).Cells(j, 1).Value <> Sheets("feuille" + CStr(1)).Cells(k, 1).Value Then
Sheets("feuille" + CStr(1)).Cells(k, 4) = "KO"

End If

Next k

Next j

Next i



For i = 1 To Sheets.Count
With Sheets(i)
.Select
.Name = [C2]
End With
Next i


End Sub


Le problème se situe dans la boucle If. Même lorsque les valeurs comparées sont égales, la seconde partie de la boucle ( le ElseIf) s'exécute et écrit ce qui est demandé dans le cas où les valeurs ne seraient pas égales c'est à dire "KO".

J'ai retourné le problème dans tous les sens mais je n'ai pas trouvé de solutions. J'attends à présent qu'une bonne âme vienne éclairer ma lanterne.

Merci d'avance :-)


3 réponses

greg160 Messages postés 621 Date d'inscription lundi 28 juin 2010 Statut Membre Dernière intervention 21 septembre 2017 188
Modifié par greg160 le 22/07/2012 à 22:17
Tu utilise une mauvaise valeur
Je n'en sais pas plus mais une conclusion me l'indique
En tout cas tu ne peux changer un résultat sans changer de valeur!
Greg160
0
Je comprends pas ce que tu veux dire. En tout les cas, quand je fais un if simple, ça marche parfaitement. J'ai aussi essayé le select case pour détourner le problème mais j'ai le même problème.
0
bonjour,

Si on ne passe jamais dans le If, c'est qu'il y a une toujours une différence entre les deux éléments testés, un espace....
essayez de comparer le contenu et leur longueur ..... (par exemple) .

Par ailleurs, vous testez l'égalité de deux éléments puis, s'il ne sont pas égaux vous testez s'ils sont différents . S'ils ne sont pas égaux, c'est qu'ils sont différents, pas besoin de le tester!!
le code serait alors:
If Sheets("feuille" + CStr(i)).Cells(j, 1).Value = Sheets("feuille" + CStr(1)).Cells(k, 1).Value Then
      Sheets("feuille" + CStr(1)).Cells(k, 4) = "OK"
Else
      Sheets("feuille" + CStr(1)).Cells(k, 4) = "KO"
End If 

bonne suite
0