Tout petit bug (petit mais chien quant même)

Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 24 mars 2006 à 09:31
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 24 mars 2006 à 13:56
Bonjours à tous,

C vendredi (trop bien bientôt le WeekEnd)

Heeeee pardont je m'eloigne du sujet ...

Alors voila, j'ai un code qui extrait les données des "objet feuille de calcul" dans un fichier excel. Ca fonctione mais le code :
ActiveDocument.InlineShapes.Count
me retourne le nombre de ces objets mais aussi les images ce qui fait que quant je cherche à ouvrir ces objets et c'est une image une erreur apparait. Je me suis donc dit que j'allais gerrer cette erreur et dire a word ne ne pas m'afficher ce #!§µ£$¤ de message d'erreur.
j'ain tenter ces deux code pour faire en sorte qu'il n'affiche pas cette #!§µ£$¤ d'erreur (et elle saffiche quand même )
On Error Resume Next
Application.DisplayAlerts = wdAlertsNone

Et rien n'y fait. Bon il y a juste à clicker sur OK de la fenaitre d'erreur mais ca me fait chier quand même.

Merci d'avance

Peut être qu'un autre code pour trouver mes objet serait bon

Ou un code qui fait la differance entre une image et une feuillle de calcul excel.

Faut pas s'enerver

11 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
24 mars 2006 à 09:50
Bonjour

Tu utilise On Error goto ?

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
24 mars 2006 à 10:54
Je vient de re-faire des test et ca ne marche pas mieu. Le system m'affiche toujour :"Cet objet est altéré ou n'est plus disponible"

Le gros probléme est qu'il ne me génére pas d'erreur pour toute les images (je fait des tests pour trouver pourcois certaine image me renvoie un message d'erreur et pas d'autre!)

Je ne conprend pas ce que tu entand (NHenry) par : "Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)"


Faut pas s'enerver
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
24 mars 2006 à 11:47
Bonjour

En commençant par la fin : C'est ma citation, ceci signifie que lorsqu'on connait trop bien un langage, il est difficile d'en changer.

Dans ta fonction/sub :
On error goto Err_Ftc
'TonCode

exit sub/function

Err_Fct:
MsgBox(err.description,"Erreur #"+Err.Number)
end sub/function

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
24 mars 2006 à 12:07
Salut Pollack, essaie une boucle :

Dim Obj As OLEObject, Ligne As Integer
Ligne = 1
For Each Obj In Worksheets("nom de la feuille").OLEObjects

If TypeOf Obj.Object Is MSForms.TextBox Then ' remplace TextBox par le controle que tu utilises

Obj.Object.Value = Sheets("nom de la feuille").Cells(1, Ligne).Text

End If
Ligne = Ligne + 1
Next Obj

Et si t'as d'autres controles autre que tes TextBox, refait une seconde boucle avec le nom du controle
( If TypeOf Obj.Object Is MSForms.nom de la form )

@ la prochaine ! Et bon Week End, t'as l'air de l'attendre avec impatience !

Mortalino
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
24 mars 2006 à 12:11
Ok je comprend ce que tu veut dire NHenry.

Le probléme c'est que les fichiers que je traite est fait par d'autre (des gents plus ou moin douer). Et je trouve des %£¨¤§! d'objet feuille de calcul lier (alor que je n'ai pas le fichier excel), des image de tableau et des "Objet" (voir plus loin pour objet). Ce n'est pas vraiment la fin du monde (dans ce cas je ne traite pas les donnée) mais lorsque j'essais d'ouvrir ce genre d'objet un message d'erreur apparait et CA ARRETE MON EXECUTION un simple click sur Ok et ca repart mais cela signifie que qu'un dois surveiller l'execution (et ca ça me fait vraiment chier).

Je ne pense pas que la solution sois dans la gestion d'erreur mais dans la détection du type d'objet (encor que???), or je dois ouvrir les feuilles de calcul excel sans liaison! (soit type 1)
(a vrais dire j'avias lesser tomber pour detecter le type)
Le probléme est que je trouve des "Objets" qui me renvoie la valeur 1 quand je test le type alors que ce ne sont pas des feuille de calcul Excel (des images de tableau excel) et je n'ais toujour pas compris commant ces salter on été crées! J'appel ces salter des "objets" puisque quand je fait un click droit dessus (dans word) mon menu contextuel à les options sont: "Couper ; Copier ; Coller ; Objet ; Afficher la barre d'outils Image ; Bordure et trame... ; Légende... ; Mettre en forme l'objet... ; Lien hypertexte". De plus losque je selection "Objet" Word me renvoie la même erreur! Et même si y faut pas ca m'enerve!

Faut pas s'enerver
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
24 mars 2006 à 12:49
Sinon, essaie ça :

Au début du code,

On error GoTo SauteErreur


Application.EnableCancelKey = xlErrorHandler
'Ca, c'est pour que quand la fenetre "débogage" apparait, ça effectue la procédure de gestion d'erreur donc va à SauteErreur

Puis place le
SauteErreur:

Est ce que ça marche ?

Mortalino
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
24 mars 2006 à 13:28
Toujour le même probléme (je gérer l'erreur mais je veut empecher word de me dire qu'il rencontre une erreur)

Faut pas s'enerver
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
24 mars 2006 à 13:30
Juste pour rapel ma macro est sous Word

Faut pas s'enerver
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
24 mars 2006 à 13:49
Pardon Mortalino je n'avais pas vue ton message. Je vien de tenter "Application.EnableCancelKey = xlErrorHandler" toujours le même probléme. (juste pour remarque le programme ne me propose pas de faire un déblocage mais m'affiche simplement un message :"Cet objet est altéré ou n'est plus disponible" avec un bouton "Ok"). Vous pouvez re-créer cette erreur en copian un tableau excel (sous excel) et faire un colage spécial :
-> Coller avec liaison
-> Image (métafichier Windows)

Ensuite fermer Excel sans sauvgarder le classeur

ensuite lanser le code

Sub Exemple()
Dim CptElement: CptElement = 1 'Element en cours de traitement (appeler element et pas TabExcel car les image sont considérer comme "InlineShapes"
Dim ValRetourFonction As String 'Sauvgarde la chaine de carac retourner par la fonction "CopyDonnéeExcel"
Dim EtatAlerte As Long: EtatAlerte = Application.DisplayAlerts 'Sauvgarde la configuration system sur les alerte


Do While CptElement < ActiveDocument.InlineShapes.Count + 1
Application.DisplayAlerts = wdAlertsNone '\Les désactivation des message d'erreur
On Error Resume Next '/
ActiveDocument.InlineShapes(CptElement).OLEFormat.DoVerb VerbIndex:=1 'ouvre excel avec la feille afficher
DoEvents 'Ouvre excel
DoEvents 'Ouvre la feuille
If Err.Number = 0 Then 'Si aucune erreur ne s'est produite lors de l'ouverture de l'élément
ValRetourFonction = CopyDonnéeExcel(CptElement) 'Lanse la fonction et sauvgarde la valeur de retour
If Not Split(ValRetourFonction, Chr(1))(0) = "1" Then 'Si la fonction ne s'est pas passer sans erreur
ActiveDocument.InlineShapes(CptElement).Fill.ForeColor.RGB = RGB(64, 255, 64) 'Passe l'element avec un fond vert (le nombre de colone est trop important)
ActiveDocument.InlineShapes(CptElement).Fill.Visible = msoTrue 'Objet visible si il ne l'etait pas
ActiveDocument.InlineShapes(CptElement).Fill.Solid 'Objet solide
CptElement = CptElement + 1 'Passe à l'élément suivant (élément non remplacer)
End If
Else 'Si une erreur s'est produite lors de la tentative d'ouverture d'excel
Err.Clear 'Efface les erreur en cours
End If
Loop
Application.DisplayAlerts = EtatAlerte 'Re-mét l'état des alert dans le même mode que au début de la fonction
End Sub

Faut pas s'enerver
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
24 mars 2006 à 13:51
et faire un colage spécial (sous Word) Pardon

Faut pas s'enerver
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
24 mars 2006 à 13:56
Ne lanser pas la fonction que j'ai mis plus haut boucle infini !!!!!!!!!!!!

Sub Exemple()
Dim CptElement: CptElement = 1 'Element en cours de traitement (appeler element et pas TabExcel car les image sont considérer comme "InlineShapes"
Dim ValRetourFonction As String 'Sauvgarde la chaine de carac retourner par la fonction "CopyDonnéeExcel"
Dim EtatAlerte As Long: EtatAlerte = Application.DisplayAlerts 'Sauvgarde la configuration system sur les alerte
Do While CptElement < ActiveDocument.InlineShapes.Count + 1
Application.DisplayAlerts = wdAlertsNone '\Les désactivation des message d'erreur
On Error Resume Next '/
ActiveDocument.InlineShapes(CptElement).OLEFormat.DoVerb VerbIndex:=1 'ouvre excel avec la feille afficher
DoEvents 'Ouvre excel
DoEvents 'Ouvre la feuille
If Err.Number = 0 Then 'Si aucune erreur ne s'est produite lors de l'ouverture de l'élément
ValRetourFonction = CopyDonnéeExcel(CptElement) 'Lanse la fonction et sauvgarde la valeur de retour
If Not Split(ValRetourFonction, Chr(1))(0) = "1" Then 'Si la fonction ne s'est pas passer sans erreur
ActiveDocument.InlineShapes(CptElement).Fill.ForeColor.RGB = RGB(64, 255, 64) 'Passe l'element avec un fond vert (le nombre de colone est trop important)
ActiveDocument.InlineShapes(CptElement).Fill.Visible = msoTrue 'Objet visible si il ne l'etait pas
ActiveDocument.InlineShapes(CptElement).Fill.Solid 'Objet solide
CptElement = CptElement + 1 'Passe à l'élément suivant (élément non remplacer)
End If
Else 'Si une erreur s'est produite lors de la tentative d'ouverture d'excel
Err.Clear 'Efface les erreur en cours
CptElement = CptElement + 1

End If
Loop
Application.DisplayAlerts = EtatAlerte 'Re-mét l'état des alert dans le même mode que au début de la fonction
End Sub

Faut pas s'enerver
0
Rejoignez-nous