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 :

VBA => Erreur en VLOOKUP non gérable [XL-2016]


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
    Inscrit en
    Août 2012
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2012
    Messages : 187
    Par défaut VBA => Erreur en VLOOKUP non gérable
    Bonjour,

    Je ne trouve pas la solution à un plantage :
    Je vais chercher une référence dans le fichier rapport (RapFichOri).
    Avec cette référence, je trouve le nom du client et du titulaire dans le fichier client et je vais les copier dans le fichier rapport.

    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
     
    For LigneCrt = 3 To RapNbMaxLigne
            Windows(RapFichOri).Activate
            CliArgRech = Format((Range(Cells(LigneCrt, 2), Cells(LigneCrt, 2))), "000000000000")
     
            Windows(CliFichOri).Activate
            NomClient = Application.VLookup(CliArgRech, Range(Cells(2, 1), Cells(CliNbMaxLigne, 3)), 2, 0)
            NomTitulaire = Application.VLookup(CliArgRech, Range(Cells(2, 1), Cells(CliNbMaxLigne, 3)), 3, 0)
     
            Windows(RapFichOri).Activate
            Range(Cells(LigneCrt, 3), Cells(LigneCrt, 3)).Value = NomClient
            Range(Cells(LigneCrt, 4), Cells(LigneCrt, 4)).Value = NomTitulaire
     
            Windows(RapFichOri).Activate
            CliArgRech = Format((Range(Cells(LigneCrt, 2), Cells(LigneCrt, 2))), "000000000000")
    Next
    Tout fonctionne normalement sauf que mon fichier client n'est pas évolutif, que de temps en temps il manque une référence et que dès lors le programme se plante.
    Il n'est apparemment pas possible de capter l'erreur qui se produit et de la traiter (en l'occurrence afficher un message et la sortie du logiciel).

    Merci à la bonne âme qui aura la solution à ce qui ne fait que mettre en lumière la limite de mes compétences.

    Par ailleurs, il me semble que ce code pourrait être écrit plus finement, donc, si vous vous sentez inspiré, faites-vous plaisir, vous ferez mon bonheur.

    Belle soirée !

    Henri

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    Par ailleurs, il me semble que ce code pourrait être écrit plus finement, donc, si vous vous sentez inspiré, faites-vous plaisir, vous ferez mon bonheur.
    Alors sans pouvoir tester car je n'ai pas toute ton organisation je te propose ce code qui évite d'afficher les différentes plages et ne devrait par se planter
    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
    Set wsr = Windows(RapFichOri)
    Set wsc = Windows(CliFichOri)
    Set wso = Windows(RapFichOri)
    For LigneCrt = 3 To RapNbMaxLigne
     
            CliArgRech = Format((Range(wsr.Cells(LigneCrt, 2), wsr.Cells(LigneCrt, 2))), "000000000000")
           ' NomClient
            wso.Cells(LigneCrt, 3).Value = Application.IfError(Application.VLookup(CliArgRech, Range(wsc.Cells(2, 1), wsc.Cells(CliNbMaxLigne, 3)), 2, 0), "")
           ' NomTitulaire
            wso.Cells(LigneCrt, 4).Value = Application.IfError(Application.VLookup(CliArgRech, Range(wsc.Cells(2, 1), wsc.Cells(CliNbMaxLigne, 3)), 3, 0), "")
     
    Next
    Set wsr = Nothing
    Set wsc = Nothing
    Set wso = Nothing
    à toi de voir si cela te satisfait

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2012
    Messages : 187
    Par défaut
    Mille mercis pour votre code.

    Malheureusement, lors de l'exécution, il y a un plantage sur l'instruction :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            CliArgRech = Format((Range(wsr.Cells(LigneCrt, 2), wsr.Cells(LigneCrt, 2))), "000000000000")
    Erreur d'exécution 438
    Propriété ou méthode non gérée par cet objet.
    Aurais-tu une idée de ce dont il s'agit ?

    Merci d'avance.

  4. #4
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Aurais-tu une idée de ce dont il s'agit ?
    Comme ceci cela devrait être plus correct


    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
    Set wsr = Windows(RapFichOri)
    Set wsc = Windows(CliFichOri)
    Set wso = Windows(RapFichOri)
    For LigneCrt = 3 To RapNbMaxLigne
     
            CliArgRech = Format(wsr.Cells(LigneCrt, 2), "000000000000")
           ' NomClient
            wso.Cells(LigneCrt, 3).Value = Application.IfError(Application.VLookup(CliArgRech, wsc.Cells(2, 1).Resize(CliNbMaxLigne, 3), 2, 0), "")
           ' NomTitulaire
            wso.Cells(LigneCrt, 4).Value = Application.IfError(Application.VLookup(CliArgRech, wsc.Cells(2, 1).Resize(CliNbMaxLigne, 3), 3, 0), "")
     
    Next
    Set wsr = Nothing
    Set wsc = Nothing
    Set wso = Nothing

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2012
    Messages : 187
    Par défaut
    Bonjour,

    Désolé mais j'obtiens la même erreur avec la nouvelle instruction.

    Puis-je faire quelque chose pour te faciliter la recherche ?

    A tout à l'heure.

    Henri

  6. #6
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    Puis-je faire quelque chose pour te faciliter la recherche ?
    En fait je ne fonctionne normalement pas avec Windows(RapFichOri) et je ne sais pas ce que tu as nommé "RapFichOri" : cela crée ton erreur.
    Il faudrait remplacer par la dénomination de la feuille concernée en codant tes noms corrects bien sûr.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wsr = Workbooks("nom classeur").Worksheets("nom feuille")
    et de même pour wsc et wso

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

Discussions similaires

  1. Erreur dev c++ non value assignement
    Par insomniak dans le forum Dev-C++
    Réponses: 12
    Dernier message: 22/09/2005, 18h12
  2. erreur sur un non filtre
    Par nico.chev dans le forum Access
    Réponses: 1
    Dernier message: 20/09/2005, 12h16
  3. Réponses: 1
    Dernier message: 19/08/2005, 12h33
  4. [Debutant][Install][VS]erreur sur fichier non trouvé.
    Par silvermoon dans le forum DirectX
    Réponses: 4
    Dernier message: 16/07/2004, 20h59
  5. [FLASH MX] Erreur : L'identifiant non sensible à ...
    Par blowdesign dans le forum Flash
    Réponses: 2
    Dernier message: 16/05/2004, 21h10

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