begin process at 2012 02 16 07:41:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

On Error GoTo


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

On Error GoTo

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ée 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 [titre abstrait modifié] modifier le code macro excel auto-généré [ par Prich ] Bonjour; j'ai obtenu le code ci-dessous à l'aide de l'enregistreur de macro. Et-il possible de modifier le code pour fixer soit même une plage de vale 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 titre variable pour graphique [ par didyvine ] Bonjour, Mes problèmes de réorganisation de graphiques sont résolus. Toutefois je n'arrive toujours pas à créer le graphique adapté. Je passe par l'e ou sont passé les lignes manquante [ par BANDIT007 ] Salut a tous... Il m'arrive un truc bizarre... j'explique Dans un application que j'ai codé je rempli une textbox avec un fichier texte avec ce code: supprimer le signe - dans un listbox. [ par sancho12345 ] Bonjour, Pouvez-vous m’aider j’aimerai supprimer dans un listbox tous les signes - qui son forcement présent dans la référence de chaque ligne.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,418 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales