IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Sauter un passage de macro en cas d'erreur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur production
    Inscrit en
    Octobre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur production

    Informations forums :
    Inscription : Octobre 2015
    Messages : 23
    Par défaut Sauter un passage de macro en cas d'erreur
    Bonjour,

    J'ai un passage de macro que je souhaiterais sauter en cas d'erreur pour continuer la boucle.

    En gros comme décris dans le code suivant j'ia une boucle qui décalle d'une ligne à chaque fois et qui donne une valeur de texte à la variable field. Cette variable est utilisée pour aller chercher dans une autre feuille. Si la feuille existe on fait une recherche dedans sinon on passe à la ligne suivante. Idem si la recherche n'aboutit on passe à la ligne suivante

    J'ai essayé de faire ça avec Goto error handler, mais soit ca me met une erreur, soit ca patine horriblement et je suis obligé de stopper la macro.

    Un truc m’échappe, un petit coup de main ne serait pas de refus. merci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Sub copy_Pres()
     
    Sheets("Datum Press").Select
     
    Dim cell_name As String
    Dim column_number As Integer
    Dim ref_date As String
    Dim field As String
    Dim Pressure As Integer
     
    Range("A1").Select
    Selection.Offset(1, 0).Select
     
    Do While Not (IsEmpty(ActiveCell))
     
    cell_name = ActiveCell.Text
     
    Selection.Offset(0, 1).Select
    ref_date = ActiveCell.Text
     
    Selection.Offset(0, 5).Select
    Pressure = ActiveCell.Value
     
    Selection.Offset(0, 1).Select
    field = ActiveCell.Text
     
    MsgBox (field)
     
    On Error GoTo errorhandler
    Worksheets("Measured_" & field).Select
     
     Range("A1:TZ1").Select
        Selection.Find(What:=cell_name, After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
     
    column_number = ActiveCell.Column
     
     Cells(5, column_number).Select
     Range(Selection, Selection.End(xlDown)).Select
            Selection.Find(What:=ref_date, After:=ActiveCell, LookIn:=xlValues, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Select
     
    Selection.Offset(0, 5).Select
    ActiveCell.Value = Pressure
     
    errorhandler:
     
    Worksheets("Datum Press").Select
    Selection.Offset(1, -7).Select
     
    Loop
     
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    n'utilise jamais le on error surtout si tu ne sais pas le gérer, une erreur est préférable à un traitement incontrôlé!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Set r = Range("A1:TZ1").Find(What:=cell_name, After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
      If IsEmpty(r) = True Then
        MsgBox "Err"
      Else
        r.Activate
        MsgBox "Cool!"
      End If
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur production
    Inscrit en
    Octobre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur production

    Informations forums :
    Inscription : Octobre 2015
    Messages : 23
    Par défaut
    Ok merci pour ta réponse.

    Ca règle le problème si la cellule n'est pas trouvée. Mais si la feuille n'est pas trouvée ? Certaine valeur de "field" ne corresponde pas à des feuilles existantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Measured_" & field).Select

  4. #4
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Trouve =false
    For i = 1 to sheets.count
    If Worksheets(i).name= "Measured_" & field then trouve = True : Exit for
    Next
    If trouve = True then
    Msgbox "Cool!"
    End if

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour, bonjour !

    Citation Envoyé par ochini Voir le message
    Mais si la feuille n'est pas trouvée ? Certaine valeur de "field" ne corresponde pas à des feuilles existantes
    Plein d'exemples dans le forum, suffit juste de chercher !

    De plus assez simple via une fonction de feuille de calculs ! Exemple ici

    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur production
    Inscrit en
    Octobre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur production

    Informations forums :
    Inscription : Octobre 2015
    Messages : 23
    Par défaut
    Le fait de passer la feuille en cas de problème c'est bon ça marche.

    Par contre le fait de continuer si la recherche de cellule dans la feuille n'aboutit pas, j'y arrive pas. La solution de rdurupt me renvoie mismatch

    Merci

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur production
    Inscrit en
    Octobre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur production

    Informations forums :
    Inscription : Octobre 2015
    Messages : 23
    Par défaut
    Ca marche pas cette partie là
    Ca me fait mismatch à chaque fois au niveau de la recherche.

Discussions similaires

  1. [AC-2007] passage de macro en vba impossible
    Par lolocdm dans le forum Access
    Réponses: 1
    Dernier message: 20/09/2015, 10h55
  2. [XL-2003] Ne pas lancer une macro en cas de suppression de valeur
    Par Edaine dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/06/2011, 11h08
  3. Passage de Macro à ACCESS
    Par _Drama dans le forum Modélisation
    Réponses: 2
    Dernier message: 23/02/2010, 09h50
  4. Date après passage par macro
    Par lhoste dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/07/2008, 13h48
  5. Redirection en cas d'erreur sur una page
    Par PrinceMaster77 dans le forum ASP
    Réponses: 2
    Dernier message: 03/09/2004, 09h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo