cs_Stef32
Messages postés5Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention28 août 2006
-
28 août 2006 à 14:12
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
28 août 2006 à 23:45
Tcho,
Une de mes MACRO maniplue des objets image avec la méthode :
Par contre si il n'y a pas d'image correspondant à la variable Items$, le programme se plante.
Comment faire pour tester si l'objet en question existe pour eviter les bugs ??
P.S. Est-ce que qqun connait un lexique bien foutu pour chercher toutes les fonctions VBA et leur définitions voir des exemples. En français idéalement.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 28 août 2006 à 14:36
salutt
Je ne sais pas si cela peu t'aider mas tu peux faire un truc du style.
Tu mets cette fonction
Private Function ShapesExists(ShapeName As String) As Boolean
On Error GoTo HandleError
ShapesExists = True
ActiveSheet.Shapes(Item$).Select
Exit Function
HandleError:
ShapesExists = False
End Function
Et puis apres tu fait comme ceci
If ShapesExists(Item$) Then
Selection.ShapeRange.Height = 132
Selection.ShapeRange.Width = 204.5
Etc....
End If
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 28 août 2006 à 14:48
Salut,
"P.S. Est-ce que qqun connait un lexique bien foutu pour chercher toutes
les fonctions VBA et leur définitions voir des exemples. En français
idéalement."
L'aide de vba Excel est plus que complête (et en français).
Sinon, pense à l'explorateur d'objets (F2), plus qu'indispensable !
Sinon, "Comment faire pour tester si l'objet en question existe pour eviter les bugs ??"
C'est simple, reproduit ton erreur et note le numéro qu'excel vba t'affiche.
Ensuite, avant l'ouverture de l'image,
On error resume next
' *** ton ouverture image
If Err.Number = X Then MsgBox "Erreur, le fichier image n'existe pas", vbCritical: _
Err.Clear: Exit Sub
(remplace X par le numéro de l'erreur)
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
cs_Stef32
Messages postés5Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention28 août 2006 28 août 2006 à 17:04
Salut,
Merci pour ton aide, c cool.
Juste un souci avec ton astuce :
Ca fonctionne un peu trop bien :) la condition s'effectue même lorsque l'objet image est trouvé et donc logiquement il n'y a pas d'erreur générée par Excel.
Surement une erreur de ma part avec l'utilisation de la fonction que tu m'as conseillée :
On Error Resume Next
If Item_Old <> "0" Then
Sheets("fiche de controle").Select
Range("R1").Select
ActiveSheet.Shapes(Item_Old).Select (selelction de l'image ou plantage)
Selection.Delete
End If
If Err.Number = "-2147024809 (80070057)" Then
Sheets("fiche de controle").Select
Call Cacher_Fermer
MsgBox "Excel n'a pas trouvé d'image correspondante", vbCritical: _
Err.Clear: Exit Sub
End If
Ciao et merci
Stefano
Vous n’avez pas trouvé la réponse que vous recherchez ?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 28 août 2006 à 17:24
Re,
" If Err.Number = "-2147024809 (80070057)" Then"
>> bah non, c'est certainement pas le bon numéro.
La propriété Number doit te renvoyer un Long !
T'as pas plutot une erreur style Impossible de charger l'objet, erreur N° 1051
(pour le 1051, c'est au pif)
Au pire essaie ce numéro (et t'ai fait une modif importante) :
<small>
Coloration syntaxique automatique </small>
On Error Resume Next
If Item_Old <> "0" Then
Sheets("fiche de controle").Select
Range("R1").Select
ActiveSheet.Shapes(Item_Old).Select (selelction de l'image ou plantage)
If Err.Number = -2147024809 Then '(je doûte que cela fonctionne)
' Sheets("fiche de controle").Select << '*** inutile, déjà dessus
Call Cacher_Fermer
MsgBox "Excel n'a pas trouvé d'image correspondante", vbCritical: _
Err.Clear: Exit Sub
End If
Selection.Delete
End If
' *** je te l'ai intercalé dans l'autre If, sinon, ta feuille se supprime !
' <selection.delete>Tel que c'était disposé et ayant le plantage</selection.delete>
' sur la sélection du Shape (donc pas pris en compte), précédemment
' sélectionné : c'est ta feuille "fiche de controle"
<small>
Coloration syntaxique automatique </small>
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
cs_Stef32
Messages postés5Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention28 août 2006 28 août 2006 à 17:56
Re,
On s'approche, ça chauffe...
J'ai trouvé le No d'erreur (Error 440) via Help dans l'alerte BUG habituelle j'ai bien le no hyper long que j'ai utilisé précédement.
Dans les deux cas, erreur avérée ou pas la condition IF Err.Number = ... est remplie, du coup quand l'image est trouvée ça ne marche plus....
J'ai fait comme ça :
On Error Resume Next
If Item_Old <> "0" Then
Sheets("fiche de controle").Select
Range("R1").Select
ActiveSheet.Shapes(Item_Old).Select
If Err.Number = 440 Then
Call Cacher_Fermer
MsgBox "Excel n'a pas trouvé d'image correspondante", vbCritical: _
Err.Clear: Exit Sub
End If
Selection.Delete
End If
Au fait pour les astuces F1 et F2 : C'est pas mal, mais en anglais car j'utilise XP pro de ma boîte...
Pour ton aide au boulot, bah t'as pas de chance, j'espère que t'es pas anglophobe !
Sans parler de l'aide, le F2 est très interressant, au début je n'en voyais pas l'utilité, beh maintenant je fais F2 au moins une 2 ou 3 fois par jour .
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--