Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : On Error GoTo [ Langages dérivés / VBA ] (Petit Ecolier)

mardi 17 juillet 2007 à 12:29:49 | On Error GoTo

Petit Ecolier

Bonjour,
Voici mon code
' --------------------------------------
' Mise en forme du graph aerau
' --------------------------------------
    On Error GoTo Acou
    Sheets("Graph_aerau").Select
        With ActiveChart
            .HasTitle = True
            If mm = 1 Or mm - pp = 1 Then
                .ChartTitle.Characters.Text = "Courbe réduite aéraulique de " & mm - pp & " ventilateur"
            Else
                .ChartTitle.Characters.Text = "Courbes réduites aérauliques de " & mm - pp & " ventilateurs"
            End If
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "delta'"
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "mu"
            .ChartArea.Select
        End With
' --------------------------------------
' Mise en forme du graph acou
' --------------------------------------
Acou:
    On Error GoTo Finir
    Sheets("Graph_acou").Select
        With ActiveChart
            .HasTitle = True
            If mm = 1 Or mm - nn = 1 Then
                .ChartTitle.Characters.Text = "Courbe réduite acoustique de " & mm - nn & " ventilateur"
            Else
                .ChartTitle.Characters.Text = "Courbes réduites acoustiques de " & mm - nn & " ventilateurs"
            End If
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "phi ouverture réduite'"
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "lw dB(A)"
            .ChartArea.Select
        End With
    Sheets("Données").Select
Finir:
    Application.ScreenUpdating = True
End Sub

Voici mon poblème : quand je lance la Macro, il se peut que Graph_acou ou Graph_aerau n'existe pas. Par consequent j'ai une erreur qui apparaît. Je décide donc de passer à l'instruction suivante si cette erreur apparaît. Pour le premier graphe cela fonctionne, mais pas pour le deuxième graphe. J'ai la fenêtre d'erreur d'indice en dehors de la plage qui stoppe mon programme. Le problème viendrait-il du fait que je fais suivre 2 On Error GoTo à la suite ?

Merci d'avance

mardi 17 juillet 2007 à 13:01:33 | Re : On Error GoTo

Zakata

Salut

Pour répoondes à ta question, je pense que ca ne pose pas de problème de mettre plusieurs gestion d'erreur au sein d'une même procédure.

Sur quelle ligne ton programme bug t il ?

mardi 17 juillet 2007 à 13:01:43 | Re : On Error GoTo

jmfmarques

Membre Club

Bonjour,

Je te suggère de faire quelques petits tests... de te gratter la tête... d'observer... et d'en tirer profit :

Test 1, donc :

Private Sub Command3_Click()
  On Error GoTo a
  Error = 3
  MsgBox "on va voir si je passe par là, hein ?"
a:
  On Error GoTo b
  MsgBox "je suis en a"
b:
  MsgBox "je suis en b"
End Sub

Examines bien et note tout !
Puis : test 2 :


mardi 17 juillet 2007 à 13:05:24 | Re : On Error GoTo

jmfmarques

Membre Club

Et zut...

Bon... voilà le test 2

:Private Sub Command3_Click()
  On Error GoTo a
  Error = 3
  MsgBox "on va voir si je passe par là, hein ?"
a:
  If Err Then GoTo b
  MsgBox "je suis en a"
b:
  MsgBox "je suis en b"
End Sub

tu vois la différence ?
Si oui... tu réfléchis... tu comprends... tu te sers de ces "subtilités"- là

Ceci étant dit : il est nettement préférable de ne passer par une gestion d'erreur que lorsqu'il est rigoureusement impossible de pouvoir écrire ce qui provoquerait une éventuelle erreur ! Bien évidemment !


mardi 17 juillet 2007 à 13:27:34 | Re : On Error GoTo

jmfmarques

Membre Club
Correction ! Lire :
ne passer par une gestion d'erreur que lorsqu'il est rigoureusement impossible de pouvoir écrire ce qui ne provoquerait pas une éventuelle erreur

Je ne connais pas VBA, mais il y a surement un moyen de vérifier l'existence ou non d'une feuille...(plutôt que de gérer une erreur sur son inexistence éventuelle)

mardi 17 juillet 2007 à 13:31:19 | Re : On Error GoTo

jmfmarques

Membre Club
Ouais, apparemment :

Lire donc :

[ Lien ]

On y trouve ce qu'il faut pour tester cette existence et, donc, d'avoir à gérer une erreur ...

mardi 17 juillet 2007 à 14:38:32 | Re : On Error GoTo

Petit Ecolier

-> Zakata : Mon prog bug à la ligne Sheets("Graph_acou").Select
En effet cette feuille n'existe pas. Mais ce que je ne comprends pas c'est pourquoi le On Error GoTo Finir situé juste au-dessus ne remarque pas qu'il y a un retour d'erreur.

->jmfmarques : je ne comprends pas ta ligne If Err Then GoTo b
Est-ce que Err est une fonction ???
Ton premier test fait la même chose, "je suis en a" et "je suis en b", qu'il y est On Error GoTo b ou non. J'ai déplacé b: en le remontant au dessus de MsgBox "on va voir si je passe par là, hein ?". le prog affiche "je suis en b". Du coup on peut en déduire qu'il n'y a pas d'erreur à la suite de "je suis en a".
Ton 2eme test file directement sur "je suis en b". Cela se comprend d'après l'ordre que tu as mis et si je passe la signification de ta condition.
Sinon merci pour le lien. J'avais déjà regardé ça, mais je pensais que c'était plus simple de passer par ma gestion d'erreur puisque je ne cherche pas à savoir si une feuille existe, mais plutôt à la mettre en forme si elle existe. Excel m'informant par une erreur qu'elle n'existe pas, autant se servir de ce retour.
D'ailleurs sur le lien que tu m'a donné, ils font la même chose que moi, il se servent du retour d'erreur.

mardi 17 juillet 2007 à 15:43:14 | Re : On Error GoTo

jmfmarques

Membre Club
Réponse acceptée !
J'ai l'impression que je me suis trompré en effet de lien.

Voyons onc si ma mémoire de ce que j'avais lu dans le bon lien est bonne :

Sub listons_feuilles()
 Dim feuille
 For each feuille in ActiveWorkBook.Sheets
   msgbox feuille.name
 next
end sub

te donnerait les noms des feuille existantes

Reste à faire une fonction :


Private function coucou(nom_feuille as string) as boolean
      coucou = false
     dim feuille
     For each feuille in ActiveWorkBook.Sheets
           If feuille.name = nom_feuille then
                coucou = True
                 exit for
           End If
      next
End Function

et à appeler la vérification ainsi :

dim mon_nom as string
mon_nom = "feuille_supposee"
if coucou(mon_nom) then
     msgbox mon_nom & " est bien une feuille"
else
    msgbox mon_nom & " n'est pas une feuille"
end if

reste à savoir si mamémoire est bonne (je n'ai pas envie de rechercher à nouveau) mais il te suffit d'essayer, n'est-ce pas ?










mardi 17 juillet 2007 à 16:37:37 | Re : On Error GoTo

Petit Ecolier

Juste une remarque, je ne sais pas pourquoi tu as listé les feuilles mais c'est pas grave, car le reste fonctionne.
C'est beaucoup plus rigoureux que de travailler avec les erreurs.
Bonne mémoire donc jmfmarques
Merci beaucoup

mardi 17 juillet 2007 à 16:51:44 | Re : On Error GoTo

jmfmarques

Membre Club

Je n'ai listé que pour te montrer le mécanisme...

L'appel de la fonction, par contre, ne liste pas et te renvoir True (si la feuille existe) ou False (si elle n'existe pas).
Dans ton appli, donc, tu ne fais la mise en Forme que si la feuille existe.



1 2

Cette discussion est classé dans : text, mm, axes, characters, xlprimary


Répondre à ce message

Sujets en rapport avec ce message

[vb6] aide excel [ par tof008 ] Bonjour,J'ai un probleme lorsque je fais des statistiques sur excel à partir de vb... Lorsque j'ouvre excel une premiere fois, tout se passe correctem winsock et mail [ par whiteknight ] sltj'ai un pbs avec winsock ... si kk'un peu m'aider à debugger ... bon voila mon cas ! j'ai 2 fonction mail : 1 par mapi qui marche nickel et 1 par w Taille d'un text dans un textbox en mm [ par Eric ] Comment savoir combien mesure en largeur et en milimètre une ligne de caractère dans un textbox en ayant par exemple une font Arial de 12pts.merci d'a date folles [ par titititi007 ] Alors la je comprends plus du tout j'ai 2 textbox qui contienne chacune une date au format DD/MM/YYYY et ici il passe toujours dans le si :s date_au( big probleme de date [ par titititi007 ] Alors la je comprends plus du tout j'ai 2 textbox qui contienne chacune une date au format DD/MM/YYYY et ici il passe toujours dans le si :s date_au( Creer un Graphique sous excel [ par Tetris42 ] bonjour voila 1 semaine que je cherche a contruire un graph ss excel.Je realise mon graph a partir de 3 colones (deux qui varient et une fixe juste l answer to reset et mscomm [ par akai ] bonjour debutant en vb je but sur un probléme quant à la réception de l atr de divers carte a puce.a chaque fois msComm1.InBufferCount me donne une va Problème d'enregistrage [ par vb666 ] j'ai mis dans une frame, 3 bouton. Chaque bouton on deux label. La frame a un scrollbars et les bouton servent a parcourir pour aller chercher le chem Format de date et heure [ par ronana ] SalutMes utilisateurs rentre une date et heure pour effectuer une operation comment faire pour remettre automatiquement les valeurs en format jj/mm/aa mettre le text d'une textbox dans un fichier txt [ par milo2009 ] milo2009salut je voudrais savoir comment mettre le texte d'une textbox dans un fichier txtmerci


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,437 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.