.Range("A65536").End(xlUp).Rowretourne bien la dernière ligne remplie de la colonne A pour une version Excel ancienne (dont la limite du nombre de lignes était 65536). Les nouvelles versions ont une limite très nettement supérieure. On évite donc de préciser "en dur" ce nombre et on préfère lui substituer la propriété Rows.Count (aide vba à ouvrir aux rubriques Application.Rows, propriété et Count, propriété
Dim dd As Date
dd = Format(dd, "dd/mm/yyyy")
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate Sub ListBox1_Change()
Dim ln&, flag&
Dim derdate As Date
With Sheets("BD")
flag = 0
For ln = 2 To .Range("A" & Rows.Count).End(xlUp).Row 'parcourir, comme tu le fais, les cellules de la colonne A et pour chaque correspondance de valeur (avec la listbox)
If .Range("F" & ln) = .Range("F" & ln) = Val(ListBox1) And _
.Range("F" & ln) > CDate(derdate) Then 'si ce contenu est > que derdate
derdate = .Range("F" & ln).Value 'dire que derdate = ce contenu
TextBox1.Value = .Range("F" & ln).Value
TextBox2.Value = .Range("E" & ln).Value
flag = 1
Exit For
End If
Next ln
If flag = 0 Then
TextBox1.Value = "Pas d'entrée"
TextBox2.Value = "Pas d'entrée"
End If
End With
End Sub
.Range("F" & ln) > CDate(derdate)n'a aucune justification ni logique, puisque derdate est typée en date (on ne convertit pas une date en ... date ... elle est DEJA une date !
Private Sub ListBox1_Change()
Dim ln&, flag&
Dim derdate As Date
With Sheets("BD")
flag = 0
For ln = 2 To .Range("A" & Rows.Count).End(xlUp).Row 'parcourir, comme tu le fais, les cellules de la colonne A et pour chaque correspondance de valeur (avec la listbox)
If .Range("F" & ln) = .Range("F" & ln) = Val(ListBox1) Then
If CDate(.Range("F" & ln).Value) > derdate Then 'si ce contenu est > que derdate
derdate = CDate(.Range("F" & ln).Value) 'dire que derdate = ce contenu
TextBox1.Value = .Range("F" & ln).Value
TextBox2.Value = .Range("E" & ln).Value
flag = 1
Exit For
End If
End If
Next ln
If flag = 0 Then
TextBox1.Value = "Pas d'entrée"
TextBox2.Value = "Pas d'entrée"
End If
End With
End Sub
j'avoue que que je lève le drapeau blanc
Private Sub ListBox1_Change()
Dim ln&, flag&
Dim derdate As Date
With Sheets("BD")
flag = 0
For ln = 2 To .Range("A" & Rows.Count).End(xlUp).Row 'parcourir, comme tu le fais, les cellules de la colonne A et pour chaque correspondance de valeur (avec la listbox)
If .Range("F" & ln) = .Range("F" & ln) = Val(ListBox1) Then
If .Range("F" & ln) > derdate Then 'si ce contenu est > que derdate
derdate = .Range("F" & ln) 'dire que derdate = ce contenu
TextBox1.Value = .Range("F" & ln).Value
TextBox2.Value = .Range("E" & ln).Value
flag = 1
End If
End If
Next ln
If flag = 0 Then
TextBox1.Value = "Pas d'entrée"
TextBox2.Value = "Pas d'entrée"
End If
End With
End Sub
If .Range("A" & ln) = .Range("B" & ln) = Val(ListBox1)
If .Range("A" & ln) = (Me.ListBox1)
19 avril 2017 à 01:28
c'est très agréable de vous lire