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 :

Passer une erreur VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Novembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Novembre 2019
    Messages : 2
    Par défaut Passer une erreur VBA
    Bonjour,

    Je fais appelle à vous car j'ai un soucis avec ma macro vba ci apres.

    La recherchev peux me gêner une erreur et bloquer la macro si ça ne renvoie pas de valeur.
    Comment continuer le then même avec l'erreur.

    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
     
    'Valeur pour Affectation
    Dim aff As String
    Dim aff_rad As String
    Dim id_aff As String
     
    If Application.VLookup(ComboBox_Affectation, Worksheets("DONNEE").Range("b:b"), 1, False) <> ComboBox_Affectation Then
    'recherche ou ecrire dans donne quantitatif
    Dim lig_aff As Long
    lig_aff = 2
     
    'si <> de liste, rechecher ligne ecriture,stockage valeur, ecriture dans onglet base
    Do While Not IsEmpty(Worksheets("DONNEE").Range("a" & lig_aff))
        lig_aff = lig_aff + 1
    Loop
     
    id_aff = lig_aff - 1
    aff = ComboBox_Affectation
    aff_rad = TextBox_Affectation_Radio
     
    Worksheets("DONNEE").Range("a" & lig_aff) = lig_aff - 1 'id
    Worksheets("DONNEE").Range("b" & lig_aff) = ComboBox_Affectation
    Worksheets("DONNEE").Range("c" & lig_aff) = TextBox_Affectation_Radio
    Worksheets("DONNEE").Range("d" & lig_aff) = lig_aff - 1 'id
    Else
     
    'si = liste, stockage des valeur
    aff = ComboBox_Affectation
    aff_rad = Application.VLookup(ComboBox_Affectation, Worksheets("DONNEE").Range("b:c"), 2, False)
    id_aff = Application.VLookup(ComboBox_Affectation, Worksheets("DONNEE").Range("b:d"), 3, False)
     
    end if
    Merci à vous

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La recherchev peux me gêner une erreur et bloquer la macro si ça ne renvoie pas de valeur.
    Comment continuer le then même avec l'erreur.
    Si la fonction ne trouve pas la valeur, elle renvoie une erreur.
    Une solution est de passer par un On Error Resume Next juste avant la ligne de recherche et effectuer le test sur la ligne qui suit et ensuite supprimer la détection d'erreur (On Error GoTo 0) juste après.

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub t()
      Const LookUpValue As String = "x003"
      Dim rngData As Range
      Dim fx As WorksheetFunction
      Dim ValueFound As String
      Set rngData = ThisWorkbook.Worksheets("db").Range("A2:M11")
      Set fx = Application.WorksheetFunction
      ' Recherche
      On Error Resume Next
      ValueFound = fx.VLookup(LookUpValue, rngData, 1, False)
      If Err Then MsgBox "Pas trouvé " & LookUpValue
      On Error GoTo 0
    End Sub
    Personnellement, si la recherche doit s'effectuer avec le VBA, je privilégierais la méthode Find de l'objet Range

    A lire éventuellement La gestion des erreurs dans Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Novembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Novembre 2019
    Messages : 2
    Par défaut
    Merci, pour ton retour.
    Je vais regarder, pour être honnête je ne connais pas la fonction find.

    bonne journée

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Tu peux aussi remplacer tes VLOOKUP par des méthodes Find dont l'absence de résultat ne provoque pas de bug et est plus simple à gérer.
    Lire ceci : https://msdn.microsoft.com/fr-fr/lib...6(v=office.15)

Discussions similaires

  1. [XL-2007] Comment passer une erreur pour chemin introuvable?
    Par jerdel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/03/2012, 10h12
  2. Compactage provoque une erreur vba?
    Par Hydex dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/06/2007, 07h55
  3. [DAO VBA] Récupérer une erreur de violation de clé
    Par Caroline1 dans le forum Access
    Réponses: 5
    Dernier message: 28/04/2006, 17h39
  4. [VBA-E] Gestion d'une erreur #N/A
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/04/2006, 20h17
  5. [VBA]Passer une variable dans une formule Excel
    Par David1974 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/01/2006, 16h52

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