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 :

on error resume next sans effet


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2014
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 72
    Par défaut on error resume next sans effet
    Bonsoir,

    Je ne comprend pas pourquoi VBA plante alors que il lui est demandé de passer à la ligne suivante :
    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
     
     
    sub test()
        dim ....
     
         scleligne = "Tintin"
         ' le tableau structuré nommé Tintin n'existe pas
     
         on error resume next
         Set oList = Range(scleLigne).ListObject
     
         if olist is nothing then
             msgbox ("Tableau structuré inexistant")
         end if
     
    end sub
    Nom : Capture.PNG
Affichages : 261
Taille : 4,3 Ko

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PLH81 Voir le message
    Bonjour,

    Un tableau structuré s'applique à un objet Worksheet.

    A adapter et à tester:
    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
     
    Sub Test()
     
    Dim I As Integer
    Dim Tabletrouvee As Boolean
     
        With Sheets("Feuil1")  ' A adapter
     
             Tabletrouvee = False
             If .ListObjects.Count > 0 Then
               For I = 1 To .ListObjects.Count
                   If .ListObjects(I).Name = "Tintin" Then Tabletrouvee = True
               Next I
             End If
     
             If Tabletrouvee = False Then MsgBox "Tableau structuré inexistant !", vbCritical, "Recherche de la table Tintin"
     
        End With
     
    End Sub
    Dernière modification par Invité ; 04/03/2019 à 11h26.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    En écrivant ton exemple tu avais bien conscience de aberration de ton code.

    Le on error évalue l'aberration de ton code dans une certaine mesure seulement.

    Note que ton ordinateur dispose d'une unité arithmétique et logique constitué de 1/0 {0 volt,5 volts} une évaluation complète pourrait mettre le feu à ton ordinateur.

    Le on erreur se borne aux évaluation simple.

    En fait ton code manipule des zones mémoires qui n'existent pas. Ça revient à un suicide de Windows !

  4. #4
    Membre confirmé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2014
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 72
    Par défaut
    Bonjour à vous,

    Merci pour vos réponses.

    Eric, j'ai résolu effectivement le problème de cette façon, en enlevant par contre la référence à la worksheet, ce pour garder la possibilité ultérieur de pouvoir déplacer le tableau structuré sur un autre onglet.

    Dysorthographie, merci pour ces explications électriques, je vais éviter de suicider Windows et mettre le feu à la boite.


    Bonne journée à vous

    PLH81

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PLH81 Voir le message
    Bonjour,

    Dans ce cas, vous pouvez utiliser une procédure paramétrique ou directement une fonction :

    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
     
     
    Sub TestRechercheTable()
     
    Dim OngletEnCours As Worksheet
    Dim NomDeLaTable As String
     
        Set OngletEnCours = ActiveSheet
        NomDeLaTable = "Tintin"
        If TableTrouvee(OngletEnCours, "Tintin") = False Then MsgBox "Tableau structuré inexistant !", vbCritical, "Recherche de la table " & NomDeLaTable & " dans l'onglet " & OngletEnCours.Name
        Set OngletEnCours = Nothing
     
    End Sub
     
    Function TableTrouvee(ByVal OngletEnCours2 As Worksheet, ByVal NomDeLaTable2 As String) As Boolean
     
    Dim I As Integer
     
        With OngletEnCours2
             TableTrouvee = False
             If .ListObjects.Count > 0 Then
               For I = 1 To .ListObjects.Count
                   If .ListObjects(I).Name = NomDeLaTable2 Then TableTrouvee = True
               Next I
             End If
        End With
     
    End Function
    Dernière modification par Invité ; 04/03/2019 à 11h26.

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut
    Bonjour

    Quand on utilise des Tableaux (ListObject) on peut ne pas se casser la tête pour savoir dans quel(s) onglet(s) ils se trouvent.
    Chez moi, avec un Tableau nommé Tintin dans un onglet et un autre nommé Tintins dans un autre,PLH81, ton code même écrit dans un module standard, ne pose pas de problème sauf si l’on prend scleligne = "Tintin " 'ou "Tintins " (espaces non accaptés dans des noms de Tableau)
    Pour rappel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
         Dim scleLigne As String, olist As ListObject
         scleLigne = "Tintin" 'ou "Tintins"
         On Error Resume Next
         Set olist = Range(scleLigne).ListObject
         If olist Is Nothing Then MsgBox ("Tableau structuré inexistant"): Exit Sub
    End Sub
    Je retrouve cela avec les autres codes. Avec ou sans On Error Resume Next, chez moi, j’ai 2 types d’erreur (Tableau nommé Tintin présent)
    Images attachées Images attachées   

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par OrDonc Voir le message
    Bonjour Ordonc,

    Effectivement, j'ai dû modifier mes codes, j'avais omis l'indice dans la collection.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                   If .ListObjects(I).Name = "Tintin" Then Tabletrouvee = True
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       If .ListObjects(I).Name = NomDeLaTable2 Then TableTrouvee = True
    Pour PLH81 : Modifiez également votre code.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] La macro s'arrête sans message après ouverture d'un classeur avec "On Error Resume Next"
    Par Dédé6621 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 08/12/2016, 11h57
  2. [VBA Excel] On error resume next
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/03/2007, 19h20
  3. [VBA-E] On error resum next
    Par Phenx dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/09/2006, 17h27
  4. On Error Resume Next existe il en java??
    Par the_zurg dans le forum Général Java
    Réponses: 9
    Dernier message: 01/06/2006, 22h38
  5. Réponses: 2
    Dernier message: 28/04/2006, 14h10

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