OVH Cloud OVH Cloud

erreur 91

5 réponses
Avatar
SeaCove
bjr,

voilà le blème : mon appli comprend une fonction qui entre autre recherche
un nom dans une colonne.


Dim trouve As Object
........
Set trouve = Columns(1).Find(What:=nom, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, _
MatchCase:=True)
trouve.Select
...........

elle est appelée un peu partout dans le programme et ça fonctionne nickel
sauf quand je clique sur mon joli bouton gris 'Quitter'
(ThisWorkbook.close) où là ....patatras : Variable objet ou variable bloc
With non définie (erreur 91) avec une magnifique ligne jaune sur
'trouve.select' (la fonction est appelée dans workbook_BeforeClose). Par
contre si je quitte normalement en cliquant sur la croix en haut à droite :)
là ça marche...
Comme l'aide vba manque de clarté à mes yeux je fais donc appel à vos
lumières, hommes de bonne volonté que vous êtes. Si vous êtes blonde à FP
merci par avance de laisser votre portable au cas ou...

5 réponses

Avatar
michdenis
Bonjour SeaCove,

Et ceci :

Dim trouve As Range
Nom = "Ce que tu cherches"
Set trouve = Columns(1).Find(What:=Nom, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, _
MatchCase:=True)

If Not trouve Is Nothing Then
trouve.Select
Else
MsgBox "Pas trouvé"
end if


Salutations!



"SeaCove" a écrit dans le message de news:eecn56g%
bjr,

voilà le blème : mon appli comprend une fonction qui entre autre recherche
un nom dans une colonne.


Dim trouve As Object
........
Set trouve = Columns(1).Find(What:=nom, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, _
MatchCase:=True)
trouve.Select
...........

elle est appelée un peu partout dans le programme et ça fonctionne nickel
sauf quand je clique sur mon joli bouton gris 'Quitter'
(ThisWorkbook.close) où là ....patatras : Variable objet ou variable bloc
With non définie (erreur 91) avec une magnifique ligne jaune sur
'trouve.select' (la fonction est appelée dans workbook_BeforeClose). Par
contre si je quitte normalement en cliquant sur la croix en haut à droite :)
là ça marche...
Comme l'aide vba manque de clarté à mes yeux je fais donc appel à vos
lumières, hommes de bonne volonté que vous êtes. Si vous êtes blonde à FP
merci par avance de laisser votre portable au cas ou...
Avatar
papou
Bonjour SeaCove
Pas de blonde à l'horizon ? ;-)
Je pense que ton erreur est due à la sélection actuelle sur ton bouton
Si tu utilises un bouton de la boîte à outils contrôles, affectes la valeur
False à la propriété TakeFocusOnClick
Sinon, il faudrait ajouter la sélection d'une cellule quelconque dans le
code de ton bouton
Cordialement
Pascal

"SeaCove" a écrit dans le message de
news:eecn56g%
bjr,

voilà le blème : mon appli comprend une fonction qui entre autre recherche
un nom dans une colonne.


Dim trouve As Object
........
Set trouve = Columns(1).Find(What:=nom, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, _
MatchCase:=True)
trouve.Select
...........

elle est appelée un peu partout dans le programme et ça fonctionne nickel
sauf quand je clique sur mon joli bouton gris 'Quitter'
(ThisWorkbook.close) où là ....patatras : Variable objet ou variable bloc
With non définie (erreur 91) avec une magnifique ligne jaune sur
'trouve.select' (la fonction est appelée dans workbook_BeforeClose). Par
contre si je quitte normalement en cliquant sur la croix en haut à droite
:)

là ça marche...
Comme l'aide vba manque de clarté à mes yeux je fais donc appel à vos
lumières, hommes de bonne volonté que vous êtes. Si vous êtes blonde à FP
merci par avance de laisser votre portable au cas ou...




Avatar
michdenis
Bonjour SeaCove,

Une erreur de type 91 lorsqu'il s'agit de la méthode "Find" d'un objet "Range" signifie que la cellule recherchée n'a
pas été trouvé c'est ce qui provoque l'erreur. Si la variable "Trouve" ne représente pas un objet "Range" valide,
comment pourrait-il appliquer la méthode "Select" de ce même objet ?


Salutations!



"SeaCove" a écrit dans le message de news:eecn56g%
bjr,

voilà le blème : mon appli comprend une fonction qui entre autre recherche
un nom dans une colonne.


Dim trouve As Object
........
Set trouve = Columns(1).Find(What:=nom, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, _
MatchCase:=True)
trouve.Select
...........

elle est appelée un peu partout dans le programme et ça fonctionne nickel
sauf quand je clique sur mon joli bouton gris 'Quitter'
(ThisWorkbook.close) où là ....patatras : Variable objet ou variable bloc
With non définie (erreur 91) avec une magnifique ligne jaune sur
'trouve.select' (la fonction est appelée dans workbook_BeforeClose). Par
contre si je quitte normalement en cliquant sur la croix en haut à droite :)
là ça marche...
Comme l'aide vba manque de clarté à mes yeux je fais donc appel à vos
lumières, hommes de bonne volonté que vous êtes. Si vous êtes blonde à FP
merci par avance de laisser votre portable au cas ou...
Avatar
Frédéric Sigonneau
Bonsoir,

Faute de plus de précisions sur ton code, tu pourrais au moins gérer l'erreur a
minima :

On Error Resume Next
Set trouve = Columns(1).Find(What:=nom, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, _
MatchCase:=True)
trouve.Select
On Error Goto 0

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !

SeaCove a écrit:
bjr,

voilà le blème : mon appli comprend une fonction qui entre autre recherche
un nom dans une colonne.


Dim trouve As Object
.........
Set trouve = Columns(1).Find(What:=nom, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, _
MatchCase:=True)
trouve.Select
............

elle est appelée un peu partout dans le programme et ça fonctionne nickel
sauf quand je clique sur mon joli bouton gris 'Quitter'
(ThisWorkbook.close) où là ....patatras : Variable objet ou variable bloc
With non définie (erreur 91) avec une magnifique ligne jaune sur
'trouve.select' (la fonction est appelée dans workbook_BeforeClose). Par
contre si je quitte normalement en cliquant sur la croix en haut à droite :)
là ça marche...
Comme l'aide vba manque de clarté à mes yeux je fais donc appel à vos
lumières, hommes de bonne volonté que vous êtes. Si vous êtes blonde à FP
merci par avance de laisser votre portable au cas ou...




Avatar
SeaCove
Voili plus de détail sur le code :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ind, nomA, lig, test
blabla.........
nomA = Worksheets("Grille").Range("H4") 'cellule liée de mon combobox
test = enreg(ind, nomA, lig) 'appel de fonction
blabla.......

Function enreg(ind, nomA, lig)
Dim trouve As Object
blabla....
Worksheets("Hor").Select
Columns(1).Select
Set trouve = Columns(1).Find(What:=nomA, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, _
MatchCase:=True)
trouve.Select
blabla...

Sur la feuille "grille" on tape l'activité horaire de l'employé sélectionné
dans le combo. Lorsqu'on selectionne un autre employé, les données de
l'employé précédent sont enregistrées ( Function enreg ) dans la feuille
"Hor" , le plus souvent au bon endroit :) . Jusque là ça tourne. Lorsqu'on
quitte l'appli, il faut également enregistrer les données de l'empoyé en
cours, car au lancement c'est le premier de la liste alphabétique qui est
chargé. Voilà pour la petite histoire. Et donc ThisWorkbook.close, lorsque
j'utilise mon fameux bouton 'Quitter' , arrête le prog sur trouve.select
avec l'erreur 91(nomA est bien valorisé). Tout va bien si je quitte Excel 97
par la voie normale (qui me semble t-il exécute également _beforeclose...me
dites pas non , j'ai testé avec un msgbox de lamer ..hé hé hé...).
J'ai essayé les bonnes idées de papou mais malheureusement le problème reste
identique. Si j'utilise On Error Resume Next (je connais mal la gestion des
erreurs) je crains bien que les données en cours ne soient pas enregistrées
dans "Hor", ce qui peut être déplaisant pour l'employé qui se verra ainsi
sucré d'une journée de travail. Mon code est certainement foireux mais je ne
sais pas où et ni pourquoi ça marche partout sauf avec ThisWorkbook.close
(ni d'ailleurs avec Activebook.close ni non plus avec Application.quit. Je
n'ai pas encore testé GrandCoupDeMasse.close mais ça va pas tarder si vous
ne faites rien...)