Code qui fonctionnait mais qui ne fonctionne plus

Bonjour,

J'ai un code qui fonctionnait bien avant mais qui déconne désormais.

Set Trouve = PlageDeRecherche.Rows.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
AdresseTrouvee = Trouve.Row - 1

 Rows("10:" & AdresseTrouvee).Select
 Selection.EntireRow.Hidden = True

ca bloque sur adresse trouvee..

je ne vois pas ce qui bloque...

une idée?

Bonjour,

Si PlageDeRecherche est un Objet Range, il n'est pas utile (selon moi...) d'y adjoindre .Rows.

De plus, tu ne traites pas, dans ce code, le cas ou Trouve = Nothing (la valeur n'a pas été trouvée).

Donc, ton code devient :

    Set Trouve = PlageDeRecherche.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
    If Not Trouve Is Nothing Then
        'Ici on suppose que l'on ne trouvera pas la valeur cherchée en ligne 1 ==> sinon plantage !
        AdresseTrouvee = Trouve.Row - 1
        Rows("10:" & AdresseTrouvee).Select
        Selection.EntireRow.Hidden = True
    Else
        MsgBox "La valeur : " & Valeur_Cherchee & " n'a pas été trouvée."
    End If

merci cela me dit que la valeur n'est psa trouvée mais pourtant elle y est bien.

Set PlageDeRecherche = Range("C10:C" & Range("C300").End(xlUp).Row)

la valeur est présente en C65...

Trois choix alors :

1- soit votre vlaeur_cherchee fait partie de la cellule C65 (du style vous cherchez "valeur" et la cellule contient : "Ce message n'a pas de valeur administrative".

=> dans ce cas, il convient de remplacer, dans la méthode Find, le paramètre Lookat:=xlWhole par : LookAt:=xlPart

2- une erreur de type. Par exemple vous cherchez une valeur numérique alors qu'elle est stockée en texte (mauvais exemple, ceci devrait fonctionner, mais c'est pour mieux me faire comprendre)

3- une erreur d'orthographe. Vérifiez bien que, dans la cellule, il n'y ai pas un espace en trop par exemple...

Bonjour,

merci pour ce retour.

la valeur cherchée est sous cette forme

Valeur_Cherchee = "07/" & Format(Month(Now()), "00") & "/" & Year(Date)

j'ai remplacé LookAt par xlPart mais le problème reste similaire

la cellule C65 comme les autres cellules de la colonne sont complétées comme ceci:

=DATE(ANNEE($C$10);MOIS($C$10)+$D64;JOUR($C$10))

en espérant que cela puisse éclaircir la situation

ps :

Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As Date, AdresseTrouvee As String

Ok.

C'est donc bien un problème de type.

Utilise CDate : Valeur_Cherchee = CDate("01/" & Format(Month(Now()), "00") & "/" & Year(Date))

Dim Valeur_Cherchee As Date, PlageDeRecherche As Range, Trouve As Range, AdresseTrouvee As Integer
Valeur_Cherchee = CDate("01/" & Format(Month(Now()), "00") & "/" & Year(Date))
Set PlageDeRecherche = Range("C10:C" & Range("C300").End(xlUp).Row)
Set Trouve = PlageDeRecherche.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
    If Not Trouve Is Nothing Then
       AdresseTrouvee = Trouve.Row - 1
        Rows("10:" & AdresseTrouvee).Select
        Selection.EntireRow.Hidden = True
    Else
        MsgBox "La valeur : " & Valeur_Cherchee & " n'a pas été trouvée."
    End If

j'ai testé avec le code corrigé mais le problème reste le même

If ComboBox1.Value = "A venir" Then

Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As Date, AdresseTrouvee As Integer

Set PlageDeRecherche = Range("C10:C" & Range("C300").End(xlUp).Row)
Valeur_Cherchee = CDate("07/" & Format(Month(Now()), "00") & "/" & Year(Date))

  Set Trouve = PlageDeRecherche.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
    If Not Trouve Is Nothing Then
        'Ici on suppose que l'on ne trouvera pas la valeur cherchée en ligne 1 ==> sinon plantage !
       AdresseTrouvee = Trouve.Row - 1
        Rows("10:" & AdresseTrouvee).Select
        Selection.EntireRow.Hidden = True
    Else
        MsgBox "La valeur : " & Valeur_Cherchee & " n'a pas été trouvée."
    End If
     End If

Voila un fichier qui retrace ce probleme

19test.xlsm (21.54 Ko)

Bonjour,

ma petite contribution:

21test.xlsm (22.61 Ko)
Option Explicit
Public Sub test()
Dim ws As Worksheet
Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As Date
Dim AdresseTrouvee As Integer

    Set ws = ActiveSheet
    Valeur_Cherchee = DateSerial(Year(Date), Month(Date), 7)

    With ws.Range("C10").CurrentRegion
        Set Trouve = .Find(what:=Valeur_Cherchee, LookIn:=xlValues, LookAt:=xlWhole)
        If Not Trouve Is Nothing Then
            'Ici on suppose que l'on ne trouvera pas la valeur cherchée en ligne 1 ==> sinon plantage !
            AdresseTrouvee = Trouve.Row - 1
            ws.Rows("10:" & AdresseTrouvee).EntireRow.Hidden = True
        Else
            MsgBox "La valeur : " & Valeur_Cherchee & " n'a pas été trouvée."
        End If
    End With

    Set Trouve = Nothing
    Set ws = Nothing

End Sub

parfait merci!:!!

Rechercher des sujets similaires à "code qui fonctionnait fonctionne"