Ligne 18
If ActiveCell.Value > Range("D16" ).Value Or ActiveCell.Value < Range("D16" ) Then
En gros :a > b Ou a < b. Tu sais tu peux l'écrire a <> b
Ligne 21
ActiveCell.Offset(1, 0).Range("A1" ).Select
Keskesékesa ? Pourquoi ce Range(A1) ?
Ligne 8 à 15 : Je hais les Select/Selection/ActiveTruc & autres Copy/Paste/CutCopyMode. (Oui, je sais, c'est l'enregistreur qui te l'a fait)
Ce morceau de code, revu et corrigé (à bien étudier, si tu veux)
Sheets("liste des passagers").("B2:BS308").Copy Destination:=Sheets("Recherchepassager").Range("B30")
Sheets("Recherchepassager" ).Range("B30:I30" ).Interior.ColorIndex = 15
Et oui, c'est tout
------------------------
Ligne 17 à 23. Supprimer des lignes dans un tableau. (dans Excel en particulier, mais pour tout tableau en général et en tout langage)
Soit le tableau suivant :
1. AAAA
2. BBBB
3. CCCC
L'algorithme suivant est faux :
Pour i de 1 à 3
Si condition Alors Supprimer Ligne i
En effet, supposons que la condition nous fasse vouloir supprimer les lignes AAAA et BBBB.
Déroulons le code:
i=1. La condition est vrai. Supprimons la ligne 1 :
1. BBBB
2. CCCC
i=2. Et hop, première erreur, on vient de rater la ligne des BBBB !. Pour CCCC la condition n'est pas remplie.
i=3. Et hop, encore une erreur, il n'y a plus de ligne 3. Erreur ! (Pas d'erreur sous excel, le tableau fait toujours 65536 lignes)
La solution : Partir du bas du tableau et remonter
Pour i de 3 à 1
Si condition Alors Supprimer Ligne i
Traduit en VB :
For i = 400 To 34 Step -1
If Range("E" & i).Value <> Range("D16" ).Value Then Rows(i).Delete
Next i
------------------------
Proposition finale.
Tu peux te l'approprier complètement juste en comprenant tout ce code
Sub recherchepassager()
' (c) aud1885 (+ un peu de PPC)
Sheets("liste des passagers").("B2:BS308").Copy Destination:=Sheets("Recherchepassager").Range("B30").
Sheets("Recherchepassager").Range("B30:I30").Interior.ColorIndex = 15
For i = 400 To 34
If Sheets("Recherchepassager").Range("E" & i).Value <> Sheets("Recherchepassager").Range("D16").Value Then Rows(i).Delete
Next i
reponse = MsgBox("La recherche est terminée. Si le résultat n'est pas satisfaisant, " & _
"veuillez relancer une recherche avec un critère différent.", _
vbOKOnly + vbInformation, "Information")
End Sub