Erreur 91

Bonjour à tous ,

Je rencontre actuellement un problème assez bizarre, à l’exécution de ma macro il est noté erreur 91 : variable object ou variable de bloc with non definie.

Apres exécution pas a pas c'est à cette endroit la que la macro affiche ce message d'erreur :

Set PlageDeRecherche = Worksheets("Donnees_sources").Columns(4)
            Set localise = PlageDeRecherche.Cells.Find(What:=Date_de_valeur, LookAt:=xlWhole) 
                premiere_ligne = localise.Row

Pourtant lorsque j’exécute la macro via un bouton sur une feuille elle fonctionne, aucun message d'erreur ne s'affiche.

En survolant "localise" il est ecrit nothing alors que on retrouve bien la date dans la colonne 4.

auriez vous une idée du probleme ? bien qu'elle fonctionne avec le bouton, j'aimerai descendre dans le code via F8 pour verifier une autre parti de mon code mais je suis bloqué a ce niveau

Merci de votre aide

Bonjour,

essaie ceci

date_de_valeur = CDate("01/01/2001") '<- date convertie en format excel 
Set PlageDeRecherche = Worksheets("Donnees_sources").Columns(4)
            Set localise = PlageDeRecherche.Cells.Find(What:=date_de_valeur, LookIn:=xlFormulas, LookAt:=xlWhole)
                premiere_ligne = localise.Row

Bonjour,

Si la date n'est pas trouvée --> variable (Date_de_valeur)

localise = Nothing

et donc

localise.Row

provoque l'erreur 91

Salut samuxxx, Isa,

pour compléter i20100, sauf si tu es absolument certain que la valeur recherchée par FIND existe bel et bien, il est prudent d'utiliser 'ON ERROR RESUME NEXT' qui permet au code de "sauter" l'erreur.

On Error Resume Next
premiere_ligne = Worksheets("Donnees_sources").Columns(4).Find(What:=Date_de_valeur, LookAt:=xlWhole).Row
If premiere_ligne <> Nothing Then
    '...
End If
On Error GoTo 0

A+

Bonjour samuxxx, curulis57,

une possibilité pour la gestion d'erreur,

Set PlageDeRecherche = Worksheets("Donnees_sources").Columns(4)
Set localise = PlageDeRecherche.Cells.Find(What:=Date_de_valeur, LookAt:=xlWhole)
If Not localise Is Nothing Then premiere_ligne = localise.Row

Bonsoir Curulis et I20020,

votre adaptation de code est utile pour gérer le cas d'une date qui n'est pas trouvée, mais d'après samuxxx, la date existe bien en colonne C. La recherche sur date avec un .find est assez instable et dépend du format de la date, une manière d'éviter les problèmes est de tester sur base de la valeur stockée par excel, chose que l'on peut faire en utilisant lookin:=xlformula (à condition que la cellule ne contienne pas une formule)

Bonjour à tous,

...mais d'après samuxxx, la date existe bien en colonne C

@h2so4,

peut être, mais c'est impossible de trouver l'erreur sans avoir les données, aussi la variable Date_de_valeur

@samuxxx ,

fichier excel 1

Bonjour,

essaie ceci

date_de_valeur = CDate("01/01/2001") '<- date convertie en format excel 
Set PlageDeRecherche = Worksheets("Donnees_sources").Columns(4)
            Set localise = PlageDeRecherche.Cells.Find(What:=date_de_valeur, LookIn:=xlFormulas, LookAt:=xlWhole)
                premiere_ligne = localise.Row

Bonjour a tous merci pour votre aide je viens de tester la ligne suivante et ca fonctionne.

Set localise = PlageDeRecherche.Cells.Find(What:=Date_de_valeur, LookIn:=xlFormulas, LookAt:=xlWhole) 

Merci h2so4.

Rechercher des sujets similaires à "erreur"