Problème de boucle if elseif
Résolu
siamens_duj
-
siamens_duj -
siamens_duj -
Bonjour,
J'ai un soucis.
J'ai fais un petit code avec une condition If elseif cependant quand j'execute mon code j'ai une erreur.
En fait j'ai une InputBox "reference", quand j'ecris une valeur dans cette inputbox, cela va regarder toutes mes lignes de la colonne D de 5 à 200.
Si la reference entré correspond à une valeur dans la colonne D alors le contenue de toute la ligne se colorie en bleu sinon cela met " Cette reference n'existe pas".
Mon code ne fonctionne pas trop mal, le seul soucis c'est que, même quand la valeur correspond il m'affiche la MsgBox mais colorie bien la ligne en bleu ..
J'ai un soucis.
J'ai fais un petit code avec une condition If elseif cependant quand j'execute mon code j'ai une erreur.
En fait j'ai une InputBox "reference", quand j'ecris une valeur dans cette inputbox, cela va regarder toutes mes lignes de la colonne D de 5 à 200.
Si la reference entré correspond à une valeur dans la colonne D alors le contenue de toute la ligne se colorie en bleu sinon cela met " Cette reference n'existe pas".
Mon code ne fonctionne pas trop mal, le seul soucis c'est que, même quand la valeur correspond il m'affiche la MsgBox mais colorie bien la ligne en bleu ..
Reference = InputBox("Saisie de la référence de la pièce : ", Recherche)
For i = 5 To 200
If Reference = Cells(i, 4).Value Then
Cells(i, 4).EntireRow.Font.Color = RGB(4, 139, 154)
ElseIf Reference <> Cells(i, 4).Value Then GoTo fin
fin: MsgBox "Cette référence n'existe pas"
Exit Sub
2 réponses
bonjour,
Par contre, si tu travailles sous Excel VBA ... plutôt que de faire des boucles pour faire des recherches... regardes la méthode FIND
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
Reference = InputBox("Saisie de la référence de la pièce : ", Recherche)
For i = 5 To 200
If Reference = Cells(i, 4).Value Then
Cells(i, 4).EntireRow.Font.Color = RGB(4, 139, 154)
ElseIf Reference <> Cells(i, 4).Value Then
MsgBox "Cette référence n'existe pas"
Exit Sub
End if
Par contre, si tu travailles sous Excel VBA ... plutôt que de faire des boucles pour faire des recherches... regardes la méthode FIND
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
Bonjour a vous deux,
Le code de jordane45 marche tres bien (en dehors du elseif pas utile), pas comme le votre de depart
votre code modifie:
autre methode Find:
Le code de jordane45 marche tres bien (en dehors du elseif pas utile), pas comme le votre de depart
votre code modifie:
Sub test()
Reference = InputBox("Saisie de la référence de la pièce : ", Recherche)
For i = 5 To 200
If Reference = Cells(i, 4).Value Then
Cells(i, 4).EntireRow.Font.Color = RGB(4, 139, 154)
Exit Sub
End If
Next i
MsgBox "Cette référence n'existe pas"
End Sub
autre methode Find:
Sub test1()
Reference = InputBox("Saisie de la référence de la pièce : ", Recherche)
Nb = Application.CountIf(Range("D5:D200"), Reference)
If Nb = 1 Then
lig = 1
lig = Columns(4).Find(Reference, Cells(lig, 4), , xlWhole).Row
Cells(lig, 4).EntireRow.Font.Color = RGB(4, 139, 154)
Else
MsgBox "Cette référence n'existe pas"
End If
End Sub
Essayes ça :
Sub test() Dim valCel As String Reference = InputBox("Saisie de la référence de la pièce : ", Recherche) For i = 5 To 200 valCel = Cells(i, 4).Value If Reference = valCel Then Cells(i, 4).EntireRow.Font.Color = RGB(4, 139, 154) Else MsgBox "Cette référence n'existe pas" Exit Sub End If Next End SubMais par contre j'insiste... regardes la méthode FIND ...
Sub test2() Dim celTrouve As Range Dim Valeur_Cherchee As Variant Dim PlageDeRecherche As Range Dim I As Long Valeur_Cherchee = InputBox("Saisie de la référence de la pièce : ", Recherche) Set PlageDeRecherche = ActiveSheet.Range("D1:D200") Set celTrouve = Cherche(Valeur_Cherchee, PlageDeRecherche) If Not celTrouve Is Nothing Then I = celTrouve.Row Cells(I, 4).EntireRow.Font.Color = RGB(4, 139, 154) Else MsgBox "Cette référence n'existe pas" Exit Sub End If End Sub Function Cherche(ByVal Valeur_Cherchee, ByVal PlageDeRecherche As Range) As Range 'déclaration des variables : Dim Trouve As Range Dim AdresseTrouvee As String 'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole) Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole) 'traitement de l'erreur possible : Si on ne trouve rien : If Trouve Is Nothing Then 'ici, traitement pour le cas où la valeur n'est pas trouvée AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address Cherche = Nothing Else Set Cherche = Trouve End If Set PlageDeRecherche = Nothing Set Trouve = Nothing End Function